cairomm 1.18.0
Public Member Functions | Static Public Member Functions | List of all members
Cairo::PsSurface Class Reference

A PsSurface provides a way to render PostScript documents from cairo. More...

#include <cairomm/surface.h>

Inheritance diagram for Cairo::PsSurface:
Inheritance graph
[legend]

Public Member Functions

 PsSurface (cairo_surface_t *cobject, bool has_reference=false)
 Create a C++ wrapper for the C instance. More...
 
 ~PsSurface () override
 
void set_size (double width_in_points, double height_in_points)
 Changes the size of a PostScript surface for the current (and subsequent) pages. More...
 
void dsc_comment (std::string comment)
 Emit a comment into the PostScript output for the given surface. More...
 
void dsc_begin_setup ()
 This function indicates that subsequent calls to dsc_comment() should direct comments to the Setup section of the PostScript output. More...
 
void dsc_begin_page_setup ()
 This function indicates that subsequent calls to dsc_comment() should direct comments to the PageSetup section of the PostScript output. More...
 
void set_eps (bool eps)
 If eps is true, the PostScript surface will output Encapsulated PostScript. More...
 
bool get_eps () const
 Check whether the PostScript surface will output Encapsulated PostScript. More...
 
void restrict_to_level (PsLevel level)
 Restricts the generated PostSript file to @level. More...
 
- Public Member Functions inherited from Cairo::Surface
 Surface (cairo_surface_t *cobject, bool has_reference=false)
 Create a C++ wrapper for the C instance. More...
 
 Surface (const Surface &)=delete
 
Surfaceoperator= (const Surface &)=delete
 
virtual ~Surface ()
 
const unsigned char * get_mime_data (const std::string & mime_type, unsigned long & length)
 Return mime data previously attached to surface using the specified mime type. More...
 
void set_mime_data (const std::string & mime_type, unsigned char *data, unsigned long length, const SlotDestroy & slot_destroy)
 Attach an image in the format mime_type to surface. More...
 
void unset_mime_data (const std::string & mime_type)
 Remove the data from a surface. More...
 
void get_font_options (FontOptions & options) const
 Retrieves the default font rendering options for the surface. More...
 
void finish ()
 This function finishes the surface and drops all references to external resources. More...
 
void flush ()
 Do any pending drawing for the surface and also restore any temporary modifications cairo has made to the surface's state. More...
 
void mark_dirty ()
 Tells cairo to consider the data buffer dirty. More...
 
void mark_dirty (int x, int y, int width, int height)
 Marks a rectangular area of the given surface dirty. More...
 
void set_device_offset (double x_offset, double y_offset)
 Sets an offset that is added to the device coordinates determined by the CTM when drawing to surface. More...
 
void get_device_offset (double & x_offset, double & y_offset) const
 Returns a previous device offset set by set_device_offset(). More...
 
void set_device_scale (double x_scale, double y_scale)
 Sets a scale that is multiplied to the device coordinates determined by the CTM when drawing to surface. More...
 
void set_device_scale (double scale)
 Sets x and y scale to the same value. More...
 
void get_device_scale (double & x_scale, double & y_scale) const
 Returns a previous device scale set by set_device_scale(). More...
 
double get_device_scale () const
 Returns the x and y average of a previous device scale set by set_device_scale(). More...
 
void set_fallback_resolution (double x_pixels_per_inch, double y_pixels_per_inch)
 Set the horizontal and vertical resolution for image fallbacks. More...
 
void get_fallback_resolution (double & x_pixels_per_inch, double & y_pixels_per_inch) const
 This function returns the previous fallback resolution set by set_fallback_resolution(), or default fallback resolution if never set. More...
 
Type get_type () const
 
Content get_content () const
 This function returns the content type of surface which indicates whether the surface contains color and/or alpha information. More...
 
void copy_page ()
 Emits the current page for backends that support multiple pages, but doesn't clear it, so that the contents of the current page will be retained for the next page. More...
 
void show_page ()
 Emits and clears the current page for backends that support multiple pages. More...
 
bool has_show_text_glyphs () const
 Returns whether the surface supports sophisticated Context::show_text_glyphs() operations. More...
 
void write_to_png (const std::string & filename)
 Writes the contents of surface to a new file filename as a PNG image. More...
 
