sp-hatch.cpp revision 80d489090f48f0556f30213acdb05bf81d033dcb
919N/A#ifdef HAVE_CONFIG_H
210N/A#include "display/cairo-utils.h"
210N/A#include "display/drawing-context.h"
210N/A#include "display/drawing-surface.h"
493N/A#include "display/drawing-pattern.h"
210N/A#include "attributes.h"
210N/A#include "document-private.h"
911N/A#include "sp-hatch.h"
911N/A#include "sp-hatch-path.h"
210N/A#include "sp-factory.h"
210N/A : SPPaintServer(),
210N/A _hatchUnits_set(false),
210N/A _hatchContentUnits_set(false),
210N/A _hatchTransform_set(false),
_x(),
_y(),
_pitch(),
_rotate(),
_display()
if (document) {
if (ref) {
delete ref;
if (path_child) {
if (ac) {
switch (key) {
case SP_ATTR_HATCHUNITS:
if (value) {
_hatchUnits_set = true;
_hatchUnits_set = false;
if (value) {
_hatchContentUnits_set = true;
_hatchContentUnits_set = false;
case SP_ATTR_HATCHTRANSFORM: {
_hatchTransform = t;
_hatchTransform_set = true;
_hatchTransform_set = false;
case SP_ATTR_X:
case SP_ATTR_Y:
case SP_ATTR_PITCH:
case SP_ATTR_ROTATE:
case SP_ATTR_XLINK_HREF:
if (value) {
if (value) {
bool matched = false;
if (hatchPath) {
matched = true;
return matched;
if (src) {
if (hatchPath) {
return list;
if (src) {
if (hatchPath) {
return list;
if (old_ref) {
if (hatch) {
if (!_hasHatchPatchChildren(this)) {
if (old_hatch) {
if (hatch) {
for (ChildIterator child_iter = oldhatchPaths.begin(); child_iter != oldhatchPaths.end(); ++child_iter) {
for (ChildIterator child_iter = newhatchPaths.begin(); child_iter != newhatchPaths.end(); ++child_iter) {
if (cai) {
return src ? src : this; // document is broken, we can't get to root; but at least we can return pat which is supposedly a valid hatch
// Access functions that look up fields up the chain of referenced hatchs and return the first one which is set
return units;
return units;
return _hatchTransform;
return val;
return val;
return val;
return val;
bool valid = false;
if (pitch() > 0) {
valid = true;
return valid;
Inkscape::DrawingPattern *SPHatch::show(Inkscape::Drawing &drawing, unsigned int key, Geom::OptRect bbox)
if (cai) {
return ai;
return result;
return info;
if (extents) {
double tile_x = x();
double tile_y = y();
Geom::Affine ps2user = Geom::Translate(tile_x, tile_y) * Geom::Rotate::from_degrees(tile_rotate) * hatchTransform();
return info;
double tile_x = x();
double tile_y = y();
Geom::Affine ps2user = Geom::Translate(tile_x, tile_y) * Geom::Rotate::from_degrees(tile_rotate) * hatchTransform();
return extents;
cairo_pattern_t* SPHatch::pattern_new(cairo_t * /*base_ct*/, Geom::OptRect const &/*bbox*/, double /*opacity*/)
: child_transform(),
tile_rect(),
overflow_steps(0),
bbox(),