gnome-scan r517 - in trunk: . doc/ref doc/ref/images lib



Author: bersace
Date: Tue Feb 26 22:27:14 2008
New Revision: 517
URL: http://svn.gnome.org/viewvc/gnome-scan?rev=517&view=rev

Log:
Rework and complete ref doc.


Added:
   trunk/doc/ref/gnome-scan-1.0-sections.txt
Removed:
   trunk/doc/ref/images/GSParamSpecFilenames.png
   trunk/doc/ref/images/GSParamSpecOutputFilename.png
   trunk/doc/ref/images/GnomeScanAcquisitionDialog.png
Modified:
   trunk/ChangeLog
   trunk/doc/ref/Makefile.am
   trunk/doc/ref/gnome-scan-1.0-docs.sgml
   trunk/doc/ref/gnome-scan-1.0.types
   trunk/lib/gnome-scan-acquisition-dialog.c
   trunk/lib/gnome-scan-backend.c
   trunk/lib/gnome-scan-dialog.c
   trunk/lib/gnome-scan-init.c
   trunk/lib/gnome-scan-init.h
   trunk/lib/gnome-scan-job.c
   trunk/lib/gnome-scan-param-specs.c
   trunk/lib/gnome-scan-param-specs.h
   trunk/lib/gnome-scan-param-widget.c
   trunk/lib/gnome-scan-param-widget.h
   trunk/lib/gnome-scan-plugin.c
   trunk/lib/gnome-scan-plugin.h
   trunk/lib/gnome-scan-preview-plugin.c
   trunk/lib/gnome-scan-preview-plugin.h
   trunk/lib/gnome-scan-settings.c
   trunk/lib/gnome-scan-sink.c
   trunk/lib/gnome-scan-utils.c
   trunk/lib/gnome-scan-utils.h
   trunk/lib/gnome-scan.h
   trunk/lib/gnome-scanner.c

Modified: trunk/doc/ref/Makefile.am
==============================================================================
--- trunk/doc/ref/Makefile.am	(original)
+++ trunk/doc/ref/Makefile.am	Tue Feb 26 22:27:14 2008
@@ -107,8 +107,8 @@
 	echo "</para>" >> $@;
 
 
-purge:
+purge: clean
 	rm -rf html xml *.stamp gallery.xml;
 	rm -rf $(DOC_MODULE).{args,hierarchy,interfaces,prerequisites,signals};
-	rm -rf $(DOC_MODULE)-{decl*,sections,undocumented,unused,overrides}.txt
+	rm -rf $(DOC_MODULE)-{decl*,undocumented,unused}.txt
 

Modified: trunk/doc/ref/gnome-scan-1.0-docs.sgml
==============================================================================
--- trunk/doc/ref/gnome-scan-1.0-docs.sgml	(original)
+++ trunk/doc/ref/gnome-scan-1.0-docs.sgml	Tue Feb 26 22:27:14 2008
@@ -11,41 +11,40 @@
   </bookinfo>
 
   <part id="core">
-    <title>Gnome Scan Core</title>
+    <title>Gnome Scan Core Reference</title>
 
-    <xi:include href="xml/gnome-scan-init.xml"/>
-      <xi:include href="xml/gnome-scan-types.xml"/>
+    <chapter id="setup">
+      <title>Using Gnome Scan</title>
+      <xi:include href="xml/gnome-scan-init.xml"/>
+      <xi:include href="xml/gnome-scan-dialog.xml"/>
+      <xi:include href="xml/gnome-scan-job.xml"/>
+      <xi:include href="xml/gnome-scan-settings.xml"/>
+    </chapter>
 
-    <chapter id="extend">
-      <title>Plugins and Modules</title>
+    <chapter id="extends">
+      <title>Extending For Application</title>
       <xi:include href="xml/gnome-scan-plugin.xml"/>
+      <xi:include href="xml/gnome-scan-sink.xml"/>
       <xi:include href="xml/gnome-scan-param-specs.xml"/>
-      <xi:include href="xml/gnome-scan-module.xml"/>
-      <xi:include href="xml/gnome-scan-module-manager.xml"/>
+      <xi:include href="xml/gnome-scan-param-widget.xml"/>
+      <xi:include href="xml/gnome-scan-preview-plugin.xml"/>
     </chapter>
   </part>
 
-  <part id="objects">
-    <title>Gnome Scan Objects</title>
+  <part id="internals">
+    <title>Gnome Scan Internals</title>
+    <xi:include href="xml/gnome-scan-types.xml"/>
+    <xi:include href="xml/gnome-scan-utils.xml"/>
 
     <chapter id="backend">
-      <title>Backend</title>
-      <xi:include href="xml/gnome-scan-job.xml"/>
-      <xi:include href="xml/gnome-scan-settings.xml"/>
+      <title>Writing Backend</title>
+      <xi:include href="xml/gnome-scan-module.xml"/>
       <xi:include href="xml/gnome-scan-backend.xml"/>
       <xi:include href="xml/gnome-scanner.xml"/>
-      <xi:include href="xml/gnome-scan-sink.xml"/>
-    </chapter>
-    <chapter id="widgets">
-      <title>Widgets</title>
-      <xi:include href="gallery.xml" />
-      <xi:include href="xml/gnome-scan-acquisition-dialog.xml"/>
-      <xi:include href="xml/gnome-scan-preview-area.xml"/>
-      <xi:include href="xml/gnome-scan-dialog.xml"/>
-      <xi:include href="xml/gnome-scan-param-widget.xml"/>
     </chapter>
   </part>
 
+
   <index id="symbols">
     <title>Index</title>
   </index>
@@ -53,4 +52,8 @@
     <title>Object Hierarchy</title>
     <xi:include href="xml/tree_index.sgml"/>
   </index>
+  <index role="gallery" id="gallery">
+    <title>Widget Gallery</title>
+    <xi:include href="gallery.xml" />
+  </index>
 </book>