void write_to_png_stream (const SlotWriteFunc & write_func)
 Writes the Surface to the write function. More...
 
RefPtr< Deviceget_device ()
 This function returns the device for a surface. More...
 
cobjectcobj ()
 Provides acces to the underlying C cairo surface. More...
 
const cobjectcobj () const
 Provides acces to the underlying C cairo surface. More...
 

Static Public Member Functions

static RefPtr< PsSurfacecreate (std::string filename, double width_in_points, double height_in_points)
 Creates a PsSurface with a specified dimensions that will be saved as the given filename. More...
 
static RefPtr< PsSurfacecreate_for_stream (const SlotWriteFunc & write_func, double width_in_points, double height_in_points)
 Creates a PsSurface with a specified dimensions that will be written to the given write function instead of saved directly to disk. More...
 
static const std::vector< PsLevelget_levels ()
 Used to retrieve the list of supported levels. More...
 
static std::string level_to_string (PsLevel level)
 Get the string representation of the given level id. More...
 
- Static Public Member Functions inherited from Cairo::Surface
static RefPtr< Surfacecreate (const RefPtr< Surface > other, Content content, int width, int height)
 Create a new surface that is as compatible as possible with an existing surface. More...
 
static RefPtr< Surfacecreate (const RefPtr< Surface > & target, double x, double y, double width, double height)
 Create a new surface that is a rectangle within the target surface. More...
 

Additional Inherited Members

- Public Types inherited from Cairo::Surface
enum class  Type {
  IMAGE = CAIRO_SURFACE_TYPE_IMAGE ,
  PDF = CAIRO_SURFACE_TYPE_PDF ,
  PS = CAIRO_SURFACE_TYPE_PS ,
  XLIB = CAIRO_SURFACE_TYPE_XLIB ,
  XCB = CAIRO_SURFACE_TYPE_XCB ,
  GLITZ = CAIRO_SURFACE_TYPE_GLITZ ,
  QUARTZ = CAIRO_SURFACE_TYPE_QUARTZ ,
  WIN32 = CAIRO_SURFACE_TYPE_WIN32 ,
  WIN32_SURFACE = CAIRO_SURFACE_TYPE_WIN32 ,
  BEOS = CAIRO_SURFACE_TYPE_BEOS ,
  DIRECTFB = CAIRO_SURFACE_TYPE_DIRECTFB ,
  SVG = CAIRO_SURFACE_TYPE_SVG ,
  OS2 = CAIRO_SURFACE_TYPE_OS2 ,
  WIN32_PRINTING = CAIRO_SURFACE_TYPE_WIN32_PRINTING ,
  QUARTZ_IMAGE = CAIRO_SURFACE_TYPE_QUARTZ_IMAGE ,
  SCRIPT = CAIRO_SURFACE_TYPE_SCRIPT ,
  QT = CAIRO_SURFACE_TYPE_QT ,
  RECORDING = CAIRO_SURFACE_TYPE_RECORDING ,
  VG = CAIRO_SURFACE_TYPE_VG ,
  GL = CAIRO_SURFACE_TYPE_GL ,
  DRM = CAIRO_SURFACE_TYPE_DRM ,
  TEE = CAIRO_SURFACE_TYPE_TEE ,
  XML = CAIRO_SURFACE_TYPE_XML ,
  SKIA = CAIRO_SURFACE_TYPE_SKIA ,
  SUBSURFACE = CAIRO_SURFACE_TYPE_SUBSURFACE
}
 Cairo::Surface::Type is used to describe the type of a given surface. More...
 
enum class  Format {
  ARGB32 = CAIRO_FORMAT_ARGB32 ,
  RGB24 = CAIRO_FORMAT_RGB24 ,
  A8 = CAIRO_FORMAT_A8 ,
  A1 = CAIRO_FORMAT_A1 ,
  RGB16_565 = CAIRO_FORMAT_RGB16_565
}
 Cairo::Surface::Format is used to identify the memory format of image data. More...
 
typedef sigc::slot< ErrorStatus(const unsigned char *, unsigned int)> SlotWriteFunc
 For example: ErrorStatus my_write_func(unsigned char* data, unsigned int length); More...
 
