]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkprintoperation-private.h
texthandles: Keep state internally to avoid X overhead
[~andy/gtk] / gtk / gtkprintoperation-private.h
index cf38582dcc72906fab0d9005433713327c475603..6a7b509978e6e0b55ad8cfa453c33de27a15ef44 100644 (file)
@@ -13,9 +13,7 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #ifndef __GTK_PRINT_OPERATION_PRIVATE_H__
 
 G_BEGIN_DECLS
 
+/* Page drawing states */
+typedef enum
+{
+  GTK_PAGE_DRAWING_STATE_READY,
+  GTK_PAGE_DRAWING_STATE_DRAWING,
+  GTK_PAGE_DRAWING_STATE_DEFERRED_DRAWING
+} GtkPageDrawingState;
+
 struct _GtkPrintOperationPrivate
 {
+  GtkPrintOperationAction action;
   GtkPrintStatus status;
-  char *status_string;
+  GError *error;
+  gchar *status_string;
   GtkPageSetup *default_page_setup;
   GtkPrintSettings *print_settings;
-  char *job_name;
-  int nr_of_pages;
-  int current_page;
-  gboolean use_full_page;
+  gchar *job_name;
+  gint nr_of_pages;
+  gint nr_of_pages_to_print;
+  gint page_position;
+  gint current_page;
   GtkUnit unit;
-  gboolean show_dialog;
-  char *pdf_target;
+  gchar *export_filename;
+  guint use_full_page      : 1;
+  guint track_print_status : 1;
+  guint show_progress      : 1;
+  guint cancelled          : 1;
+  guint allow_async        : 1;
+  guint is_sync            : 1;
+  guint support_selection  : 1;
+  guint has_selection      : 1;
+  guint embed_page_setup   : 1;
+
+  GtkPageDrawingState      page_drawing_state;
 
-  /* Data for the print job: */
-  cairo_surface_t *surface;
-  double dpi_x, dpi_y;
+  guint print_pages_idle_id;
+  guint show_progress_timeout_id;
 
+  GtkPrintContext *print_context;
+  
   GtkPrintPages print_pages;
   GtkPageRange *page_ranges;
-  int num_page_ranges;
+  gint num_page_ranges;
   
-  int manual_num_copies;
-  gboolean manual_collation;
-  gboolean manual_reverse;
-  gboolean manual_orientation;
+  gint manual_num_copies;
+  guint manual_collation   : 1;
+  guint manual_reverse     : 1;
+  guint manual_orientation : 1;
   double manual_scale;
   GtkPageSet manual_page_set;
-  void *platform_data;
+  guint manual_number_up;
+  GtkNumberUpLayout manual_number_up_layout;
 
-  void (*start_page) (GtkPrintOperation *operation,
-                     GtkPrintContext *print_context,
-                     GtkPageSetup *page_setup);
-  void (*end_page) (GtkPrintOperation *operation,
-                   GtkPrintContext *print_context);
-  void (*end_run) (GtkPrintOperation *operation);
+  GtkWidget *custom_widget;
+  gchar *custom_tab_label;
+  
+  gpointer platform_data;
   GDestroyNotify free_platform_data;
+
+  GMainLoop *rloop; /* recursive mainloop */
+
+  void (*start_page) (GtkPrintOperation *operation,
+                     GtkPrintContext   *print_context,
+                     GtkPageSetup      *page_setup);
+  void (*end_page)   (GtkPrintOperation *operation,
+                     GtkPrintContext   *print_context);
+  void (*end_run)    (GtkPrintOperation *operation,
+                     gboolean           wait,
+                     gboolean           cancelled);
 };
 
-GtkPrintOperationResult _gtk_print_operation_platform_backend_run_dialog (GtkPrintOperation *operation,
-                                                                         GtkWindow         *parent,
-                                                                         gboolean          *do_print,
-                                                                         GError           **error);
 
-typedef void (* GtkPrintOperationPrintFunc) (GtkPrintOperation *op);
+typedef void (* GtkPrintOperationPrintFunc) (GtkPrintOperation      *op,
+                                            GtkWindow              *parent,
+                                            gboolean                do_print,
+                                            GtkPrintOperationResult result);
 
-void _gtk_print_operation_platform_backend_run_dialog_async (GtkPrintOperation          *op,
-                                                            GtkWindow                  *parent,
-                                                            GtkPrintOperationPrintFunc  print_cb);
+GtkPrintOperationResult _gtk_print_operation_platform_backend_run_dialog             (GtkPrintOperation           *operation,
+                                                                                     gboolean                     show_dialog,
+                                                                                     GtkWindow                   *parent,
+                                                                                     gboolean                    *do_print);
+void                    _gtk_print_operation_platform_backend_run_dialog_async       (GtkPrintOperation           *op,
+                                                                                     gboolean                     show_dialog,
+                                                                                     GtkWindow                   *parent,
+                                                                                     GtkPrintOperationPrintFunc   print_cb);
+void                    _gtk_print_operation_platform_backend_launch_preview         (GtkPrintOperation           *op,
+                                                                                     cairo_surface_t             *surface,
+                                                                                     GtkWindow                   *parent,
+                                                                                     const char                  *filename);
+cairo_surface_t *       _gtk_print_operation_platform_backend_create_preview_surface (GtkPrintOperation           *op,
+                                                                                     GtkPageSetup                *page_setup,
+                                                                                     gdouble                     *dpi_x,
+                                                                                     gdouble                     *dpi_y,
+                                                                                     gchar                       **target);
+void                    _gtk_print_operation_platform_backend_resize_preview_surface (GtkPrintOperation           *op,
+                                                                                     GtkPageSetup                *page_setup,
+                                                                                     cairo_surface_t             *surface);
+void                    _gtk_print_operation_platform_backend_preview_start_page     (GtkPrintOperation *op,
+                                                                                     cairo_surface_t *surface,
+                                                                                     cairo_t *cr);
+void                    _gtk_print_operation_platform_backend_preview_end_page       (GtkPrintOperation *op,
+                                                                                     cairo_surface_t *surface,
+                                                                                     cairo_t *cr);
 
 void _gtk_print_operation_set_status (GtkPrintOperation *op,
-                                     GtkPrintStatus status,
-                                     const char *string);
+                                     GtkPrintStatus     status,
+                                     const gchar       *string);
 
 /* GtkPrintContext private functions: */
 
@@ -87,6 +138,12 @@ void             _gtk_print_context_set_page_setup                  (GtkPrintCon
                                                                     GtkPageSetup      *page_setup);
 void             _gtk_print_context_translate_into_margin           (GtkPrintContext   *context);
 void             _gtk_print_context_rotate_according_to_orientation (GtkPrintContext   *context);
+void             _gtk_print_context_reverse_according_to_orientation (GtkPrintContext *context);
+void             _gtk_print_context_set_hard_margins                (GtkPrintContext   *context,
+                                                                    gdouble            top,
+                                                                    gdouble            bottom,
+                                                                    gdouble            left,
+                                                                    gdouble            right);
 
 G_END_DECLS