Added: trunk/doc/ref/gnome-scan-1.0-sections.txt
==============================================================================
--- (empty file)
+++ trunk/doc/ref/gnome-scan-1.0-sections.txt	Tue Feb 26 22:27:14 2008
@@ -0,0 +1,551 @@
+<SECTION>
+<FILE>gnome-scan-backend</FILE>
+<TITLE>GnomeScanBackend</TITLE>
+GnomeScanBackend
+gnome_scan_backend_new
+gnome_scan_backend_probe_scanners
+gnome_scan_backend_add_scanner
+gnome_scan_backend_remove_scanner
+gnome_scan_backend_probe_done
+<SUBSECTION Standard>
+GNOME_SCAN_BACKEND
+GNOME_IS_SCAN_BACKEND
+GNOME_TYPE_SCAN_BACKEND
+gnome_scan_backend_get_type
+GNOME_SCAN_BACKEND_CLASS
+GNOME_IS_SCAN_BACKEND_CLASS
+GNOME_SCAN_BACKEND_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-enum-widget</FILE>
+GnomeScanEnumWidget
+<SUBSECTION Standard>
+GNOME_SCAN_ENUM_WIDGET
+GNOME_IS_SCAN_ENUM_WIDGET
+GNOME_TYPE_SCAN_ENUM_WIDGET
+GNOME_SCAN_ENUM_WIDGET_CLASS
+GNOME_IS_SCAN_ENUM_WIDGET_CLASS
+GNOME_SCAN_ENUM_WIDGET_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-range-widget</FILE>
+GnomeScanRangeWidget
+<SUBSECTION Standard>
+GNOME_SCAN_RANGE_WIDGET
+GNOME_IS_SCAN_RANGE_WIDGET
+GNOME_TYPE_SCAN_RANGE_WIDGET
+GNOME_SCAN_RANGE_WIDGET_CLASS
+GNOME_IS_SCAN_RANGE_WIDGET_CLASS
+GNOME_SCAN_RANGE_WIDGET_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-number-widget</FILE>
+GnomeScanNumberWidget
+<SUBSECTION Standard>
+GNOME_SCAN_NUMBER_WIDGET
+GNOME_IS_SCAN_NUMBER_WIDGET
+GNOME_TYPE_SCAN_NUMBER_WIDGET
+GNOME_SCAN_NUMBER_WIDGET_CLASS
+GNOME_IS_SCAN_NUMBER_WIDGET_CLASS
+GNOME_SCAN_NUMBER_WIDGET_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-preview-plugin-rotation</FILE>
+<TITLE>GnomeScanPreviewPluginRotation</TITLE>
+GnomeScanPreviewPluginRotation
+<SUBSECTION Standard>
+GNOME_SCAN_PREVIEW_PLUGIN_ROTATION
+GNOME_IS_SCAN_PREVIEW_PLUGIN_ROTATION
+GNOME_TYPE_SCAN_PREVIEW_PLUGIN_ROTATION
+gnome_scan_preview_plugin_rotation_get_type
+GNOME_SCAN_PREVIEW_PLUGIN_ROTATION_CLASS
+GNOME_IS_SCAN_PREVIEW_PLUGIN_ROTATION_CLASS
+GNOME_SCAN_PREVIEW_PLUGIN_ROTATION_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-preview-sink</FILE>
+<TITLE>GnomeScanPreviewSink</TITLE>
+GnomeScanPreviewSink
+gnome_scan_preview_sink_new
+gnome_scan_preview_sink_get_pixbuf
+<SUBSECTION Standard>
+GNOME_SCAN_PREVIEW_SINK
+GNOME_IS_SCAN_PREVIEW_SINK
+GNOME_TYPE_SCAN_PREVIEW_SINK
+gnome_scan_preview_sink_get_type
+GNOME_SCAN_PREVIEW_SINK_CLASS
+GNOME_IS_SCAN_PREVIEW_SINK_CLASS
+GNOME_SCAN_PREVIEW_SINK_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-page-orientation-widget</FILE>
+GnomeScanPageOrientationWidget
+<SUBSECTION Standard>
+GNOME_SCAN_PAGE_ORIENTATION_WIDGET
+GNOME_IS_SCAN_PAGE_ORIENTATION_WIDGET
+GNOME_TYPE_SCAN_PAGE_ORIENTATION_WIDGET
+GNOME_SCAN_PAGE_ORIENTATION_WIDGET_CLASS
+GNOME_IS_SCAN_PAGE_ORIENTATION_WIDGET_CLASS
+GNOME_SCAN_PAGE_ORIENTATION_WIDGET_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-module-manager</FILE>
+<TITLE>GnomeScanModuleManager</TITLE>
+GnomeScanModuleManager
+gnome_scan_module_manager_new
+gnome_scan_module_manager_query_modules
+gnome_scan_module_manager_unload_modules
+<SUBSECTION Standard>
+GNOME_SCAN_MODULE_MANAGER
+GNOME_IS_SCAN_MODULE_MANAGER
+GNOME_TYPE_SCAN_MODULE_MANAGER
+gnome_scan_module_manager_get_type
+GNOME_SCAN_MODULE_MANAGER_CLASS
+GNOME_IS_SCAN_MODULE_MANAGER_CLASS
+GNOME_SCAN_MODULE_MANAGER_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-dialog</FILE>
+<TITLE>GnomeScanDialog</TITLE>
+GnomeScanDialog
+gnome_scan_dialog_new
+gnome_scan_dialog_run
+<SUBSECTION Standard>
+GNOME_SCAN_DIALOG
+GNOME_IS_SCAN_DIALOG
+GNOME_TYPE_SCAN_DIALOG
+gnome_scan_dialog_get_type
+GNOME_SCAN_DIALOG_CLASS
+GNOME_IS_SCAN_DIALOG_CLASS
+GNOME_SCAN_DIALOG_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-module</FILE>
+GS_DEFINE_MODULE_TYPE
+<TITLE>GnomeScanModule</TITLE>
+GnomeScanModule
+gnome_scan_module_new
+<SUBSECTION Private>
+NOT_IMPLEMENTED
+<SUBSECTION Standard>
+GNOME_SCAN_MODULE
+GNOME_IS_SCAN_MODULE
+GNOME_TYPE_SCAN_MODULE
+gnome_scan_module_get_type
+GNOME_SCAN_MODULE_CLASS
+GNOME_IS_SCAN_MODULE_CLASS
+GNOME_SCAN_MODULE_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-string-widget</FILE>
+GnomeScanStringWidget
+<SUBSECTION Standard>
+GNOME_SCAN_STRING_WIDGET
+GNOME_IS_SCAN_STRING_WIDGET
+GNOME_TYPE_SCAN_STRING_WIDGET
+GNOME_SCAN_STRING_WIDGET_CLASS
+GNOME_IS_SCAN_STRING_WIDGET_CLASS
+GNOME_SCAN_STRING_WIDGET_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-settings</FILE>
+<TITLE>GnomeScanSettings</TITLE>
+GnomeScanSettings
+gnome_scan_settings_new
+gnome_scan_settings_init_value
+gnome_scan_settings_set
+gnome_scan_settings_set_transform
+gnome_scan_settings_set_double
+gnome_scan_settings_set_int
+gnome_scan_settings_set_boolean
+gnome_scan_settings_set_enum
+gnome_scan_settings_set_boxed
+gnome_scan_settings_set_object
+gnome_scan_settings_set_pointer
+gnome_scan_settings_get
+gnome_scan_settings_get_transformed
+gnome_scan_settings_get_string
+gnome_scan_settings_get_double
+gnome_scan_settings_get_int
+gnome_scan_settings_get_boolean
+gnome_scan_settings_get_enum
+gnome_scan_settings_get_boxed
+gnome_scan_settings_get_object
+gnome_scan_settings_get_pointer
+gnome_scan_settings_get_all
+<SUBSECTION Standard>
+GNOME_SCAN_SETTINGS
+GNOME_IS_SCAN_SETTINGS
+GNOME_TYPE_SCAN_SETTINGS
+gnome_scan_settings_get_type
+GNOME_SCAN_SETTINGS_CLASS
+GNOME_IS_SCAN_SETTINGS_CLASS
+GNOME_SCAN_SETTINGS_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-plugin</FILE>
+<TITLE>GnomeScanPlugin</TITLE>
+GnomeScanPlugin
+gnome_scan_plugin_params_add
+gnome_scan_plugin_params_remove
+gnome_scan_plugin_params_clear
+gnome_scan_plugin_params_changed
+gnome_scan_plugin_configure
+gnome_scan_plugin_configure_frame
+gnome_scan_plugin_start_frame
+gnome_scan_plugin_work
+gnome_scan_plugin_end_frame
+gnome_scan_plugin_end_scan
+gnome_scan_plugin_get_child_nodes
+<SUBSECTION Private>
+gnome_scan_plugin_get_name
+gnome_scan_plugin_get_params
+gnome_scan_plugin_params_get_groups
+gnome_scan_plugin_params_get_other_groups
+gnome_scan_plugin_get_param_group
+gnome_scan_plugin_get_param_groups
+gnome_scan_plugin_params_lookup
+gnome_scan_plugin_params_foreach
+<SUBSECTION Standard>
+GNOME_SCAN_PLUGIN
+GNOME_IS_SCAN_PLUGIN
+GNOME_TYPE_SCAN_PLUGIN
+gnome_scan_plugin_get_type
+GNOME_SCAN_PLUGIN_CLASS
+GNOME_IS_SCAN_PLUGIN_CLASS
+GNOME_SCAN_PLUGIN_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-boolean-widget</FILE>
+GnomeScanBooleanWidget
+<SUBSECTION Standard>
+GNOME_SCAN_BOOLEAN_WIDGET
+GNOME_IS_SCAN_BOOLEAN_WIDGET
+GNOME_TYPE_SCAN_BOOLEAN_WIDGET
+GNOME_SCAN_BOOLEAN_WIDGET_CLASS
+GNOME_IS_SCAN_BOOLEAN_WIDGET_CLASS
+GNOME_SCAN_BOOLEAN_WIDGET_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-param-widget</FILE>
+GS_DEFINE_PARAM_WIDGET
+GS_DEFINE_PARAM_WIDGET_HEADER
+<TITLE>GnomeScanParamWidget</TITLE>
+GnomeScanParamWidget
+gnome_scan_param_widget_new
+gnome_scan_param_widget_set_value
+gnome_scan_param_widget_changed
+<SUBSECTION Private>
+gnome_scan_param_widget_get_value
+gnome_scan_param_widget_get_param_spec
+gnome_scan_param_widget_shows_label
+gnome_scan_param_widget_expands
+<SUBSECTION Standard>
+GNOME_SCAN_PARAM_WIDGET
+GNOME_IS_SCAN_PARAM_WIDGET
+GNOME_TYPE_SCAN_PARAM_WIDGET
+gnome_scan_param_widget_get_type
+GNOME_SCAN_PARAM_WIDGET_CLASS
+GNOME_IS_SCAN_PARAM_WIDGET_CLASS
+GNOME_SCAN_PARAM_WIDGET_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-job</FILE>
+<TITLE>GnomeScanJob</TITLE>
+GnomeScanJob
+gnome_scan_job_new
+gnome_scan_job_set_settings
+gnome_scan_job_get_settings
+gnome_scan_job_add_processor
+gnome_scan_job_set_sink
+<SUBSECTION Private>
+gnome_scan_job_set_scanner
+gnome_scan_job_get_scanner
+gnome_scan_job_get_processors
+gnome_scan_job_get_sink
+gnome_scan_job_configure
+gnome_scan_job_run
+gnome_scan_job_run_once
+gnome_scan_job_cancel
+<SUBSECTION Standard>
+GNOME_SCAN_JOB
+GNOME_IS_SCAN_JOB
+GNOME_TYPE_SCAN_JOB
+gnome_scan_job_get_type
+GNOME_SCAN_JOB_CLASS
+GNOME_IS_SCAN_JOB_CLASS
+GNOME_SCAN_JOB_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scanner</FILE>
+GnomeScannerStatus
+GnomeScanEvent
+<TITLE>GnomeScanner</TITLE>
+GnomeScanner
+gnome_scanner_settings_changed
+gnome_scanner_set_status
+<SUBSECTION Private>
+gnome_scanner_get_icon_name
+gnome_scanner_get_status
+gnome_scanner_get_status_string
+gnome_scanner_get_output_format
+<SUBSECTION Standard>
+GNOME_SCANNER
+GNOME_IS_SCANNER
+GNOME_TYPE_SCANNER
+gnome_scanner_get_type
+GNOME_SCANNER_CLASS
+GNOME_IS_SCANNER_CLASS
+GNOME_SCANNER_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-preview-area</FILE>
+<TITLE>GnomeScanPreviewArea</TITLE>
+GnomeScanPreviewArea
+gnome_scan_preview_area_new
+gnome_scan_preview_area_set_pixbuf
+gnome_scan_preview_area_get_resolution
+gnome_scan_preview_area_get_size
+gnome_scan_preview_area_update
+gnome_scan_preview_area_select_plugin
+<SUBSECTION Standard>
+GNOME_SCAN_PREVIEW_AREA
+GNOME_IS_SCAN_PREVIEW_AREA
+GNOME_TYPE_SCAN_PREVIEW_AREA
+gnome_scan_preview_area_get_type
+GNOME_SCAN_PREVIEW_AREA_CLASS
+GNOME_IS_SCAN_PREVIEW_AREA_CLASS
+GNOME_SCAN_PREVIEW_AREA_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-param-specs</FILE>
+GS_DEFINE_PARAM
+GS_PARAM_GROUP_SCANNER_FRONT
+GS_PARAM_GROUP_FORMAT
+GS_PARAM_GROUP_SINK_FRONT
+GS_PARAM_GROUP_PREVIEW
+GS_PARAM_GROUP_HIDDEN
+
+gs_param_spec_get_group
+gs_param_spec_get_group_string
+gs_param_spec_set_group
+gs_param_spec_set_group_from_string
+gs_param_spec_set_domain
+gs_param_spec_get_domain
+gs_param_spec_set_unit
+gs_param_spec_get_unit
+gs_param_spec_set_index
+gs_param_spec_get_index
+gs_param_spec_set_widget_type
+
+gs_param_spec_boolean
+gs_param_spec_int
+gs_param_spec_double
+gs_param_spec_string
+gs_param_spec_pointer
+gs_param_spec_range
+gs_param_spec_enum
+gs_param_spec_paper_size
+gs_param_spec_page_orientation
+
+<SUBSECTION Private>
+GS_PARAM_GROUP_QUARK
+GS_PARAM_DOMAIN_QUARK
+GS_PARAM_UNIT_QUARK
+GS_PARAM_INDEX_QUARK
+GS_PARAM_WIDGET_TYPE_QUARK
+GS_PARAM_FORMATS_QUARK
+gs_group_quark
+gs_domain_quark
+gs_unit_quark
+gs_index_quark
+gs_widget_type_quark
+gs_formats_quark
+
+gs_scanner_front_quark
+gs_format_quark
+gs_sink_front_quark
+gs_preview_quark
+gs_hidden_quark
+
+gs_param_spec_get_widget_type
+gs_param_spec_cmp_index
+gs_param_spec_cmp_name
+gs_param_values_cmp
+
+GS_TYPE_PARAM_RANGE
+GSParamSpecRange
+
+GS_TYPE_PARAM_ENUM
+GS_PARAM_SPEC_ENUM
+GS_IS_PARAM_SPEC_ENUM
+GSParamSpecEnum
+gs_param_enum_get_type
+
+GS_TYPE_PARAM_PAPER_SIZE
+GS_PARAM_SPEC_PAPER_SIZE
+GS_IS_PARAM_SPEC_PAPER_SIZE
+GSParamSpecPaperSize
+gs_param_paper_size_get_type
+gs_param_paper_size_get_extent
+
+GS_TYPE_PARAM_PAGE_ORIENTATION
+GS_PARAM_SPEC_PAGE_ORIENTATION
+GS_IS_PARAM_SPEC_PAGE_ORIENTATION
+GSParamSpecPageOrientation
+gs_param_page_orientation_get_type
+<SUBSECTION Standard>
+GS_PARAM_SPEC_RANGE
+GS_IS_PARAM_SPEC_RANGE
+gs_param_range_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-preview-plugin</FILE>
+GS_DEFINE_PREVIEW_PLUGIN
+<TITLE>GnomeScanPreviewPlugin</TITLE>
+GnomeScanPreviewPlugin
+gnome_scan_preview_plugin
+gnome_scan_preview_plugin_freeze
+gnome_scan_preview_plugin_thaw
+gnome_scan_preview_plugin_changed
+gnome_scan_preview_plugin_draw_buffer
+gnome_scan_preview_plugin_destroy
+<SUBSECTION Private>
+GSPP_MAX_WATCH
+GnomeScanPreviewPluginTypeInfo
+gnome_scan_preview_plugin_type_register_static
+<SUBSECTION Standard>
+GNOME_SCAN_PREVIEW_PLUGIN
+GNOME_IS_SCAN_PREVIEW_PLUGIN
+GNOME_TYPE_SCAN_PREVIEW_PLUGIN
+gnome_scan_preview_plugin_get_type
+GNOME_SCAN_PREVIEW_PLUGIN_CLASS
+GNOME_IS_SCAN_PREVIEW_PLUGIN_CLASS
+GNOME_SCAN_PREVIEW_PLUGIN_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-paper-size-widget</FILE>
+GnomeScanPaperSizeWidget
+<SUBSECTION Standard>
+GNOME_SCAN_PAPER_SIZE_WIDGET
+GNOME_IS_SCAN_PAPER_SIZE_WIDGET
+GNOME_TYPE_SCAN_PAPER_SIZE_WIDGET
+GNOME_SCAN_PAPER_SIZE_WIDGET_CLASS
+GNOME_IS_SCAN_PAPER_SIZE_WIDGET_CLASS
+GNOME_SCAN_PAPER_SIZE_WIDGET_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-sink</FILE>
+<TITLE>GnomeScanSink</TITLE>
+GnomeScanSink
+<SUBSECTION Standard>
+GNOME_SCAN_SINK
+GNOME_IS_SCAN_SINK
+GNOME_TYPE_SCAN_SINK
+gnome_scan_sink_get_type
+GNOME_SCAN_SINK_CLASS
+GNOME_IS_SCAN_SINK_CLASS
+GNOME_SCAN_SINK_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-processor-common</FILE>
+<TITLE>GnomeScanProcessorCommon</TITLE>
+GnomeScanProcessorCommon
+gnome_scan_processor_common_new
+<SUBSECTION Standard>
+GNOME_SCAN_PROCESSOR_COMMON
+GNOME_IS_SCAN_PROCESSOR_COMMON
+GNOME_TYPE_SCAN_PROCESSOR_COMMON
+gnome_scan_processor_common_get_type
+GNOME_SCAN_PROCESSOR_COMMON_CLASS
+GNOME_IS_SCAN_PROCESSOR_COMMON_CLASS
+GNOME_SCAN_PROCESSOR_COMMON_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-acquisition-dialog</FILE>
+<TITLE>GnomeScanAcquisitionDialog</TITLE>
+GnomeScanAcquisitionDialog
+gnome_scan_acquisition_dialog_new
+gnome_scan_acquisition_dialog_run
+<SUBSECTION Standard>
+GNOME_SCAN_ACQUISITION_DIALOG
+GNOME_IS_SCAN_ACQUISITION_DIALOG
+GNOME_TYPE_SCAN_ACQUISITION_DIALOG
+gnome_scan_acquisition_dialog_get_type
+GNOME_SCAN_ACQUISITION_DIALOG_CLASS
+GNOME_IS_SCAN_ACQUISITION_DIALOG_CLASS
+GNOME_SCAN_ACQUISITION_DIALOG_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-types</FILE>
+<SUBSECTION Standard>
+GNOME_TYPE_SCANNER_STATUS
+GNOME_TYPE_SCAN_UNIT
+gnome_scanner_status_get_type
+gs_param_unit_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-init</FILE>
+gnome_scan_init
+gnome_scan_exit
+<SUBSECTION Standard>
+GS_STOCK_SCAN
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-preview-plugin-area</FILE>
+GNOME_TYPE_SCAN_PREVIEW_PLUGIN_AREA
+GNOME_SCAN_PREVIEW_PLUGIN_AREA
+GnomeScanPreviewPluginArea
+gnome_scan_preview_plugin_area_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan</FILE>
+</SECTION>
+
+<SECTION>
+<FILE>head-comment</FILE>
+</SECTION>
+
+<SECTION>
+<FILE>gnome-scan-utils</FILE>
+GS_DEFINE_QUARK
+gnome_scan_format_new
+GnomeScanFormat
+GnomeScanUnit
+<SUBSECTION Private>
+MM_PER_INCH
+gs_convert
+gs_convert_to_mm
+gs_convert_from_mm
+gs_rectangle_convert
+gs_rectangle_convert_to_mm
+gs_rectangle_convert_from_mm
+</SECTION>
+