typedef sigc::slot< ErrorStatus(unsigned char *, unsigned int)> SlotReadFunc
 This is the type of function which is called when a backend needs to read data from an input stream. More...
 
typedef sigc::slot< void()> SlotDestroy
 For instance, void on_destroy();. More...
 
typedef cairo_surface_t cobject
 The underlying C cairo surface type. More...
 
- Protected Attributes inherited from Cairo::Surface
cobjectm_cobject
 The underlying C cairo surface type that is wrapped by this Surface. More...
 

Detailed Description

A PsSurface provides a way to render PostScript documents from cairo.

This surface is not rendered to the screen but instead renders the drawing to a PostScript file on disk.

Note
For this Surface to be available, cairo must have been compiled with PostScript support

Constructor & Destructor Documentation

◆ PsSurface()

Cairo::PsSurface::PsSurface ( cairo_surface_t *  cobject,
bool  has_reference = false 
)
explicit

Create a C++ wrapper for the C instance.

This C++ instance should then be given to a RefPtr.

Parameters
cobjectThe C instance.
has_referencewhether we already have a reference. Otherwise, the constructor will take an extra reference.

◆ ~PsSurface()

Cairo::PsSurface::~PsSurface ( )
override

Member Function Documentation

◆ create()

static RefPtr< PsSurface > Cairo::PsSurface::create ( std::string  filename,
double  width_in_points,
double  height_in_points 
)
static

Creates a PsSurface with a specified dimensions that will be saved as the given filename.

Parameters
filenameThe name of the PostScript file to save the surface to
width_in_pointsThe width of the PostScript document in points
height_in_pointsThe height of the PostScript document in points
Examples
ps-surface.cc.

◆ create_for_stream()

static RefPtr< PsSurface > Cairo::PsSurface::create_for_stream ( const SlotWriteFunc write_func,
double  width_in_points,
double  height_in_points 
)
static

Creates a PsSurface with a specified dimensions that will be written to the given write function instead of saved directly to disk.

Parameters
write_funcThe function to be called when the backend needs to write data to an output stream
width_in_pointsThe width of the PostScript document in points
height_in_pointsThe height of the PostScript document in points
Since
1.8

◆ dsc_begin_page_setup()

void Cairo::PsSurface::dsc_begin_page_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.

◆ dsc_begin_setup()

void Cairo::PsSurface::dsc_begin_setup ( )

This function indicates that subsequent calls to dsc_comment() should direct comments to the Setup section of the PostScript output.

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.

◆ dsc_comment()

void Cairo::PsSurface::dsc_comment ( std::string  comment)

Emit a comment into the PostScript output for the given surface.

See the cairo reference documentation for more information.

Parameters
commenta comment string to be emitted into the PostScript output

◆ get_eps()

bool Cairo::PsSurface::get_eps ( ) const

Check whether the PostScript surface will output Encapsulated PostScript.

Since
1.8

◆ get_levels()

static const std::vector< PsLevel > Cairo::PsSurface::get_levels ( )
static

Used to retrieve the list of supported levels.

See restrict_to_level().

Since
1.6

◆ level_to_string()

static std::string Cairo::PsSurface::level_to_string ( PsLevel  level)
static

Get the string representation of the given level id.

This function will return an empty string if level id isn't valid. See get_levels() for a way to get the list of valid level ids.

Returns
the string associated to given level.
Parameters
levela level id
Since
1.6

◆ restrict_to_level()

void Cairo::PsSurface::restrict_to_level ( PsLevel  level)

Restricts the generated PostSript file to @level.

See get_levels() for a list of available level values that can be used here.

This function should only be called before any drawing operations have been performed on the given surface. The simplest way to do this is to call this function immediately after creating the surface.

Parameters
levelPostScript level
Since
1.6

◆ set_eps()

void Cairo::PsSurface::set_eps ( bool  eps)

If eps is true, the PostScript surface will output Encapsulated PostScript.

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. An Encapsulated Postscript file should never contain more than one page.

Since
1.6

◆ set_size()

void Cairo::PsSurface::set_size ( double  width_in_points,
double  height_in_points 
)

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().

Parameters
width_in_pointsnew surface width, in points (1 point == 1/72.0 inch)
height_in_pointsnew surface height, in points (1 point == 1/72.0 inch)

The documentation for this class was generated from the following file: