Minsky: 3.17.0
minsky::SVGRenderer Class Reference

#include <SVGItem.h>

Collaboration diagram for minsky::SVGRenderer:
Collaboration graph

Public Member Functions

 SVGRenderer ()
 
 SVGRenderer (const std::string &resource)
 
 SVGRenderer (const SVGRenderer &)=delete
 
void operator= (const SVGRenderer &)=delete
 
 ~SVGRenderer ()
 
void setResource (const std::string &resource)
 initialise object from an SVG file More...
 
void render (cairo_t *, double width, double height) const
 render SVG into region of size width height More...
 

Private Member Functions

 CLASSDESC_ACCESS (SVGRenderer)
 

Private Attributes

classdesc::Exclude< RsvgHandle * > svg =nullptr
 

Detailed Description

Definition at line 29 of file SVGItem.h.

Constructor & Destructor Documentation

◆ SVGRenderer() [1/3]

minsky::SVGRenderer::SVGRenderer ( )
inline

Definition at line 37 of file SVGItem.h.

37 {}

◆ SVGRenderer() [2/3]

minsky::SVGRenderer::SVGRenderer ( const std::string &  resource)
inline

Definition at line 38 of file SVGItem.h.

References setResource().

38 {setResource(resource);}
void setResource(const std::string &resource)
initialise object from an SVG file
Definition: SVGItem.cc:57
Here is the call graph for this function:

◆ SVGRenderer() [3/3]

minsky::SVGRenderer::SVGRenderer ( const SVGRenderer )
delete

◆ ~SVGRenderer()

minsky::SVGRenderer::~SVGRenderer ( )

Definition at line 78 of file SVGItem.cc.

79  {
80  if (svg)
81  g_object_unref(svg);
82  }
classdesc::Exclude< RsvgHandle * > svg
Definition: SVGItem.h:31

Member Function Documentation

◆ CLASSDESC_ACCESS()

minsky::SVGRenderer::CLASSDESC_ACCESS ( SVGRenderer  )
private

◆ operator=()

void minsky::SVGRenderer::operator= ( const SVGRenderer )
delete

◆ render()

void minsky::SVGRenderer::render ( cairo_t *  cairo,
double  width,
double  height 
) const

render SVG into region of size width height

Definition at line 84 of file SVGItem.cc.

Referenced by minsky::Lock::draw(), minsky::Ravel::draw(), and minsky::Operation< minsky::OperationType::integrate >::iconDraw().

85  {
86  if (svg)
87 #ifdef MXE // MXE doesn't currently have a Rust compiler, so librsvg can be no later than 2.40.21
88  cairo_scale(cairo,width/m_width, height/m_height);
89  rsvg_handle_render_cairo(svg,cairo);
90 #else
91  {
92  GError* err=nullptr;
93  const RsvgRectangle rect{0,0,width,height};
94  rsvg_handle_render_document(svg,cairo,&rect,&err);
95  }
96 #endif
97  }
classdesc::Exclude< RsvgHandle * > svg
Definition: SVGItem.h:31
Here is the caller graph for this function:

◆ setResource()

void minsky::SVGRenderer::setResource ( const std::string &  resource)

initialise object from an SVG file

Definition at line 57 of file SVGItem.cc.

Referenced by minsky::Minsky::setGodleyIconResource(), minsky::Minsky::setGroupIconResource(), minsky::Minsky::setLockIconResource(), minsky::Minsky::setRavelIconResource(), and SVGRenderer().

58  {
59  if (svg) g_object_unref(svg);
60  GError* err=nullptr;
61  svg=rsvg_handle_new_from_file(resource.c_str(),&err);
62  if (err)
63  {
64  std::string msg="SVGRenderer failed to initialise: ";
65  msg+=err->message;
66  g_error_free(err);
67  throw runtime_error(msg);
68  }
69 #ifdef MXE // MXE doesn't currently have a Rust compiler, so librsvg can be no later than 2.40.21
70  RsvgDimensionData dims;
71  rsvg_handle_get_dimensions(svg, &dims);
72  m_width=dims.width;
73  m_height=dims.height;
74 #endif
75  }
classdesc::Exclude< RsvgHandle * > svg
Definition: SVGItem.h:31
Here is the caller graph for this function:

Member Data Documentation

◆ svg

classdesc::Exclude<RsvgHandle*> minsky::SVGRenderer::svg =nullptr
private

Definition at line 31 of file SVGItem.h.


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