Modified: trunk/doc/ref/gnome-scan-1.0.types
==============================================================================
--- trunk/doc/ref/gnome-scan-1.0.types	(original)
+++ trunk/doc/ref/gnome-scan-1.0.types	Tue Feb 26 22:27:14 2008
@@ -1,12 +1,17 @@
+gnome_scan_backend_get_type
+gnome_scan_module_get_type
+gnome_scan_module_manager_get_type
 gnome_scan_settings_get_type
 gnome_scan_plugin_get_type
 gnome_scanner_get_type
 gnome_scan_sink_get_type
-gnome_scan_backend_get_type
+gnome_scan_preview_sink_get_type
+gnome_scan_processor_common_get_type
 gnome_scan_job_get_type
 gnome_scan_acquisition_dialog_get_type
 gnome_scan_preview_area_get_type
 gnome_scan_dialog_get_type
 gnome_scan_param_widget_get_type
-gnome_scan_module_get_type
-gnome_scan_module_manager_get_type
+gnome_scan_preview_plugin_get_type
+gnome_scan_preview_plugin_rotation_get_type
+gnome_scan_preview_plugin_area_get_type

Modified: trunk/lib/gnome-scan-acquisition-dialog.c
==============================================================================
--- trunk/lib/gnome-scan-acquisition-dialog.c	(original)
+++ trunk/lib/gnome-scan-acquisition-dialog.c	Tue Feb 26 22:27:14 2008
@@ -22,6 +22,7 @@
 /**
  * SECTION: gnome-scan-acquisition-dialog
  * @short_description: Give the user the acquisition control
+ * @include: gnome-scan.h
  *
  * The acquisition process might be long, the
  * #GnomeScanAcquisitionDialog primarily shows a progress bar and of

Modified: trunk/lib/gnome-scan-backend.c
==============================================================================
--- trunk/lib/gnome-scan-backend.c	(original)
+++ trunk/lib/gnome-scan-backend.c	Tue Feb 26 22:27:14 2008
@@ -241,7 +241,7 @@
  * gnome_scan_backend_probe_done:
  * @backend: a #GnomeScanBackend
  * 
- * Trigger #GnomeScanBackend::probe-done signal. Use by child class.
+ * Trigger #GnomeScanBackend::probe-done signal. Used by child class.
  **/
 void
 gnome_scan_backend_probe_done (GnomeScanBackend *backend)

Modified: trunk/lib/gnome-scan-dialog.c
==============================================================================
--- trunk/lib/gnome-scan-dialog.c	(original)
+++ trunk/lib/gnome-scan-dialog.c	Tue Feb 26 22:27:14 2008
@@ -22,6 +22,7 @@
 /**
  * SECTION: gnome-scan-dialog
  * @short_description: Scan configuration dialog
+ * @include: gnome-scan.h
  *
  * The goal of the #GnomeScanDialog is to allow the user to configure
  * a #GnomeScanJob, and trigger the execution of this job by running a

Modified: trunk/lib/gnome-scan-init.c
==============================================================================
--- trunk/lib/gnome-scan-init.c	(original)
+++ trunk/lib/gnome-scan-init.c	Tue Feb 26 22:27:14 2008
@@ -19,8 +19,9 @@
 
 /**
  * SECTION: gnome-scan-init
- * @title: Init and loading
+ * @title:	Init and loading
  * @short_description: Module loading and various registration
+ * @include:	gnome-scan.h
  */
 
 #ifdef	HAVE_CONFIG_H
@@ -37,11 +38,11 @@
 static GtkIconFactory *factory = NULL;
 
 static GtkStockItem items[] = {
-  { GS_STOCK_SCAN,
-    N_("_Scan"),
-    0, /* modifier */
-    0, /* keyval */
-    GETTEXT_PACKAGE }
+	{ GS_STOCK_SCAN,
+	  N_("_Scan"),
+	  0, /* modifier */
+	  0, /* keyval */
+	  GETTEXT_PACKAGE }
 };
 
 /**
@@ -56,65 +57,73 @@
 void
 gnome_scan_init (gint *argc, gchar ***argv)
 {
-  g_debug ("Initializing %s for %s (%s)",
-	   PACKAGE_STRING,
-	   g_get_application_name(),
-	   g_get_prgname());
-  gchar *path;
-  guint i, n_items;
-  n_items = G_N_ELEMENTS (items);
-  GtkIconSet *set;
-  GtkIconSource *source;
-  gchar* filename;
-
-  gegl_init (argc, argv);
-
-  /* load modules */
-  path = g_strjoin (G_SEARCHPATH_SEPARATOR_S,
-		    MODULE_DIR, "modules", "../modules", NULL);
-
-  module_manager = gnome_scan_module_manager_new (path);
-  gnome_scan_module_manager_query_modules (module_manager);
-
-  /* init i18n */
-  bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
-  bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-
-  /* add stock items */
-  gtk_stock_add_static (items, n_items);
-
-  factory = gtk_icon_factory_new ();
-  for (i = 0; i < n_items; i++) {
-    set = gtk_icon_set_new ();
-    filename = g_build_filename (ICON_DIR,
-				 "scalable",
-				 "actions",
-				 g_strconcat (items[i].stock_id, ".svg", NULL),
-				 NULL);
-    source = gtk_icon_source_new ();
-    gtk_icon_source_set_icon_name (source, items[i].stock_id);
-/*     gtk_icon_source_set_filename (source, filename); */
-    gtk_icon_source_set_direction_wildcarded (source, TRUE);
-    gtk_icon_source_set_size_wildcarded (source, TRUE);
-    gtk_icon_source_set_state_wildcarded (source, TRUE);
-    gtk_icon_set_add_source (set, source);
-    gtk_icon_source_free (source);
-    gtk_icon_factory_add (factory,
-			  items[i].stock_id,
-			  set);
-    gtk_icon_set_unref (set);
-  }
-  gtk_icon_factory_add_default (factory);
+	g_debug ("Initializing %s for %s (%s)",
+		 PACKAGE_STRING,
+		 g_get_application_name(),
+		 g_get_prgname());
+	gchar *path;
+	guint i, n_items;
+	n_items = G_N_ELEMENTS (items);
+	GtkIconSet *set;
+	GtkIconSource *source;
+	gchar* filename;
+
+	gegl_init (argc, argv);
+
+	/* load modules */
+	path = g_strjoin (G_SEARCHPATH_SEPARATOR_S,
+			  MODULE_DIR, "modules", "../modules", NULL);
+
+	module_manager = gnome_scan_module_manager_new (path);
+	gnome_scan_module_manager_query_modules (module_manager);
+
+	/* init i18n */
+	bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
+	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+
+	/* add stock items */
+	gtk_stock_add_static (items, n_items);
+
+	factory = gtk_icon_factory_new ();
+	for (i = 0; i < n_items; i++) {
+		set = gtk_icon_set_new ();
+		filename = g_build_filename (ICON_DIR,
+					     "scalable",
+					     "actions",
+					     g_strconcat (items[i].stock_id,
+							  ".svg", NULL),
+					     NULL);
+		source = gtk_icon_source_new ();
+		gtk_icon_source_set_icon_name (source, items[i].stock_id);
+		gtk_icon_source_set_direction_wildcarded (source, TRUE);
+		gtk_icon_source_set_size_wildcarded (source, TRUE);
+		gtk_icon_source_set_state_wildcarded (source, TRUE);
+		gtk_icon_set_add_source (set, source);
+		gtk_icon_source_free (source);
+		gtk_icon_factory_add (factory,
+				      items[i].stock_id,
+				      set);
+		gtk_icon_set_unref (set);
+	}
+	gtk_icon_factory_add_default (factory);
 
-  gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (),
-				     ICON_DIR);
+	gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (),
+					   ICON_DIR);
 }
 
+/**
+ * gnome_scan_exit:
+ * 
+ * This function should be called once you're finished with gnome
+ * scan. It will unload modules, remove stock icons, exit
+ * dependencies, etc.
+ **/
 void
-gnome_scan_exit (void)
+gnome_scan_exit ()
 {
-  gtk_icon_factory_remove_default (factory);
-  g_object_unref (factory);
-  gegl_exit ();
-  gnome_scan_module_manager_unload_modules (module_manager);
+	gtk_icon_factory_remove_default (factory);
+	g_object_unref (factory);
+	gegl_exit ();
+	gnome_scan_module_manager_unload_modules (module_manager);
 }
+

Modified: trunk/lib/gnome-scan-init.h
==============================================================================
--- trunk/lib/gnome-scan-init.h	(original)
+++ trunk/lib/gnome-scan-init.h	Tue Feb 26 22:27:14 2008
@@ -21,6 +21,9 @@
 
 #include <glib-object.h>
 
+/**
+ * Stock item for scan action.
+ **/
 #define	GS_STOCK_SCAN	"scan"
 
 G_BEGIN_DECLS

Modified: trunk/lib/gnome-scan-job.c
==============================================================================
--- trunk/lib/gnome-scan-job.c	(original)
+++ trunk/lib/gnome-scan-job.c	Tue Feb 26 22:27:14 2008
@@ -295,7 +295,11 @@
 }
 
 /**
+ * gnome_scan_job_add_processor:
+ * @job:		a #GnomeScanJob
+ * @processor:	a #GnomeScanPlugin
  *
+ * Add @processor as plugin for building the pipeline.
  **/
 void
 gnome_scan_job_add_processor (GnomeScanJob *job,
@@ -305,6 +309,12 @@
 	priv->processors = g_slist_append(priv->processors, processor);
 }
 
+/**
+ * gnome_scan_job_get_processors:
+ * @job:	a #GnomeScanJob
+ *
+ * Returns: the list of processors
+ */
 GSList*
 gnome_scan_job_get_processors (GnomeScanJob *job)
 {
@@ -344,6 +354,14 @@
 	return GET_PRIVATE (job)->sink;
 }
 
+/**
+ * gnome_scan_job_configure:
+ * @job: a #GnomeScanJob
+ *
+ * Must be called before running @job. This will ask @job plugins to
+ * read their settings from :settings in order to bear ready for
+ * processing images.
+ **/
 void
 gnome_scan_job_configure (GnomeScanJob *job)
 {
@@ -430,7 +448,7 @@
  * you should never use this function directly and use
  * #GnomeScanAcquisitionDialog instead.
  *
- * See: #GnomeScanAcquisitionDialog or g_thread_create()
+ * See: gnome_scan_job_run_once(), #GnomeScanAcquisitionDialog or g_thread_create()
  **/
 void
 gnome_scan_job_run (GnomeScanJob *job)
@@ -453,6 +471,13 @@
 	job->done		= TRUE;
 }
 
+/**
+ * gnome_scan_job_run_once:
+ * @job:	a #GnomeScanJob
+ *
+ * Acquire one image and process it, updated job progress, stage,
+ * etc. Can be stop at any time using gnome_scan_job_cancel().
+ **/
 gboolean
 gnome_scan_job_run_once	(GnomeScanJob *job)
 {
@@ -530,7 +555,8 @@
  * gnome_scan_job_cancel:
  * @job: a running #GnomeScanJob
  * 
- * Ask the job to stop.
+ * Ask the job to stop. The function returns immediatly, however the
+ * job will actually stop as soon as possible.
  **/
 void
 gnome_scan_job_cancel (GnomeScanJob *job)

Modified: trunk/lib/gnome-scan-param-specs.c
==============================================================================
--- trunk/lib/gnome-scan-param-specs.c	(original)
+++ trunk/lib/gnome-scan-param-specs.c	Tue Feb 26 22:27:14 2008
@@ -23,6 +23,7 @@
  * SECTION: gnome-scan-param-specs
  * @title:	Parameter Specification
  * @short_description:	Custom plugin parameter type
+ * @include:	gnome-scan.h
  *
  * Instead of using a all-in-one option object (like in Gnome Scan
  * 0.4), Gnome Scan now use regular #GParamSpecs. Gnome Scan
@@ -35,6 +36,12 @@
  * Also, #GSParamSpecs are much more high-level than it's parent
  * #GParamSpec in order to build complex param widgets (range, area,
  * paper-size, â).
+ *
+ * Current implementation makes a heavy use of
+ * g_param_spec_set_qdata(), because #GParamSpec is a shallow
+ * type. Future implementation might break thing for either creating
+ * its own #GSParamSpec fundamental type or simply using a common
+ * struct right after the @parent_instance field.
  **/
 
 #include <glib/gi18n.h>
@@ -66,7 +73,21 @@
 
 /* Common */
 
-GnomeScanFormat* gnome_scan_format_new (gchar *name, gchar *domain, gchar *description, gchar **mime_types, gchar **extensions)
+/**
+ * gnome_scan_format_new:
+ * @name:	format name
+ * @domain:	translation domain
+ * @description:description
+ * @mime_types:	list of mime types for this format
+ * @extensions:	list of suffixes for file of this format.
+ *
+ * Returns: a new #GnomeScanFormat
+ **/
+GnomeScanFormat* gnome_scan_format_new (gchar *name,
+					gchar *domain,
+					gchar *description,
+					gchar **mime_types,
+					gchar **extensions)
 {
   GnomeScanFormat *format = g_new0 (GnomeScanFormat, 1);
   format->name		= name;
@@ -92,12 +113,28 @@
   return (GQuark) g_param_spec_get_qdata (spec, GS_PARAM_GROUP_QUARK);
 }
 
+/**
+ * gs_param_spec_get_group_string:
+ * @spec: The #GSParamSpec
+ * 
+ * Retrieve the @spec group string. Since the @group is not store in a
+ * struct, but using qdata, just cast @spec to #GParamSpec. The string
+ * is not translated.
+ *
+ * See: gs_param_spec_get_group()
+ * Returns: @spec group's quark
+ **/
 const gchar*
 gs_param_spec_get_group_string (GParamSpec *spec)
 {
   return g_quark_to_string (gs_param_spec_get_group (spec));
 }
 
+/**
+ * gs_param_spec_set_group:
+ * @spec:	a #GSParamSpec
+ * @group:	new @spec group's #GQuark.
+ **/
 void
 gs_param_spec_set_group (GParamSpec *spec, GQuark group)
 {
@@ -105,6 +142,11 @@
   g_param_spec_set_qdata (spec, GS_PARAM_GROUP_QUARK, (gpointer) group);
 }
 
+/**
+ * gs_param_spec_set_group_from_string:
+ * @spec:	a #GSParamSpec
+ * @group:	new @spec group name
+ **/
 void
 gs_param_spec_set_group_from_string (GParamSpec *spec, const gchar *group)
 {
@@ -112,36 +154,72 @@
 }
 
 
+/**
+ * gs_param_spec_set_domain:
+ * @spec:	a #GSParamSpec
+ * @domain:	@domain for translating @spec @nick and @blurb
+ *
+ **/
 void
-gs_param_spec_set_domain 			(GParamSpec *spec, const gchar *domain)
+gs_param_spec_set_domain (GParamSpec *spec, const gchar *domain)
 {
   g_param_spec_set_qdata (spec, GS_PARAM_DOMAIN_QUARK, (gpointer) domain);
 }
 
+/**
+ * gs_param_spec_get_domain:
+ * @spec:	a #GSParamSpec
+ *
+ **/
 const gchar*
-gs_param_spec_get_domain			(GParamSpec *spec)
+gs_param_spec_get_domain (GParamSpec *spec)
 {
   return g_param_spec_get_qdata (spec, GS_PARAM_DOMAIN_QUARK);
 }
 
+/**
+ * gs_param_spec_set_unit:
+ * @spec:	a #GSParamSpec
+ * @unit:	#GnomeScanUnit fo @spec
+ *
+ * Parameter unit is specified for UI, but can also be need for
+ * e.g. length of scan ROI where unit translation might occur.
+ **/
 void
 gs_param_spec_set_unit 				(GParamSpec *spec, GnomeScanUnit unit)
 {
   g_param_spec_set_qdata (spec, GS_PARAM_UNIT_QUARK, (gpointer) unit);
 }
 
+/**
+ * gs_param_spec_get_unit:
+ * @spec:	a #GSParamSpec
+ *
+ * Returns: a #GnomeScanUnit
+ **/
 GnomeScanUnit
 gs_param_spec_get_unit				(GParamSpec *spec)
 {
   return (GnomeScanUnit) g_param_spec_get_qdata (spec, GS_PARAM_UNIT_QUARK);
 }
 
+/**
+ * gs_param_spec_set_index:
+ * @spec:	a #GSParamSpec
+ * @index:	new @spec'index 
+ **/
 void
 gs_param_spec_set_index (GParamSpec *spec, guint index)
 {
   g_param_spec_set_qdata (spec, GS_PARAM_INDEX_QUARK, (gpointer) index);
 }
 
