summaryrefslogblamecommitdiffstats
path: root/graphics/cairomm/files/patch-cairomm_surface.h
blob: 024b5ed452efe6fb6e4921375b7e2b89e48b8c6e (plain) (tree)










































































































































                                                                                                                                   
--- cairomm/surface.h   2006/03/06 17:55:51 1.10
+++ cairomm/surface.h   2006/06/27 01:46:14 1.13
@@ -137,6 +137,17 @@
    */
   void set_device_offset(double x_offset, double y_offset);
 
+  /** Returns a previous device offset set by set_device_offset().
+   */
+  void get_device_offset(double& x_offset, double& y_offset);
+
+  /** Sets the fallback resolution of the image in dots per inch
+   *
+   * @param x_pixels_per_inch   Pixels per inch in the x direction
+   * @param y_pixels_per_inch   Pixels per inch in the y direction
+   */
+  void set_fallback_resolution(double x_pixels_per_inch, double y_pixels_per_inch);
+
 #ifdef CAIRO_HAS_PNG_FUNCTIONS
 
   /** Writes the contents of surface to a new file filename as a PNG image.
@@ -243,6 +254,29 @@
    */
   int get_height() const;
 
+  /**
+   * Get a pointer to the data of the image surface, for direct
+   * inspection or modification.
+   *
+   * Return value: a pointer to the image data of this surface or NULL
+   * if @surface is not an image surface.
+   */
+  unsigned char* get_data();
+  const unsigned char* get_data() const;
+
+  /** gets the format of the surface
+   */
+  Format get_format() const;
+
+  /**
+   * Return value: the stride of the image surface in bytes (or 0 if
+   * @surface is not an image surface). The stride is the distance in
+   * bytes from the beginning of one row of the image data to the
+   * beginning of the next row.
+   */
+  int get_stride() const;
+
+
   /** Creates an image surface of the specified format and dimensions. The
    * initial contents of the surface is undefined; you must explicitely clear
    * the buffer, using, for example, Cairo::Context::rectangle() and
@@ -367,12 +401,19 @@
    */
   static RefPtr<PdfSurface> create(cairo_write_func_t write_func, void *closure, double width_in_points, double height_in_points);
 
-  /** Sets the resolution of the image in dots per inch
-   *
-   * @param x_dpi   The dpi in the x direction
-   * @param y_dpi    The dpi in the y direction
-   */
-  void set_dpi(double x_dpi, double y_dpi);
+/**
+ * Changes the size of a PDF surface for the current (and subsequent) pages.
+ *
+ * This function should only be called before any drawing operations have been
+ * performed on the current page. The simplest way to do this is to call this
+ * function immediately after creating the surface or immediately after
+ * completing a page with either Context::show_page() or Context::copy_page().
+ *
+ * \param width_in_points new surface width, in points (1 point == 1/72.0 inch)
+ * \param height_in_points new surface height, in points (1 point == 1/72.0 inch)
+ **/
+  void set_size(double width_in_points, double height_in_points);
+
 };
 
 #endif  // CAIRO_HAS_PDF_SURFACE
@@ -424,12 +465,45 @@
    */
   static RefPtr<PsSurface> create(cairo_write_func_t write_func, void *closure, double width_in_points, double height_in_points);
 
-  /** Sets the resolution of the image in dots per inch
+  /**
+   * Changes the size of a PostScript surface for the current (and
+   * subsequent) pages.
+   *
+   * This function should only be called before any drawing operations have been
+   * performed on the current page. The simplest way to do this is to call this
+   * function immediately after creating the surface or immediately after
+   * completing a page with either Context::show_page() or Context::copy_page().
+   *
+   * \param width_in_points new surface width, in points (1 point == 1/72.0 inch)
+   * \param height_in_points new surface height, in points (1 point == 1/72.0 inch)
+   */
+  void set_size(double width_in_points, double height_in_points);
+
+  /** Emit a comment into the PostScript output for the given surface.  See the
+   * cairo reference documentation for more information.
+   *
+   * \param comment a comment string to be emitted into the PostScript output
+   */
+  void dsc_comment(std::string comment);
+
+  /**
+   * This function indicates that subsequent calls to dsc_comment() should direct
+   * comments to the Setup section of the PostScript output.
    *
-   * @param x_dpi   The dpi in the x direction
-   * @param y_dpi    The dpi in the y direction
+   * This function should be called at most once per surface, and must be called
+   * before any call to dsc_begin_page_setup() and before any drawing is performed
+   * to the surface.
    */
-  void set_dpi(double x_dpi, double y_dpi);
+  void dsc_begin_setup();
+
+  /** This function indicates that subsequent calls to dsc_comment() should
+   * direct comments to the PageSetup section of the PostScript output.
+   *
+   * This function call is only needed for the first page of a surface. It
+   * should be called after any call to dsc_begin_setup() and before any drawing
+   * is performed to the surface.
+   */
+  void dsc_begin_page_setup();
 
 };
 
@@ -483,12 +557,6 @@
    */
   static RefPtr<SvgSurface> create(cairo_write_func_t write_func, void *closure, double width_in_points, double height_in_points);
 
-  /** Sets the resolution of the image in dots per inch
-   *
-   * @param x_dpi   The dpi in the x direction
-   * @param y_dpi    The dpi in the y direction
-   */
-  void set_dpi(double x_dpi, double y_dpi);
 };
 
 #endif // CAIRO_HAS_SVG_SURFACE