+/**
+ * gs_param_spec_get_index:
+ * @spec:	a #GSParamSpec
+ *
+ * Returns:	an integer.
+ **/
 guint
 gs_param_spec_get_index (GParamSpec *spec)
 {
@@ -150,30 +228,72 @@
 
 
 
+/**
+ * gs_param_spec_set_widget_type:
+ * @spec:	a #GSParamSpec
+ * @type:	a widget #GType
+ *
+ * This part is the only bound from backend to frontend. It might be
+ * removed later. The idea is to have widget per param, not per type.
+ **/
 void
 gs_param_spec_set_widget_type (GParamSpec *spec,  GType type)
 {
   g_param_spec_set_qdata (spec, GS_PARAM_WIDGET_TYPE_QUARK, (gpointer) type);
 }
 
+/**
+ * gs_param_spec_get_widget_type:
+ * @spec:	a #GSParamSpec
+ *
+ * Returns:	a #GType
+ **/
 GType
 gs_param_spec_get_widget_type (GParamSpec *spec)
 {
   return (GType) g_param_spec_get_qdata (spec, GS_PARAM_WIDGET_TYPE_QUARK);
 }
 
+/**
+ * gs_param_spec_cmp_index:
+ * @a:	a #GSParamSpec
+ * @b:	another #GSParamSpec
+ *
+ * Compare two #GSParamSpec by index.
+ *
+ * Returns:	an integer nagtive if a is previous to b else positive.
+ **/
 gint
 gs_param_spec_cmp_index (GParamSpec*a, GParamSpec *b)
 {
   return gs_param_spec_get_index (a) - gs_param_spec_get_index (b);
 }
 
+/**
+ * gs_param_spec_cmp_name:
+ * @a:	a #GSParamSpec
+ * @b:	another #GSParamSpec
+ *
+ * Compare two #GSParamSpec by name.
+ *
+ * Returns:	a nagtive integer if a is previous to b else a positive integer.
+ **/
 gint
 gs_param_spec_cmp_name (GParamSpec*a, GParamSpec *b)
 {
   return g_ascii_strcasecmp (g_param_spec_get_name (a), g_param_spec_get_name (b));
 }
 
+/**
+ * gs_param_values_cmp:
+ * @pspec:	a #GSParamSpec
+ * @a:		a #GSParamSpec
+ * @b:		another #GSParamSpec
+ *
+ * Compare two value of type determined by @pspec.
+ *
+ * Returns:	a negative integer if a < b, else a positive integer.
+ **/
 gint
 gs_param_values_cmp (GParamSpec *pspec, GValue *a, GValue *b)
 {
@@ -183,7 +303,21 @@
 }
 
 
-
+/**
+ * gs_param_spec_boolean:
+ * @name:		param name
+ * @nick:		param nickname
+ * @blurb:		description of the parameter
+ * @group:		param group quark
+ * @default_value:	default value
+ * @flags:		Flags
+ *
+ * Create a new #GSParamSpec of for boolean value. @name is for use
+ * internally (e.g. gconf key) while nick and @blurb should be marked
+ * for translation.
+ *
+ * Returns:	a new #GSParamSpec
+ **/
 GParamSpec*
 gs_param_spec_boolean (const gchar *name,
 		       const gchar *nick,
@@ -199,6 +333,23 @@
   return spec;
 }
 
+/**
+ * gs_param_spec_int:
+ * @name:		param name
+ * @nick:		param nickname
+ * @blurb:		description of the parameter
+ * @group:		param group quark
+ * @minimum:		minimum value
+ * @maximum:		maximum value
+ * @default_value:	default value
+ * @flags:		Flags
+ *
+ * Create a new #GSParamSpec of for integer value. @name is for use
+ * internally (e.g. gconf key) while nick and @blurb should be marked
+ * for translation.
+ *
+ * Returns:	a new #GSParamSpec
+ **/
 GParamSpec*
 gs_param_spec_int (const gchar *name,
 		   const gchar *nick,
@@ -217,6 +368,23 @@
   return spec;
 }
 
+/**
+ * gs_param_spec_double:
+ * @name:		param name
+ * @nick:		param nickname
+ * @blurb:		description of the parameter
+ * @group:		param group quark
+ * @minimum:		minimum value
+ * @maximum:		maximum value
+ * @default_value:	default value
+ * @flags:		Flags
+ *
+ * Create a new #GSParamSpec of for double value. @name is for use
+ * internally (e.g. gconf key) while nick and @blurb should be marked
+ * for translation.
+ *
+ * Returns:	a new #GSParamSpec
+ **/
 GParamSpec*
 gs_param_spec_double (const gchar *name,
 		      const gchar *nick,
@@ -235,6 +403,21 @@
   return spec;
 }
 
+/**
+ * gs_param_spec_string:
+ * @name:		param name
+ * @nick:		param nickname
+ * @blurb:		description of the parameter
+ * @group:		param group quark
+ * @default_value:	default value
+ * @flags:		Flags
+ *
+ * Create a new #GSParamSpec of for string value. @name is for use
+ * internally (e.g. gconf key) while nick and @blurb should be marked
+ * for translation.
+ *
+ * Returns:	a new #GSParamSpec
+ **/
 GParamSpec*
 gs_param_spec_string (const gchar *name,
 		      const gchar *nick,
@@ -250,6 +433,24 @@
   return spec;
 }
 
+/**
+ * gs_param_spec_pointer:
+ * @name:		param name
+ * @nick:		param nickname
+ * @blurb:		description of the parameter
+ * @group:		param group quark
+ * @widget:		widget type
+ * @flags:		Flags
+ *
+ * Create a new #GSParamSpec of for boolean value. @name is for use
+ * internally (e.g. gconf key) while nick and @blurb should be marked
+ * for translation.
+ *
+ * Other #GSParamSpec have predefined widget type. Pointer spec allow
+ * to store alsmost everything and thus needs specific widget type.
+ *
+ * Returns:	a new #GSParamSpec
+ **/
 GParamSpec*
 gs_param_spec_pointer (const gchar *name,
 		       const gchar *nick,
@@ -270,13 +471,18 @@
 
 /**
  * gs_param_spec_range:
- * @name: spec name
- * @nick: spec nick
- * @blurb: spec blurb
- * @group: The quark of the group the param belong to
- * @flags: Param flags.
+ * @name:	spec name
+ * @nick:	spec nick
+ * @blurb:	spec blurb
+ * @group:	The quark of the group the param belong to
+ * @minimum:	value of the lowest allowed value
+ * @maximum:	value of the highed allowed value
+ * @step:	lenght between two values
+ * @flags:	Param flags.
  * 
- * Create a new #GSParamSpecRange .
+ * Create a new #GSParamSpecRange. This spec has been designed to
+ * store both integer and float value. Ensure all #GValue have the
+ * same type.
  * 
  * Returns: the new #GSParamSpecRange
  **/
@@ -359,13 +565,16 @@
 
 /**
  * gs_param_spec_enum:
- * @name: spec name
- * @nick: spec nick
- * @blurb: spec blurb
- * @group: The quark of the group the param belong to
- * @flags: Param flags.
+ * @name:		spec name
+ * @nick:		spec nick
+ * @blurb:		spec blurb
+ * @group: 		The quark of the group the param belong to
+ * @values:		Allowed values
+ * @default_value:	default value;
+ * @flags:		Param flags.
  * 
- * Create a new #GSParamSpecEnum .
+ * Create a new #GSParamSpecEnum . This parameter spec has been
+ * designed to handle integer, float and string value.
  * 
  * Returns: the new #GSParamSpecEnum
  **/
@@ -424,6 +633,22 @@
 /* PAPER_SIZE */
 GS_DEFINE_PARAM (gs, GS, paper_size, PaperSize, GTK_TYPE_PAPER_SIZE);
 
+/**
+ * gs_param_spec_paper_size:
+ * @name:		param name
+ * @nick:		param nickname
+ * @blurb:		description of the parameter
+ * @group:		param group quark
+ * @default_ps:		default paper size
+ * @enumeration:	available paper size
+ * @flags:		Flags
+ *
+ * Create a new #GSParamSpec of for #GtkPaperSize value. @name is for use
+ * internally (e.g. gconf key) while nick and @blurb should be marked
+ * for translation.
+ *
+ * Returns:	a new #GSParamSpec
+ **/
 GParamSpec*
 gs_param_spec_paper_size (const gchar *name,
 			  const gchar *nick,
@@ -489,6 +714,21 @@
 /* PAGE_ORIENTATION */
 GS_DEFINE_PARAM (gs, GS, page_orientation, PageOrientation, GTK_TYPE_PAGE_ORIENTATION);
 
+/**
+ * gs_param_spec_page_orientation:
+ * @name:		param name
+ * @nick:		param nickname
+ * @blurb:		description of the parameter
+ * @group:		param group quark
+ * @default_value:	default value
+ * @flags:		Flags
+ *
+ * Create a new #GSParamSpec of for #GtkPageOrientation value. @name is for use
+ * internally (e.g. gconf key) while nick and @blurb should be marked
+ * for translation.
+ *
+ * Returns:	a new #GSParamSpec
+ **/
 GParamSpec*
 gs_param_spec_page_orientation (const gchar *name,
 				const gchar *nick,

Modified: trunk/lib/gnome-scan-param-specs.h
==============================================================================
--- trunk/lib/gnome-scan-param-specs.h	(original)
+++ trunk/lib/gnome-scan-param-specs.h	Tue Feb 26 22:27:14 2008
@@ -101,10 +101,41 @@
 GQuark gs_widget_type_quark		(void)	G_GNUC_CONST;
 GQuark gs_formats_quark			(void)	G_GNUC_CONST;
 
+/**
+ * GS_PARAM_GROUP_SCANNER_FRONT:
+ *
+ * Scanner option group for not every user
+ **/
 #define	GS_PARAM_GROUP_SCANNER_FRONT	(gs_scanner_front_quark ())
+
+/**
+ * GS_PARAM_GROUP_SCANNER_FORMAT:
+ *
+ * Scanner option group for selecting paper format (paper size,
+ * orientation, etc.)
+ **/
 #define	GS_PARAM_GROUP_FORMAT			(gs_format_quark ())
+
+/**
+ * GS_PARAM_GROUP_SCANNER_FRONT:
+ *
+ * Scanner option group for not every user
+ **/
 #define	GS_PARAM_GROUP_SINK_FRONT		(gs_sink_front_quark ())
+
+/**
+ * GS_PARAM_GROUP_PREVIEW:
+ *
+ * Scanner option group for preview page. Option that's needs instant
+ * view of the effect of selecting them
+ **/
 #define	GS_PARAM_GROUP_PREVIEW			(gs_preview_quark())
+
+/**
+ * GS_PARAM_GROUP_HIDDEN:
+ *
+ * Scanner option group not shown to user
+ **/
 #define	GS_PARAM_GROUP_HIDDEN			(gs_hidden_quark())
 
 GQuark gs_scanner_front_quark	(void)	G_GNUC_CONST;

Modified: trunk/lib/gnome-scan-param-widget.c
==============================================================================
--- trunk/lib/gnome-scan-param-widget.c	(original)
+++ trunk/lib/gnome-scan-param-widget.c	Tue Feb 26 22:27:14 2008
@@ -269,12 +269,14 @@
 
 /**
  * gnome_scan_param_widget_new:
- * @pspec: a #GParamSpec
+ * @settings:	The #GnomeScanSettings where to store values
+ * @plugin:	The #GnomeScanPlugin to configure
+ * @pspec:	The #GParamSpec to be managed
+ * 
+ * Build a new #GnomeScanParamWidget from @pspec
+ * widget_type. Initialize settings with @pspec default value if
+ * needed.
  * 
- * Convenient constructor that retrieve default value from @pspec and
- * pass it to gnome_scan_param_widget_new_with_value().
- * 
- * See: gnome_scan_param_widget_new_with_value()
  * Returns: The new #GnomeScanParamWidget
  **/
 GtkWidget*
@@ -379,20 +381,29 @@
 }
 
 
+/**
+ * gnome_scan_param_widget_changed:
+ * @widget:	a #GnomeScanParamWidget
+ *
+ * Trigger changed signal, as if user have touched the GUI.
+ **/
 void
-gnome_scan_param_widget_changed (GnomeScanParamWidget *gspw)
+gnome_scan_param_widget_changed (GnomeScanParamWidget *widget)
 {
-	GnomeScanParamWidgetPrivate *priv = GET_PRIVATE (gspw);
+	GnomeScanParamWidgetPrivate *priv = GET_PRIVATE (widget);
 	if (priv->propagate) {
-		gnome_scan_settings_set (gspw->settings,
-								 g_param_spec_get_name (gspw->pspec),
-								 gspw->value);
-		gnome_scan_plugin_configure (gspw->plugin, gspw->settings);
+		gnome_scan_settings_set (widget->settings,
+								 g_param_spec_get_name (widget->pspec),
+								 widget->value);
+		gnome_scan_plugin_configure (widget->plugin, widget->settings);
 	}
 }
 
+/* INTERNAL */
 void
-gspw_settings_changed (GnomeScanSettings *settings, gchar *key, GnomeScanParamWidget *gspw)
+gspw_settings_changed (GnomeScanSettings *settings,
+					   gchar *key,
+					   GnomeScanParamWidget *gspw)
 {
 	GnomeScanParamWidgetClass *klass = GNOME_SCAN_PARAM_WIDGET_GET_CLASS (gspw);
 	GnomeScanParamWidgetPrivate *priv = GET_PRIVATE (gspw);

Modified: trunk/lib/gnome-scan-param-widget.h
==============================================================================
--- trunk/lib/gnome-scan-param-widget.h	(original)
+++ trunk/lib/gnome-scan-param-widget.h	Tue Feb 26 22:27:14 2008
@@ -36,6 +36,14 @@
 #define GNOME_IS_SCAN_PARAM_WIDGET_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), GNOME_TYPE_SCAN_PARAM_WIDGET))
 #define GNOME_SCAN_PARAM_WIDGET_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), GNOME_TYPE_SCAN_PARAM_WIDGET, GnomeScanParamWidgetClass))
 
+/**
+ * GS_DEFINE_PARAM_WIDGET:
+ * @TypeName:   class name
+ * @type_name:  function prefix
+ *
+ * Generate all boiler plate code for creating a new #GnomeScanParamWidget
+ * derived class.
+ **/
 #define GS_DEFINE_PARAM_WIDGET(TypeName, type_name)			\
   G_DEFINE_TYPE(TypeName, type_name, GNOME_TYPE_SCAN_PARAM_WIDGET)	\
 									\
@@ -51,7 +59,15 @@
     parent_class->set     = type_name##_set;				\
     object_class->finalize = type_name##_finalize;			\
   }
-    
+
+/**
+ * GS_DEFINE_PARAM_WIDGET_HEADER:
+ * @TypeName:   class name
+ * @type_name:  function prefix
+ *
+ * Generate all boiler plate header declaration for creating a new
+ * #GnomeScanParamWidget derived class.
+ **/ 
 #define	GS_DEFINE_PARAM_WIDGET_HEADER(TypeName, type_name)	\
   typedef struct _##TypeName##Class TypeName##Class;		\
 								\

Modified: trunk/lib/gnome-scan-plugin.c
==============================================================================
--- trunk/lib/gnome-scan-plugin.c	(original)
+++ trunk/lib/gnome-scan-plugin.c	Tue Feb 26 22:27:14 2008
@@ -22,15 +22,14 @@
 /**
  * SECTION: gnome-scan-plugin
  * @short_description: Scan operation plugin
+ * @include: gnome-scan.h
  *
- * A #GnomeScanPlugin add a features to Gnome Scan. A plugin never
- * extends directly #GnomeScanPlugin. Instead, you should see
- * #GnomeScanner and #GnomeScanSink. Basically, a plugin handle common
- * properties such as @name, @blurb and @params. Each plugins as a per
- * instance list of params.
- *
- * In the future, #GnomeScanPlugin should be drop in favor of
- * #GeglOperation.
+ * A #GnomeScanPlugin extends the processing pipeline. Only processing
+ * plugin derive directly #GnomeScanPlugin. Source and Sink must
+ * derive from #GnomeScanner and #GnomeScanSink. Basically, a plugin
+ * handle common properties such as @name, @blurb and @params. Each
+ * plugins as a per instance list of params. Those params are exposed
+ * to the UI and save in #GnomeScanSettings.
  **/
 
 #include "gnome-scan-plugin.h"
@@ -42,23 +41,23 @@
 
 struct _GnomeScanPluginPrivate
 {
-  gchar*			name;
-  gchar*			blurb;
+	gchar*			name;
+	gchar*			blurb;
 };
 
 enum
-  {
-    PROP_0,
-    PROP_NAME,
-    PROP_BLURB,
-    PROP_PARAMS
-  };
+{
+	PROP_0,
+	PROP_NAME,
+	PROP_BLURB,
+	PROP_PARAMS
+};
 
 enum
-  {
-    PARAMS_CHANGED,
-    LAST_SIGNAL
-  };
+{
+	PARAMS_CHANGED,
+	LAST_SIGNAL
+};
 
 static GObjectClass* parent_class = NULL;
 static guint signals[LAST_SIGNAL] = { 0 };
@@ -68,121 +67,123 @@
 static void
 gnome_scan_plugin_init (GnomeScanPlugin *object)
 {
-  object->params = g_param_spec_pool_new (FALSE);
+	object->params = g_param_spec_pool_new (FALSE);
 }
 
 static void
 gnome_scan_plugin_finalize (GObject *object)
 {
-  /* TODO: Add deinitalization code here */
+	/* TODO: Add deinitalization code here */
 
-  G_OBJECT_CLASS (parent_class)->finalize (object);
+	G_OBJECT_CLASS (parent_class)->finalize (object);
 }
 
 static void
 gnome_scan_plugin_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
 {
-  g_return_if_fail (GNOME_IS_SCAN_PLUGIN (object));
+	g_return_if_fail (GNOME_IS_SCAN_PLUGIN (object));
 
-  switch (prop_id)
-    {
-    case PROP_NAME:
-      GET_PRIVATE (object)->name = g_value_dup_string (value);
-      break;
-    case PROP_BLURB:
-      GET_PRIVATE (object)->blurb = g_value_dup_string (value);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
+	switch (prop_id)
+		{
+		case PROP_NAME:
+			GET_PRIVATE (object)->name = g_value_dup_string (value);
+			break;
+		case PROP_BLURB:
+			GET_PRIVATE (object)->blurb = g_value_dup_string (value);
+			break;
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+			break;
+		}
 }
 
 static void
 gnome_scan_plugin_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
 {
-  g_return_if_fail (GNOME_IS_SCAN_PLUGIN (object));
+	g_return_if_fail (GNOME_IS_SCAN_PLUGIN (object));
 
-  switch (prop_id)
-    {
-    case PROP_NAME:
-      g_value_set_string (value, gnome_scan_plugin_get_name (GNOME_SCAN_PLUGIN (object)));
-      break;
-    case PROP_BLURB:
-      g_value_set_string (value, GET_PRIVATE (object)->blurb);
-      break;
-    case PROP_PARAMS:
-      g_value_set_pointer (value, GNOME_SCAN_PLUGIN (object)->params);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
+	switch (prop_id)
+		{
+		case PROP_NAME:
+			g_value_set_string (value, gnome_scan_plugin_get_name (GNOME_SCAN_PLUGIN (object)));
+			break;
+		case PROP_BLURB:
+			g_value_set_string (value, GET_PRIVATE (object)->blurb);
+			break;
+		case PROP_PARAMS:
+			g_value_set_pointer (value, GNOME_SCAN_PLUGIN (object)->params);
+			break;
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+			break;
+		}
 }
 
 static void
 gnome_scan_plugin_class_init (GnomeScanPluginClass *klass)
 {
-  GObjectClass* object_class = G_OBJECT_CLASS (klass);
-  parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (klass));
+	GObjectClass* object_class = G_OBJECT_CLASS (klass);
+	parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (klass));
 
-  g_type_class_add_private (klass, sizeof (GnomeScanPluginPrivate));
-  object_class->finalize = gnome_scan_plugin_finalize;
-  object_class->set_property = gnome_scan_plugin_set_property;
-  object_class->get_property = gnome_scan_plugin_get_property;
-
-  /**
-   * GnomeScanPlugin:name:
-   *
-   * The plugin public name.
-   **/
-  g_object_class_install_property (object_class,
-				   PROP_NAME,
-				   g_param_spec_string ("name",
-							"Name",
-							"Plugin public name",
-							NULL,
-							G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
-
-  /**
-   * GnomeScanPlugin:blurb:
-   *
-   * The plugin public blurb.
-   **/
-  g_object_class_install_property (object_class,
-				   PROP_BLURB,
-				   g_param_spec_string ("blurb",
-							"Blurb",
-							"Plugin public description.",
-							NULL,
-							G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
-
-  /**
-   * GnomeScanPlugin:params:
-   *
-   * The list of per instance #GSParamSpec.
-   **/
-  g_object_class_install_property (object_class,
-				   PROP_PARAMS,
-				   g_param_spec_pointer ("params",
-							 "Parameters",
-							 "Pool of plugin parameters specification.",
-							 G_PARAM_READABLE));
-	
-  /**
-   * GnomeScanPlugin::changed:
-   * @plugin: the emitting #GnomeScanPlugin
-   *
-   * Triggered when the instance parameters list has changed.
-   **/
-  signals[PARAMS_CHANGED] =
-    g_signal_new ("params-changed",
-		  G_OBJECT_CLASS_TYPE (klass),
-		  G_SIGNAL_RUN_FIRST,
-		  G_STRUCT_OFFSET (GnomeScanPluginClass, changed),
-		  NULL, NULL,
-		  g_cclosure_marshal_VOID__POINTER,
-		  G_TYPE_NONE, 1, G_TYPE_POINTER);
+	g_type_class_add_private (klass, sizeof (GnomeScanPluginPrivate));
+	object_class->finalize = gnome_scan_plugin_finalize;
+	object_class->set_property = gnome_scan_plugin_set_property;
+	object_class->get_property = gnome_scan_plugin_get_property;
+
+	/**
+	 * GnomeScanPlugin:name:
+	 *
+	 * The plugin public name.
+	 **/
+	g_object_class_install_property (object_class,
+					 PROP_NAME,
+					 g_param_spec_string ("name",
+							      "Name",
+							      "Plugin public name",
+							      NULL,
+							      G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+
+	/**
+	 * GnomeScanPlugin:blurb:
+	 *
+	 * The plugin public blurb.
+	 **/
+	g_object_class_install_property (object_class,
+					 PROP_BLURB,
+					 g_param_spec_string ("blurb",
+							      "Blurb",
+							      "Plugin public description.",
+							      NULL,
+							      G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+
+	/**
+	 * GnomeScanPlugin:params:
+	 *
+	 * The list of per instance #GSParamSpec.
+	 **/
+	g_object_class_install_property (object_class,
+					 PROP_PARAMS,
+					 g_param_spec_pointer ("params",
+							       "Parameters",
+							       "Pool of plugin parameters specification.",
+							       G_PARAM_READABLE));
+	
+	/**
+	 * GnomeScanPlugin::params-changed:
+	 * @plugin:	the emitting #GnomeScanPlugin
+	 * @spec:	the spec of the changed parameter
+	 *
+	 * Triggered when one param of plugin has been added, changed,
+	 * removed. Needs to be renamed to param-changed.
+	 **/
+	signals[PARAMS_CHANGED] =
+		g_signal_new ("params-changed",
+			      G_OBJECT_CLASS_TYPE (klass),
+			      G_SIGNAL_RUN_FIRST,
+			      G_STRUCT_OFFSET (GnomeScanPluginClass, changed),
+			      NULL, NULL,
+			      g_cclosure_marshal_VOID__POINTER,
+			      G_TYPE_NONE, 1, G_TYPE_POINTER);
 }
 
 
@@ -195,8 +196,8 @@
 gchar*
 gnome_scan_plugin_get_name (GnomeScanPlugin *plugin)
 {
-  g_return_val_if_fail (GNOME_IS_SCAN_PLUGIN (plugin), NULL);
-  return g_strdup (GET_PRIVATE (plugin)->name);
+	g_return_val_if_fail (GNOME_IS_SCAN_PLUGIN (plugin), NULL);
+	return g_strdup (GET_PRIVATE (plugin)->name);
 }
 
 /**
@@ -209,9 +210,9 @@
 void
 gnome_scan_plugin_params_add (GnomeScanPlugin *plugin, GParamSpec *param)
 {
-  g_return_if_fail (GNOME_IS_SCAN_PLUGIN (plugin));
-  g_param_spec_pool_insert (plugin->params, param, G_OBJECT_TYPE (plugin));
-  gnome_scan_plugin_params_changed (plugin, param);
+	g_return_if_fail (GNOME_IS_SCAN_PLUGIN (plugin));
+	g_param_spec_pool_insert (plugin->params, param, G_OBJECT_TYPE (plugin));
+	gnome_scan_plugin_params_changed (plugin, param);
 }
 
 /**
@@ -224,9 +225,9 @@
 void
 gnome_scan_plugin_params_remove (GnomeScanPlugin *plugin, GParamSpec *param)
 {
-  g_return_if_fail (GNOME_IS_SCAN_PLUGIN (plugin));
-  g_param_spec_pool_remove (plugin->params, param);
-  gnome_scan_plugin_params_changed (plugin, NULL);
+	g_return_if_fail (GNOME_IS_SCAN_PLUGIN (plugin));
+	g_param_spec_pool_remove (plugin->params, param);
+	gnome_scan_plugin_params_changed (plugin, NULL);
 }
 
 /**
@@ -238,15 +239,15 @@
 void
 gnome_scan_plugin_params_clear (GnomeScanPlugin *plugin)
 {
-  g_return_if_fail (GNOME_IS_SCAN_PLUGIN (plugin));
-  GList *node;
+	g_return_if_fail (GNOME_IS_SCAN_PLUGIN (plugin));
+	GList *node;
 	
-  node = g_param_spec_pool_list_owned (plugin->params, G_OBJECT_TYPE (plugin));
+	node = g_param_spec_pool_list_owned (plugin->params, G_OBJECT_TYPE (plugin));
 
-  for (; node; node = node->next)
-    g_param_spec_pool_remove (plugin->params, node->data);
+	for (; node; node = node->next)
+		g_param_spec_pool_remove (plugin->params, node->data);
 	
-  gnome_scan_plugin_params_changed (plugin, NULL);
+	gnome_scan_plugin_params_changed (plugin, NULL);
 }
 
 /**
@@ -260,49 +261,72 @@
 GList*
 gnome_scan_plugin_get_params (GnomeScanPlugin *plugin)
 {
-  g_return_val_if_fail (GNOME_IS_SCAN_PLUGIN (plugin), NULL);
-  GList *params = NULL;
+	g_return_val_if_fail (GNOME_IS_SCAN_PLUGIN (plugin), NULL);
+	GList *params = NULL;
 	
-  params = g_param_spec_pool_list_owned (plugin->params,
-					 G_OBJECT_TYPE (plugin));
-  params = g_list_sort (params, (GCompareFunc) gs_param_spec_cmp_index);
-  return params;
+	params = g_param_spec_pool_list_owned (plugin->params,
+					       G_OBJECT_TYPE (plugin));
+	params = g_list_sort (params, (GCompareFunc) gs_param_spec_cmp_index);
+	return params;
 }
 
+/**
+ * gnome_scan_plugin_params_get_groups:
+ * @plugin: a #GnomeScanPlugin
+ *
+ * The options must be ordered by groups in order this function not to
+ * duplicate groups. When writing a #GnomeScanPlugin, ensure that
+ * sorting option by index keep groups's options sibling.
+ *
+ * Returns: a #GSList of groups #GQuark.
+ **/
 GSList*
 gnome_scan_plugin_params_get_groups (GnomeScanPlugin *plugin)
 {
-  GSList* groups = NULL;
-  GList* node = gnome_scan_plugin_get_params(plugin);
-  GQuark cur_group = 0, last_group = 0;
-	
-  for (; node ; node = node->next) {
-    cur_group = gs_param_spec_get_group (node->data);
-    if (!last_group || last_group != cur_group) {
-      groups = g_slist_append (groups, (gpointer) cur_group);
-      last_group = cur_group;
-    }
-  }
+	GSList* groups = NULL;
+	GList* node = gnome_scan_plugin_get_params(plugin);
+	GQuark cur_group = 0, last_group = 0;
+	
+	for (; node ; node = node->next) {
+		cur_group = gs_param_spec_get_group (node->data);
+		if (!last_group || last_group != cur_group) {
+			groups = g_slist_append (groups, (gpointer) cur_group);
+			last_group = cur_group;
+		}
+	}
 	
-  return groups;
+	return groups;
 }
 
+/**
+ * gnome_scan_plugin_params_get_other_groups:
+ * @plugin: a #GnomeScanPlugin
+ * @known_group0: the first known group #GQuark
+ * @...: A 0 terminated list of group #GQuark
+ *
+ * Return all group #GQuark except the one listed as parameter. This
+ * is useful if you want e.g. all param group except preview params
+ * group.
+ *
+ * Returns: a #GSList of #GQuark.
+ **/
 GSList*
-gnome_scan_plugin_params_get_other_groups (GnomeScanPlugin *plugin, GQuark known_group0, ...)
+gnome_scan_plugin_params_get_other_groups (GnomeScanPlugin *plugin,
+					   GQuark known_group0, ...)
 {
-  va_list args;
-  va_start (args, known_group0);
-  GSList *groups = gnome_scan_plugin_params_get_groups (plugin);
-  GQuark known_group;
-	
-  /* list known group not to list */
-  known_group = known_group0;
-  while (known_group) {
-    groups = g_slist_remove_all (groups, (gpointer) known_group);
-    known_group = va_arg (args, GQuark);
-  }
+	va_list args;
+	va_start (args, known_group0);
+	GSList *groups = gnome_scan_plugin_params_get_groups (plugin);
+	GQuark known_group;
+	
+	/* list known group not to list */
+	known_group = known_group0;
+	while (known_group) {
+		groups = g_slist_remove_all (groups, (gpointer) known_group);
+		known_group = va_arg (args, GQuark);
+	}
 	
-  return groups;
+	return groups;
 }
 
 /**
@@ -317,58 +341,89 @@
 GSList*
 gnome_scan_plugin_get_param_group (GnomeScanPlugin *plugin, GQuark group)
 {
-  g_return_val_if_fail (GNOME_IS_SCAN_PLUGIN (plugin), NULL);
-  GSList *list = NULL;
-  gint i;
-  guint n;
-  GQuark pgroup;
-  GParamSpec **specs =
-    g_param_spec_pool_list (plugin->params,
-			    G_OBJECT_TYPE (plugin), &n);
-	
-  for (i = 0; i < n; i++) {
-    pgroup = gs_param_spec_get_group (specs[i]);
-    if (pgroup == group)
-      list = g_slist_append (list, specs[i]);
-  }
+	g_return_val_if_fail (GNOME_IS_SCAN_PLUGIN (plugin), NULL);
+	GSList *list = NULL;
+	gint i;
+	guint n;
+	GQuark pgroup;
+	GParamSpec **specs =
+		g_param_spec_pool_list (plugin->params,
+					G_OBJECT_TYPE (plugin), &n);
+	
+	for (i = 0; i < n; i++) {
+		pgroup = gs_param_spec_get_group (specs[i]);
+		if (pgroup == group)
+			list = g_slist_append (list, specs[i]);
+	}
 
-  list = g_slist_sort (list, (GCompareFunc) gs_param_spec_cmp_index);
+	list = g_slist_sort (list, (GCompareFunc) gs_param_spec_cmp_index);
 	
-  return list;
+	return list;
 }
 
-/* List all param for groups0 and following (terminated by 0). */
+/**
+ * gnome_scan_plugin_get_param_groups:
+ * @plugin:	a #GnomeScanPlugin
+ * @group0:	The first group #GQuark
+ * @...:	A 0 terminated list of group @GQuark
+ *
+ * List all params which belong to groups.
+ *
+ * Returns: a #GSList of #GParamSpec
+ **/
 GSList*
-gnome_scan_plugin_get_param_groups	(GnomeScanPlugin *plugin, GQuark group0, ...)
+gnome_scan_plugin_get_param_groups (GnomeScanPlugin *plugin,
+				    GQuark group0, ...)
 {
-  GSList *groups = NULL;
-  GQuark group;
-  va_list args;
-  va_start(args, group0);
-
-  group = group0;
-  while (group) {
-    groups = g_slist_concat (groups,
-			     gnome_scan_plugin_get_param_group (plugin, group));
-    group = va_arg(args, GQuark);
-  }
+	GSList *groups = NULL;
+	GQuark group;
+	va_list args;
+	va_start(args, group0);
+
+	group = group0;
+	while (group) {
+		groups = g_slist_concat (groups,
+					 gnome_scan_plugin_get_param_group (plugin, group));
+		group = va_arg(args, GQuark);
+	}
 	
-  return groups;
+	return groups;
 }
 
+/**
+ * gnome_scan_plugin_params_lookup:
+ * @plugin:	a #GnomeScanPlugin
+ * @name:	The name of the searched parameter
+ *
+ * Search the param spec pool for parameter @name.
+ *
+ * Returns:	a #GParamSpec or NULL.
+ **/
 GParamSpec*
-gnome_scan_plugin_params_lookup	(GnomeScanPlugin *plugin, const gchar *name)
+gnome_scan_plugin_params_lookup	(GnomeScanPlugin *plugin,
+				 const gchar *name)
 {
-  return g_param_spec_pool_lookup (plugin->params,
-				   name,
-				   G_OBJECT_TYPE (plugin),
-				   FALSE);
+	return g_param_spec_pool_lookup (plugin->params,
+					 name,
+					 G_OBJECT_TYPE (plugin),
+					 FALSE);
 }
 
-void	gnome_scan_plugin_params_foreach (GnomeScanPlugin *plugin, GFunc func, gpointer user_data)
+/**
+ * gnome_scan_plugin_params_foreach:
+ * @plugin:	#GnomeScanPlugin
+ * @func:	user callback
+ * @user_data:	pointer to data passed as argument to @func.
+ *
+ * Execute @func for each @plugin's params.
+ **/
+void
+gnome_scan_plugin_params_foreach (GnomeScanPlugin *plugin,
+				  GFunc func,
+				  gpointer user_data)
 {
-  GList *list = g_param_spec_pool_list_owned (plugin->params, G_OBJECT_TYPE (plugin));
-  g_list_foreach (list, func, user_data);
+	GList *list = g_param_spec_pool_list_owned (plugin->params, G_OBJECT_TYPE (plugin));
+	g_list_foreach (list, func, user_data);
 }
 
 #define	gs_exec_class_func_ret(k,f,d,a...)	if(k->f){return klass->f(a);}else{return d;}
@@ -378,89 +433,138 @@
  * gnome_scan_plugin_configure:
  * @plugin: a #GnomeScanPlugin
  * @settings: a #GnomeScanPlugin
+ *
+ * Note:	Implemented by derived class, called by #GnomeScanJob.
  * 
  * Search in @settings value for its instance parameters.
  **/
 void
 gnome_scan_plugin_configure (GnomeScanPlugin *plugin, GnomeScanSettings *settings)
 {
-  g_return_if_fail (GNOME_IS_SCAN_PLUGIN (plugin) && GNOME_IS_SCAN_SETTINGS (settings));
-  GnomeScanPluginClass *klass = GNOME_SCAN_PLUGIN_GET_CLASS (plugin);
-  gs_exec_class_func(klass, configure, plugin, settings);
+	g_return_if_fail (GNOME_IS_SCAN_PLUGIN (plugin) && GNOME_IS_SCAN_SETTINGS (settings));
+	GnomeScanPluginClass *klass = GNOME_SCAN_PLUGIN_GET_CLASS (plugin);
+	gs_exec_class_func(klass, configure, plugin, settings);
 }
 
+/**
+ * gnome_scan_plugin_get_child_nodes:
+ * @plugin:	a #GnomeScanPlugin:
+ * @root:	a root #GeglNode
+ *
+ * Note:	Implemented by derived class, called by #GnomeScanJob.
+ *
+ * Return the list of #GeglNode to append to the
+ * pipeline. #GnomeScanJob link "input" and "output" pads of sibling
+ * nodes, not auxiliary pad.
+ *
+ * Returns:	a #GList of #GeglNode
+ **/
 GList*
 gnome_scan_plugin_get_child_nodes (GnomeScanPlugin *plugin,
 				   GeglNode *root)
 {
-  g_return_val_if_fail (GNOME_IS_SCAN_PLUGIN (plugin), NULL);
-  GnomeScanPluginClass *klass = GNOME_SCAN_PLUGIN_GET_CLASS (plugin);
-  gs_exec_class_func_ret(klass, get_child_nodes, NULL, plugin, root);
+	g_return_val_if_fail (GNOME_IS_SCAN_PLUGIN (plugin), NULL);
+	GnomeScanPluginClass *klass = GNOME_SCAN_PLUGIN_GET_CLASS (plugin);
+	gs_exec_class_func_ret(klass, get_child_nodes, NULL, plugin, root);
 }
 
+/**
+ * gnome_scan_plugin_configure_frame:
+ * @plugin:	a #GnomeScanPlugin 
+ *
+ * Note:	Implemented by derived class, called by #GnomeScanJob.
+ *
+ * This is used especially for per frame GEGL pipeline configuration.
+ **/
 void
-gnome_scan_plugin_configure_frame	(GnomeScanPlugin *plugin)
+gnome_scan_plugin_configure_frame (GnomeScanPlugin *plugin)
 {
-  g_return_if_fail (GNOME_IS_SCAN_PLUGIN (plugin));
-  GnomeScanPluginClass *klass = GNOME_SCAN_PLUGIN_GET_CLASS (plugin);
-  gs_exec_class_func(klass, configure_frame, plugin)
+	g_return_if_fail (GNOME_IS_SCAN_PLUGIN (plugin));
+	GnomeScanPluginClass *klass = GNOME_SCAN_PLUGIN_GET_CLASS (plugin);
+	gs_exec_class_func(klass, configure_frame, plugin);
 }
 
+/**
+ * gnome_scan_plugin_start_frame:
+ * @plugin:	a #GnomeScanPlugin
+ *
+ * Note:	Implemented by derived class, called by #GnomeScanJob.
+ *
+ * Returns:	wether the frame is to be processed or aborted.
+ **/
 gboolean
 gnome_scan_plugin_start_frame	(GnomeScanPlugin *plugin)
 {
-  g_return_val_if_fail (GNOME_IS_SCAN_PLUGIN (plugin), FALSE);
-  GnomeScanPluginClass *klass = GNOME_SCAN_PLUGIN_GET_CLASS (plugin);
-  gs_exec_class_func_ret(klass, start_frame, TRUE, plugin);
+	g_return_val_if_fail (GNOME_IS_SCAN_PLUGIN (plugin), FALSE);
+	GnomeScanPluginClass *klass = GNOME_SCAN_PLUGIN_GET_CLASS (plugin);
+	gs_exec_class_func_ret(klass, start_frame, TRUE, plugin);
 }
 
 /**
  * gnome_scan_plugin_work:
- * @plugin: a #GnomeScanPlugin
- * @progress: a pointer to a place where to store progress
- * 
+ * @plugin:	a #GnomeScanPlugin
+ * @progress:	a pointer to a place where to store progress
+ *
+ * Note:	Implemented by derived class, called by #GnomeScanJob.
+ *
  * Do an iteration of plugin work. Store the amount of work done in
  * progress as a fraction, from 0 to 1. progress set to 1 means work
  * completed.
  *
- * Returns: Wether more work iteration needs to be done.
+ * Returns:	Wether more work iteration needs to be done.
  **/
 gboolean
-gnome_scan_plugin_work (GnomeScanPlugin *plugin, gdouble *progress)
+gnome_scan_plugin_work (GnomeScanPlugin *plugin,
+			gdouble *progress)
 {
-  g_return_val_if_fail (GNOME_IS_SCAN_PLUGIN (plugin), FALSE);
-  GnomeScanPluginClass *klass = GNOME_SCAN_PLUGIN_GET_CLASS (plugin);
-  *progress = 1.;
-  gs_exec_class_func_ret(klass, work, FALSE, plugin, progress);
+	g_return_val_if_fail (GNOME_IS_SCAN_PLUGIN (plugin), FALSE);
+	GnomeScanPluginClass *klass = GNOME_SCAN_PLUGIN_GET_CLASS (plugin);
+	*progress = 1.;
+	gs_exec_class_func_ret(klass, work, FALSE, plugin, progress);
 }
 
 
+/**
+ * gnome_scan_plugin_end_frame:
+ * @plugin:	a #GnomeScanPlugin
+ *
+ * Note:	Implemented by derived class, called by #GnomeScanJob.
+ **/
 void
-gnome_scan_plugin_end_frame		(GnomeScanPlugin *plugin)
+gnome_scan_plugin_end_frame (GnomeScanPlugin *plugin)
 {
-  g_return_if_fail (GNOME_IS_SCAN_PLUGIN (plugin));
-  GnomeScanPluginClass *klass = GNOME_SCAN_PLUGIN_GET_CLASS (plugin);
-  gs_exec_class_func(klass, end_frame, plugin);
+	g_return_if_fail (GNOME_IS_SCAN_PLUGIN (plugin));
+	GnomeScanPluginClass *klass = GNOME_SCAN_PLUGIN_GET_CLASS (plugin);
+	gs_exec_class_func(klass, end_frame, plugin);
 }
 
 
+/**
+ * gnome_scan_plugin_end_scan:
+ * @plugin:	a #GnomeScanPlugin
+ *
+ * Note:	Implemented by derived class, called by #GnomeScanJob.
+ **/
 void
-gnome_scan_plugin_end_scan		(GnomeScanPlugin *plugin)
+gnome_scan_plugin_end_scan (GnomeScanPlugin *plugin)
 {
-  g_return_if_fail (GNOME_IS_SCAN_PLUGIN (plugin));
-  GnomeScanPluginClass *klass = GNOME_SCAN_PLUGIN_GET_CLASS (plugin);
-  gs_exec_class_func(klass, end_scan, plugin);
+	g_return_if_fail (GNOME_IS_SCAN_PLUGIN (plugin));
+	GnomeScanPluginClass *klass = GNOME_SCAN_PLUGIN_GET_CLASS (plugin);
+	gs_exec_class_func(klass, end_scan, plugin);
 }
 
 /**
- * gnome_scan_plugin_changed:
- * @plugin: a #GnomeScanPlugin
+ * gnome_scan_plugin_params_changed:
+ * @plugin:	a #GnomeScanPlugin
+ * @spec:	a #GParamSpec from @plugin
  *
- * Emit #GnomeScanPlugin::changed
+ * Emit #GnomeScanPlugin::changed for @spec param. For use in derived
+ * class.
  */
 void
-gnome_scan_plugin_params_changed	(GnomeScanPlugin *plugin, GParamSpec *spec)
+gnome_scan_plugin_params_changed	(GnomeScanPlugin *plugin,
+					 GParamSpec *spec)
 {
-  g_signal_emit (plugin, signals[PARAMS_CHANGED], 0, spec);
+	g_signal_emit (plugin, signals[PARAMS_CHANGED], 0, spec);
 }
 

Modified: trunk/lib/gnome-scan-plugin.h
==============================================================================
--- trunk/lib/gnome-scan-plugin.h	(original)
+++ trunk/lib/gnome-scan-plugin.h	Tue Feb 26 22:27:14 2008
@@ -30,8 +30,6 @@
 #include "gnome-scan-plugin.h"
 #include "gnome-scan-settings.h"
 
-#define REFDBG(o)   g_debug(G_STRLOC " %s ref count = %i", #o, G_OBJECT(o)->ref_count)
-
 G_BEGIN_DECLS
 
 #define GNOME_TYPE_SCAN_PLUGIN             (gnome_scan_plugin_get_type ())
@@ -71,7 +69,6 @@
 
 /**
  * GnomeScanPlugin:
- * @buffer:	the in/out #GdkPixbuf
  * @params: the pool of params
  *
  * #GnomeScanPlugin is the base class for #GnomeScanner and
@@ -83,8 +80,8 @@
   /*< private >*/
   GObject parent_instance;
 	
-  /*< public >*/
   GList			*nodes;
+  /*< public >*/
   GParamSpecPool	*params;
 };
 

Modified: trunk/lib/gnome-scan-preview-plugin.c
==============================================================================
--- trunk/lib/gnome-scan-preview-plugin.c	(original)
+++ trunk/lib/gnome-scan-preview-plugin.c	Tue Feb 26 22:27:14 2008
@@ -22,8 +22,14 @@
 
 /**
  * SECTION: 
- * @short_description: #GnomeScanPreviewPlugin class
- * 
+ * @stability: Unstable
+ *
+ * Base class for writing plugin to #GnomeScanPreviewArea. It's the
+ * #GnomeScanParamWidget for #GnomeScanPreviewArea. It allow to define a list
+ * of buttons added to the preview area, and changing a parameter value.
+ *
+ * This part is really supposed to change in the future, maybe by simply
+ * subclassing GtkBin or something similar.
  **/
 
 #include <glib/gi18n.h>
@@ -113,8 +119,24 @@
 	}
 }
 
+/**
+ * gnome_scan_preview_plugin:
+ * @type:			subtype of #GnomeScanPreviewPlugin to instanciate
+ * @scan_plugin:	a #GnomeScanPlugin
+ * @pspec:			the #GSParamSpec to manage
+ * @gspa:			the #GnomeScanPreviewArea to extend
+ * @settings:	    the #GnomeScanSettings where to store value
+ * @box:			the box where to put buttons
+ *
+ * Returns: a #GnomeScanPreviewPlugin
+ **/
 GnomeScanPreviewPlugin*
-gnome_scan_preview_plugin		(GType type, GnomeScanPlugin *scan_plugin, GParamSpec *pspec, GtkWidget *gspa, GnomeScanSettings *settings, GtkBox *box)
+gnome_scan_preview_plugin (GType type,
+						   GnomeScanPlugin *scan_plugin,
+						   GParamSpec *pspec,
+						   GtkWidget *gspa,
+						   GnomeScanSettings *settings,
+						   GtkBox *box)
 {
 	g_return_val_if_fail (g_type_is_a (type, GNOME_TYPE_SCAN_PREVIEW_PLUGIN), NULL);
 	GnomeScanPreviewPlugin* plugin = GNOME_SCAN_PREVIEW_PLUGIN (g_type_create_instance (type));
@@ -146,19 +168,36 @@
 	return plugin;
 }
 
-
+/**
+ * gnome_scan_preview_plugin_freeze:
+ * @gspp:   a #GnomeScanPreviewPlugin
+ *
+ * Freeze the plugin so that it doesn't react on value changes.
+ **/
 void
 gnome_scan_preview_plugin_freeze(GnomeScanPreviewPlugin *gspp)
 {
 	gspp->frozen = TRUE;
 }
 
+/**
+ * gnome_scan_preview_plugin_thaw:
+ * @gspp:   a #GnomeScanPreviewPlugin
+ *
+ * Thaw the plugin so that it react on value changes.
+ **/
 void
 gnome_scan_preview_plugin_thaw(GnomeScanPreviewPlugin *gspp)
 {
 	gspp->frozen  = FALSE;
 }
 
+/**
+ * gnome_scan_preview_plugin_changed:
+ * @gspp:   a #GnomeScanPreviewPlugin
+ *
+ * To be called when the preview has been changed.
+ **/
 void
 gnome_scan_preview_plugin_changed (GnomeScanPreviewPlugin *gspp)
 {
@@ -168,6 +207,16 @@
 	}
 }
 
+/**
+ * gnome_scan_preview_plugin_draw_buffer:
+ * @gspp:   a #GnomeScanPreviewPlugin
+ * @gspa:   a #GnomeScaPreviewArea
+ * @cr:		a cairo context
+ *
+ * For use by #GnomeScanPreviewArea
+ *
+ * Stability: Private
+ **/
 void
 gnome_scan_preview_plugin_draw_buffer (GnomeScanPreviewPlugin *gspp,
 									   GtkWidget *gspa,
@@ -177,6 +226,10 @@
 	klass->draw_buffer(gspp, gspa, cr);
 }
 
+/**
+ * gnome_scan_preview_plugin_destroy:
+ * @gspp:   the dying #GnomeScanPreviewPlugin
+ **/
 void
 gnome_scan_preview_plugin_destroy	(GnomeScanPreviewPlugin *gspp)
 {

Modified: trunk/lib/gnome-scan-preview-plugin.h
==============================================================================
--- trunk/lib/gnome-scan-preview-plugin.h	(original)
+++ trunk/lib/gnome-scan-preview-plugin.h	Tue Feb 26 22:27:14 2008
@@ -37,8 +37,17 @@
 #define GNOME_IS_SCAN_PREVIEW_PLUGIN_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), GNOME_TYPE_SCAN_PREVIEW_PLUGIN))
 #define GNOME_SCAN_PREVIEW_PLUGIN_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), GNOME_TYPE_SCAN_PREVIEW_PLUGIN, GnomeScanPreviewPluginClass))
 
+/* max param to watch per plugin */
 #define	GSPP_MAX_WATCH	4
 
+/**
+ * GS_DEFINE_PREVIEW_PLUGIN:
+ * @Name:		Class name
+ * @name:		function prefix
+ * @options:	options to watch.
+ *
+ * Generate glib boiler plate code for creatin a new preview plugin.
+ **/
 #define	GS_DEFINE_PREVIEW_PLUGIN(Name, name, options)							\
 	static void	name##_class_init (GnomeScanPreviewPluginClass *klass);	\
 	static void	name##_init (GnomeScanPreviewPlugin *gspp);				\

Modified: trunk/lib/gnome-scan-settings.c
==============================================================================
--- trunk/lib/gnome-scan-settings.c	(original)
+++ trunk/lib/gnome-scan-settings.c	Tue Feb 26 22:27:14 2008
@@ -21,7 +21,7 @@
 
 /**
  * SECTION: gnome-scan-settings
- * @short_description: Load settings accross plugins
+ * @short_description: Store settings for plugins
  *
  * When user switch from a scanner to another, he expects the settings
  * to keep almost the same. e.g. resolution should not be resetted on
@@ -30,8 +30,12 @@
  * key. This allow to apply the same #GnomeScanSettings on various
  * #GnomeScanPlugin through gnome_scan_plugin_configure().
  *
- * In the future, automatic saving to GConf or .ini would be such
- * feature easily added with this design.
+ * Since 0.5.92, #GnomeScanSettings load and store automatically
+ * settings in #GConf in /apps/gnome-scan/%prgname%/%key%. Ensure you
+ * have a call to g_set_prgname() before gnome_scan_init(). Loading is
+ * done upon construction. However, storing is done at dispose
+ * stage. Ensure to correctly ref/unref your #GnomeScanSettings
+ * instance in order to actually use this feature.
  **/
 
 #include <glib/gi18n.h>
@@ -46,7 +50,7 @@
 {
 	/* using GParamSpec name as key, and GValue as value */
 	GHashTable	*values;
-	GConfClient *gconf;
+	GConfClient	*gconf;
 	gboolean	disposed;
 };
 
@@ -285,9 +289,10 @@
 	object_class->dispose		= gnome_scan_settings_dispose;
 	
   /**
-   * GnomeScanParamWidget::changed:
-   * @widget: The emitting widget
-   * @value: The new value
+   * GnomeScanSettings::changed:
+   * @widget:	The emitting widget
+   * @key:	The changed key
+   * @value:	The new value
    *
    * This signal is emitted when the value is changed by the user.
    **/
@@ -318,6 +323,14 @@
   return GNOME_SCAN_SETTINGS (object);
 }
 
+/**
+ * gnome_scan_settings_init_value:
+ * @settings:	a #GnomeScanSettings
+ * @pspec:	a #GSParamSpec
+ *
+ * Store a new value in @settings using default value and key from
+ * @pspec.
+ **/
 void
 gnome_scan_settings_init_value (GnomeScanSettings *settings,
 								GParamSpec *pspec)
@@ -368,8 +381,8 @@
  **/
 void
 gnome_scan_settings_set_transform (GnomeScanSettings *settings,
-				   const gchar *name,
-				   const GValue *value)
+								   const gchar *name,
+								   const GValue *value)
 {
 	g_return_if_fail (GNOME_IS_SCAN_SETTINGS (settings) && G_IS_VALUE (value));
 	GValue *v = gnome_scan_settings_get (settings, name);
@@ -450,10 +463,10 @@
 
 /**
  * gnome_scan_settings_set_enum:
- * @settings: a #GnomeScanSettings
- * @name: #GParamSpec name
- * @value: genum value
- * 
+ * @settings:	a #GnomeScanSettings
+ * @name:	#GParamSpec name
+ * @type:	enum GType
+ * @value:	enum value
  *
  * See: gnome_scan_settings_set_transform()
  **/
@@ -557,7 +570,7 @@
 }
 
 /**
- * gnome_scan_settings_get:
+ * gnome_scan_settings_get_transformed:
  * @settings: a #GnomeScanSettings
  * @name: a key
  * @type:	Transformation destination type.
@@ -659,6 +672,13 @@
   return val;
 }
 
+/**
+ * gnome_scan_settings_get_boolean:
+ * @settings:	a #GnomeScanSettings
+ * @name:	value name
+ *
+ * Returns: a gboolean 
+ **/
 gboolean
 gnome_scan_settings_get_boolean (GnomeScanSettings *settings,
                              const gchar *name)
@@ -701,6 +721,7 @@
 /**
  * gnome_scan_settings_get_boxed:
  * @settings: a #GnomeScanSettings
+ * @type:	#GBoxed derived #GType
  * @name: a key
  * 
  * Look for a value stored in the table for @name key.

Modified: trunk/lib/gnome-scan-sink.c
==============================================================================
--- trunk/lib/gnome-scan-sink.c	(original)
+++ trunk/lib/gnome-scan-sink.c	Tue Feb 26 22:27:14 2008
@@ -22,6 +22,7 @@
 /**
  * SECTION: gnome-scan-sink
  * @short_description: Plug scan output to application
+ * @include: gnome-scan.h
  *
  * Sink is the last stage of the acquisition process. It handle the
  * scan output and plug it into the application. e.g. do OCR and put

Modified: trunk/lib/gnome-scan-utils.c
==============================================================================
--- trunk/lib/gnome-scan-utils.c	(original)
+++ trunk/lib/gnome-scan-utils.c	Tue Feb 26 22:27:14 2008
@@ -21,8 +21,8 @@
  */
 
 /**
- * SECTION: 
- * @short_description: #GnomeScanUtils class
+ * SECTION: gnome-scan-utils
+ * @title: Miscellaneous utils
  * 
  **/
 #include "gnome-scan-utils.h"
@@ -43,13 +43,35 @@
 	return g_strdup (val->value_nick);
 }
 
+/**
+ * gs_convert:
+ * @val:	the value to convert
+ * @from:	the current @val unit
+ * @to:		the target unit fro @val
+ * @res:	the resolution in dpi
+ *
+ * Convert @val from @from unit to @to at @res resolution. Useful for
+ * preview area, #GnomeScanner, etc.
+ **/
 gdouble
-gs_convert (gdouble val, GnomeScanUnit from, GnomeScanUnit to, gdouble res)
+gs_convert (gdouble val,
+			GnomeScanUnit from,
+			GnomeScanUnit to,
+			gdouble res)
 {
 	if (from == to)
 		return val;
 	
 	switch (from) {
+	case GS_UNIT_NONE:
+	case GS_UNIT_BIT:
+	case GS_UNIT_PERCENT:
+	case GS_UNIT_MICROSECOND:
+	case GS_UNIT_DPI:
+		GS_WARN_UNSUPPORTED_UNIT(from);
+		return val;
+	default:
+		switch (to) {
 		case GS_UNIT_NONE:
 		case GS_UNIT_BIT:
 		case GS_UNIT_PERCENT:
@@ -58,66 +80,67 @@
 			GS_WARN_UNSUPPORTED_UNIT(from);
 			return val;
 		default:
-			switch (to) {
-				case GS_UNIT_NONE:
-				case GS_UNIT_BIT:
-				case GS_UNIT_PERCENT:
-				case GS_UNIT_MICROSECOND:
-				case GS_UNIT_DPI:
-					GS_WARN_UNSUPPORTED_UNIT(from);
-					return val;
-				default:
-					return gs_convert_from_mm (gs_convert_to_mm (val, from, res),
+			return gs_convert_from_mm (gs_convert_to_mm (val, from, res),
 									   to, res);
-			}
+		}
 	}
 }
 
 
 gdouble
-gs_convert_to_mm (gdouble val, GnomeScanUnit unit, gdouble res)
+gs_convert_to_mm (gdouble val,
+				  GnomeScanUnit unit,
+				  gdouble res)
 {
 	switch (unit) {
-		case GS_UNIT_NONE:
-		case GS_UNIT_BIT:
-		case GS_UNIT_PERCENT:
-		case GS_UNIT_MICROSECOND:
-		case GS_UNIT_DPI:
-			GS_WARN_UNSUPPORTED_UNIT(unit);
-			return val;
-		case GS_UNIT_MM:
-			return val;
-		case GS_UNIT_PIXEL:
-			return val * (MM_PER_INCH / res);
+	case GS_UNIT_NONE:
+	case GS_UNIT_BIT:
+	case GS_UNIT_PERCENT:
+	case GS_UNIT_MICROSECOND:
+	case GS_UNIT_DPI:
+		GS_WARN_UNSUPPORTED_UNIT(unit);
+		return val;
+	case GS_UNIT_MM:
+		return val;
+	case GS_UNIT_PIXEL:
+		return val * (MM_PER_INCH / res);
 	}
 }
 
 gdouble
-gs_convert_from_mm (gdouble val, GnomeScanUnit unit, gdouble res)
+gs_convert_from_mm (gdouble val,
+					GnomeScanUnit unit,
+					gdouble res)
 {
 	switch (unit) {
-		case GS_UNIT_NONE:
-		case GS_UNIT_BIT:
-		case GS_UNIT_PERCENT:
-		case GS_UNIT_MICROSECOND:
-		case GS_UNIT_DPI:
-			GS_WARN_UNSUPPORTED_UNIT(unit);
-			return val;
-		case GS_UNIT_MM:
-			return val;
-		case GS_UNIT_PIXEL:
-			return val / (MM_PER_INCH / res);
+	case GS_UNIT_NONE:
+	case GS_UNIT_BIT:
+	case GS_UNIT_PERCENT:
+	case GS_UNIT_MICROSECOND:
+	case GS_UNIT_DPI:
+		GS_WARN_UNSUPPORTED_UNIT(unit);
+		return val;
+	case GS_UNIT_MM:
+		return val;
+	case GS_UNIT_PIXEL:
+		return val / (MM_PER_INCH / res);
 	}
 }
 
 GdkRectangle*
-gs_rectangle_convert (GdkRectangle *r, GnomeScanUnit from, GnomeScanUnit to, gdouble res)
+gs_rectangle_convert (GdkRectangle *r,
+					  GnomeScanUnit from,
+					  GnomeScanUnit to,
+					  gdouble res)
 {
 	return gs_rectangle_convert_from_mm (gs_rectangle_convert_to_mm (r, from, res),
-										to, res);
+										 to, res);
 }
 
-GdkRectangle* gs_rectangle_convert_to_mm	 (GdkRectangle *r, GnomeScanUnit unit, gdouble res)
+GdkRectangle*
+gs_rectangle_convert_to_mm (GdkRectangle *r,
+							GnomeScanUnit unit,
+							gdouble res)
 {
 	GdkRectangle *rect = g_new0 (GdkRectangle, 1);
 #define conv(var)	rect->var = gs_convert_to_mm (r->var, unit, res)
@@ -129,7 +152,10 @@
 	return rect;
 }
 
-GdkRectangle* gs_rectangle_convert_from_mm (GdkRectangle *r, GnomeScanUnit unit, gdouble res)
+GdkRectangle*
+gs_rectangle_convert_from_mm (GdkRectangle *r,
+							  GnomeScanUnit unit,
+							  gdouble res)
 {
 	GdkRectangle *rect = g_new0 (GdkRectangle, 1);
 #define conv(var)	rect->var = gs_convert_from_mm (r->var, unit, res)

Modified: trunk/lib/gnome-scan-utils.h
==============================================================================
--- trunk/lib/gnome-scan-utils.h	(original)
+++ trunk/lib/gnome-scan-utils.h	Tue Feb 26 22:27:14 2008
@@ -65,6 +65,10 @@
 }
 
 
+/**
+ * GnomeScanFormat:
+ *
+ **/
 typedef struct _GnomeScanFormat GnomeScanFormat;
 struct _GnomeScanFormat
 {
@@ -75,6 +79,9 @@
 	gchar **extensions;
 };
 
+/**
+ * GnomeScanUnit:
+ **/
 typedef enum /*< lowercase_name=gs_param_unit,prefix=GS_UNIT >*/
 {
 	GS_UNIT_NONE=-1,

Modified: trunk/lib/gnome-scan.h
==============================================================================
--- trunk/lib/gnome-scan.h	(original)
+++ trunk/lib/gnome-scan.h	Tue Feb 26 22:27:14 2008
@@ -27,8 +27,6 @@
 #include <gnome-scan-job.h>
 #include <gnome-scan-plugin.h>
 #include <gnome-scan-sink.h>
-#include <gnome-scanner.h>
-#include <gnome-scan-preview-area.h>
 #include <gnome-scan-dialog.h>
 #include <gnome-scan-acquisition-dialog.h>
 

Modified: trunk/lib/gnome-scanner.c
==============================================================================
--- trunk/lib/gnome-scanner.c	(original)
+++ trunk/lib/gnome-scanner.c	Tue Feb 26 22:27:14 2008
@@ -22,6 +22,7 @@
 /**
  * SECTION: gnome-scanner
  * @short_description: Acquisition plugin
+ * @include: gnome-scanner.h
  *
  * #GnomeScanner is the base class for backend specific scanner (like
  * e.g SANE). Following SANE design, Gnome Scan scanner has an



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]