diff options
| author | Jabier Arraiza Cenoz <jabier.arraiza@marker.es> | 2013-09-22 16:53:57 +0000 |
|---|---|---|
| committer | Jabiertxof <jtx@jtx.marker.es> | 2013-09-22 16:53:57 +0000 |
| commit | 8cf510753057485dcf07a5ad4587ffe8c7f7eaa2 (patch) | |
| tree | 26df259064bee700c6a44df885a990ada2a15612 /src | |
| parent | Update to trunk (diff) | |
| parent | Fix CMake build (follow-up to r12567) (diff) | |
| download | inkscape-8cf510753057485dcf07a5ad4587ffe8c7f7eaa2.tar.gz inkscape-8cf510753057485dcf07a5ad4587ffe8c7f7eaa2.zip | |
update to trunk
(bzr r11950.1.147)
Diffstat (limited to 'src')
47 files changed, 346 insertions, 5876 deletions
diff --git a/src/2geom/conjugate_gradient.cpp b/src/2geom/conjugate_gradient.cpp index ae69d5281..588513414 100644 --- a/src/2geom/conjugate_gradient.cpp +++ b/src/2geom/conjugate_gradient.cpp @@ -36,6 +36,9 @@ /* lifted wholely from wikipedia. */ +namespace Geom +{ + using std::valarray; static void @@ -126,6 +129,8 @@ conjugate_gradient(valarray<double> const &A, // x is solution } +} // namespace Geom + /* Local Variables: mode:c++ diff --git a/src/2geom/conjugate_gradient.h b/src/2geom/conjugate_gradient.h index a34307d4b..4f500c0e6 100644 --- a/src/2geom/conjugate_gradient.h +++ b/src/2geom/conjugate_gradient.h @@ -29,11 +29,14 @@ * */ -#ifndef _CONJUGATE_GRADIENT_H -#define _CONJUGATE_GRADIENT_H +#ifndef _2GEOM_CONJUGATE_GRADIENT_H +#define _2GEOM_CONJUGATE_GRADIENT_H #include <valarray> +namespace Geom +{ + double inner(std::valarray<double> const &x, std::valarray<double> const &y); @@ -44,7 +47,10 @@ conjugate_gradient(std::valarray<double> const &A, std::valarray<double> const &b, unsigned n, double tol, unsigned max_iterations, bool ortho1); -#endif // _CONJUGATE_GRADIENT_H + +} // namespace Geom + +#endif // _2GEOM_CONJUGATE_GRADIENT_H /* Local Variables: diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 67c5be11a..32bcf19a7 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -569,21 +569,21 @@ set(inkscape_SRC # ----------------------------------------------------------------------------- # Setup the executable # ----------------------------------------------------------------------------- -add_inkscape_lib(sp_LIB "${sp_SRC}") -add_inkscape_lib(inkscape_LIB "${inkscape_SRC}") +#add_inkscape_lib(sp_LIB "${sp_SRC}") +#add_inkscape_lib(inkscape_LIB "${inkscape_SRC}") # make executable for INKSCAPE -add_executable(inkscape ${main_SRC}) +add_executable(inkscape ${main_SRC} ${inkscape_SRC} ${sp_SRC}) add_dependencies(inkscape inkscape_version) target_link_libraries(inkscape # order from automake - sp_LIB + #sp_LIB nrtype_LIB - inkscape_LIB - sp_LIB # annoying, we need both! + #inkscape_LIB + #sp_LIB # annoying, we need both! nrtype_LIB # annoying, we need both! dom_LIB diff --git a/src/box3d-context.cpp b/src/box3d-context.cpp index 912c67801..f270fa244 100644 --- a/src/box3d-context.cpp +++ b/src/box3d-context.cpp @@ -585,7 +585,7 @@ void Box3DContext::drag(guint state) { box3d_position_set(this->box3d); // status text - this->message_context->setF(Inkscape::NORMAL_MESSAGE, _("<b>3D Box</b>; with <b>Shift</b> to extrude along the Z axis")); + this->message_context->setF(Inkscape::NORMAL_MESSAGE, "%s", _("<b>3D Box</b>; with <b>Shift</b> to extrude along the Z axis")); } void Box3DContext::finishItem() { diff --git a/src/display/drawing-item.cpp b/src/display/drawing-item.cpp index a9836a9e3..1af07cb44 100644 --- a/src/display/drawing-item.cpp +++ b/src/display/drawing-item.cpp @@ -281,8 +281,15 @@ DrawingItem::setZOrder(unsigned z) _markForRendering(); } -void -DrawingItem::setItemBounds(Geom::OptRect const &bounds) +void DrawingItem::setItemBounds(Geom::OptRect const &bounds) +{ + if (!bounds) return; + Geom::IntRect copy = bounds->roundOutwards(); + if (_filter) _filter->area_enlarge(copy, this); + this->setFilterBounds(copy); +} + +void DrawingItem::setFilterBounds(Geom::OptRect const &bounds) { if (bounds) _filter_bbox = bounds; } @@ -352,10 +359,10 @@ DrawingItem::update(Geom::IntRect const &area, UpdateContext const &ctx, unsigne if (to_update & STATE_BBOX) { // compute drawbox - if (_filter && render_filters && _bbox) { - Geom::IntRect newbox(*_bbox); - _filter->area_enlarge(newbox, this); - _drawbox = Geom::OptIntRect(newbox); + if (_filter && render_filters && _filter_bbox) { + Geom::OptRect enlarged = _filter_bbox; + *enlarged *= ctm(); + _drawbox = enlarged->roundOutwards(); } else { _drawbox = _bbox; } diff --git a/src/display/drawing-item.h b/src/display/drawing-item.h index 8020659db..c69b996b4 100644 --- a/src/display/drawing-item.h +++ b/src/display/drawing-item.h @@ -113,6 +113,7 @@ public: void setMask(DrawingItem *item); void setZOrder(unsigned z); void setItemBounds(Geom::OptRect const &bounds); + void setFilterBounds(Geom::OptRect const &bounds); void setKey(unsigned key) { _key = key; } unsigned key() const { return _key; } diff --git a/src/display/nr-filter.cpp b/src/display/nr-filter.cpp index a0103cbb0..c0044c5d8 100644 --- a/src/display/nr-filter.cpp +++ b/src/display/nr-filter.cpp @@ -117,9 +117,7 @@ int Filter::render(Inkscape::DrawingItem const *item, DrawingContext &graphic, D // Get filter are, the filter_effect_area is already done in visualBounds Geom::OptRect filter_area = item->filterBounds(); // Use the geometricBounds as a backup solution - if (!filter_area || (filter_area->hasZeroArea() && - filter_area->min()[Geom::X] == 0 && filter_area->min()[Geom::Y] == 0)) - filter_area = item->geometricBounds(); + if (!filter_area) return 1; FilterUnits units(_filter_units, _primitive_units); units.set_ctm(trans); diff --git a/src/document.cpp b/src/document.cpp index 967d049c2..5e59a0a0c 100644 --- a/src/document.cpp +++ b/src/document.cpp @@ -450,6 +450,11 @@ SPDocument *SPDocument::createDoc(Inkscape::XML::Document *rdoc, document->setCurrentPersp3DImpl(persp_impl); } + // Set viewBox if it doesn't exist + if (!document->root->viewBox_set) { + document->setViewBox(Geom::Rect::from_xywh(0, 0, document->getWidth().quantity, document->getHeight().quantity)); + } + DocumentUndo::setUndoSensitive(document, true); // reset undo key when selection changes, so that same-key actions on different objects are not coalesced diff --git a/src/dom/CMakeLists.txt b/src/dom/CMakeLists.txt index 7c49466c2..c3078a8e3 100644 --- a/src/dom/CMakeLists.txt +++ b/src/dom/CMakeLists.txt @@ -38,7 +38,6 @@ set(dom_SRC smilimpl.h stylesheets.h svg.h - svg2.h svgimpl.h svgreader.h svgtypes.h diff --git a/src/dom/Makefile_insert b/src/dom/Makefile_insert index 25629efb2..6d222987e 100644 --- a/src/dom/Makefile_insert +++ b/src/dom/Makefile_insert @@ -27,7 +27,6 @@ dom_libdom_a_SOURCES = \ dom/smilimpl.cpp \ dom/smilimpl.h \ dom/stylesheets.h \ - dom/svg2.h \ dom/svg.h \ dom/svgimpl.cpp \ dom/svgimpl.h \ diff --git a/src/dom/svg2.h b/src/dom/svg2.h deleted file mode 100644 index 011bafbea..000000000 --- a/src/dom/svg2.h +++ /dev/null @@ -1,5560 +0,0 @@ -#ifndef SEEN_SVG_H -#define SEEN_SVG_H - -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright(C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or(at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * ======================================================================= - * NOTES - * - * This API follows: - * http://www.w3.org/TR/SVG11/svgdom.html - * - * This file defines the main SVG-DOM Node types. Other non-Node types are - * defined in svgtypes.h. - * - */ - - -// For access to DOM2 core -#include "dom/dom.h" - -// For access to DOM2 events -#include "dom/events.h" - -// For access to those parts from DOM2 CSS OM used by SVG DOM. -#include "dom/css.h" - -// For access to those parts from DOM2 Views OM used by SVG DOM. -#include "dom/views.h" - -// For access to the SMIL OM used by SVG DOM. -#include "dom/smil.h" - - -#include <math.h> - -#define SVG_NAMESPACE "http://www.w3.org/2000/svg" - - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace svg -{ - - -//local definitions -typedef dom::DOMString DOMString; -typedef dom::DOMException DOMException; -typedef dom::Element Element; -typedef dom::ElementPtr ElementPtr; -typedef dom::Document Document; -typedef dom::DocumentPtr DocumentPtr; -typedef dom::NodeList NodeList; - - - - -class SVGElement; -typedef Ptr<SVGElement> SVGElementPtr; -class SVGUseElement; -typedef Ptr<SVGUseElement> SVGUseElementPtr; -class SVGDocument; -typedef Ptr<SVGDocument> SVGDocumentPtr; - -/*######################################################################### -## SVGException -#########################################################################*/ - -/** - * - */ -class SVGException -{ -public: - - /** - * SVGExceptionCode - */ - typedef enum - { - SVG_WRONG_TYPE_ERR = 0, - SVG_INVALID_VALUE_ERR = 1, - SVG_MATRIX_NOT_INVERTABLE = 2 - } SVGExceptionCode; - - unsigned short code; -}; - - - - - - - -//######################################################################## -//######################################################################## -//# V A L U E S -//######################################################################## -//######################################################################## - - - - - -/*######################################################################### -## SVGAngle -#########################################################################*/ - -/** - * - */ -class SVGAngle -{ -public: - - /** - * Angle Unit Types - */ - typedef enum - { - SVG_ANGLETYPE_UNKNOWN = 0, - SVG_ANGLETYPE_UNSPECIFIED = 1, - SVG_ANGLETYPE_DEG = 2, - SVG_ANGLETYPE_RAD = 3, - SVG_ANGLETYPE_GRAD = 4 - } AngleUnitType; - - /** - * - */ - unsigned short getUnitType(); - - /** - * - */ - double getValue(); - - /** - * - */ - void setValue(double val) throw(DOMException); - - /** - * - */ - double getValueInSpecifiedUnits(); - - /** - * - */ - void setValueInSpecifiedUnits(double /*val*/) - throw(DOMException); - - /** - * - */ - DOMString getValueAsString(); - - /** - * - */ - void setValueAsString(const DOMString &/*val*/) - throw(DOMException); - - /** - * - */ - void newValueSpecifiedUnits(unsigned short /*unitType*/, - double /*valueInSpecifiedUnits*/); - - /** - * - */ - void convertToSpecifiedUnits(unsigned short /*unitType*/); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGAngle(); - - /** - * - */ - SVGAngle(const SVGAngle &other); - - /** - * - */ - ~SVGAngle(); - -protected: - - int unitType; - - double value; - -}; - - -/*######################################################################### -## SVGLength -#########################################################################*/ - -/** - * - */ -class SVGLength -{ -public: - - /** - * Length Unit Types - */ - typedef enum - { - SVG_LENGTHTYPE_UNKNOWN = 0, - SVG_LENGTHTYPE_NUMBER = 1, - SVG_LENGTHTYPE_PERCENTAGE = 2, - SVG_LENGTHTYPE_EMS = 3, - SVG_LENGTHTYPE_EXS = 4, - SVG_LENGTHTYPE_PX = 5, - SVG_LENGTHTYPE_CM = 6, - SVG_LENGTHTYPE_MM = 7, - SVG_LENGTHTYPE_IN = 8, - SVG_LENGTHTYPE_PT = 9, - SVG_LENGTHTYPE_PC = 10 - } LengthUnitType; - - /** - * - */ - unsigned short getUnitType(); - - /** - * - */ - double getValue(); - - /** - * - */ - void setValue(double val) throw(DOMException); - - /** - * - */ - double getValueInSpecifiedUnits(); - - /** - * - */ - void setValueInSpecifiedUnits(double /*val*/) throw(DOMException); - - /** - * - */ - DOMString getValueAsString(); - - /** - * - */ - void setValueAsString(const DOMString& /*val*/) throw(DOMException); - - /** - * - */ - void newValueSpecifiedUnits(unsigned short /*unitType*/, double /*val*/); - - /** - * - */ - void convertToSpecifiedUnits(unsigned short /*unitType*/); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGLength(); - - /** - * - */ - SVGLength(const SVGLength &other); - - /** - * - */ - ~SVGLength(); - -protected: - - int unitType; - - double value; - -}; - -/*######################################################################### -## SVGMatrix -#########################################################################*/ - -/** - * In SVG, a Matrix is defined like this: - * - * | a c e | - * | b d f | - * | 0 0 1 | - * - */ -class SVGMatrix -{ -public: - - - /** - * - */ - double getA(); - - /** - * - */ - void setA(double val) throw(DOMException); - - /** - * - */ - double getB(); - - /** - * - */ - void setB(double val) throw(DOMException); - - /** - * - */ - double getC(); - - /** - * - */ - void setC(double val) throw(DOMException); - - /** - * - */ - double getD(); - - /** - * - */ - void setD(double val) throw(DOMException); - - /** - * - */ - double getE(); - - /** - * - */ - void setE(double val) throw(DOMException); - - /** - * - */ - double getF(); - - /** - * - */ - void setF(double val) throw(DOMException); - - - /** - * Return the result of postmultiplying this matrix with another. - */ - SVGMatrix multiply(const SVGMatrix &other); - - /** - * Calculate the inverse of this matrix - * - * - * The determinant of a 3x3 matrix E - * (let's use our own notation for a bit) - * - * A B C - * D E F - * G H I - * is - * AEI - AFH - BDI + BFG + CDH - CEG - * - * Since in our affine transforms, G and H==0 and I==1, - * this reduces to: - * AE - BD - * In SVG's naming scheme, that is: a * d - c * b . SIMPLE! - * - * In a similar method of attack, SVG's adjunct matrix is: - * - * d -c cf-ed - * -b a eb-af - * 0 0 ad-cb - * - * To get the inverse matrix, we divide the adjunct matrix by - * the determinant. Notice that(ad-cb)/(ad-cb)==1. Very cool. - * So what we end up with is this: - * - * a = d/(ad-cb) c = -c/(ad-cb) e =(cf-ed)/(ad-cb) - * b = -b/(ad-cb) d = a/(ad-cb) f =(eb-af)/(ad-cb) - * - * (Since this would be in all SVG-DOM implementations, - * somebody needed to document this! ^^) - * - */ - SVGMatrix inverse() throw(SVGException); - - /** - * Equivalent to multiplying by: - * | 1 0 x | - * | 0 1 y | - * | 0 0 1 | - * - */ - SVGMatrix translate(double x, double y); - - /** - * Equivalent to multiplying by: - * | scale 0 0 | - * | 0 scale 0 | - * | 0 0 1 | - * - */ - SVGMatrix scale(double scale); - - /** - * Equivalent to multiplying by: - * | scaleX 0 0 | - * | 0 scaleY 0 | - * | 0 0 1 | - * - */ - SVGMatrix scaleNonUniform(double scaleX, double scaleY); - - /** - * Equivalent to multiplying by: - * | cos(a) -sin(a) 0 | - * | sin(a) cos(a) 0 | - * | 0 0 1 | - * - */ - SVGMatrix rotate(double angle); - - /** - * Equivalent to multiplying by: - * | cos(a) -sin(a) 0 | - * | sin(a) cos(a) 0 | - * | 0 0 1 | - * In this case, angle 'a' is computed as the artangent - * of the slope y/x . It is negative if the slope is negative. - */ - SVGMatrix rotateFromVector(double x, double y) throw(SVGException); - - /** - * Equivalent to multiplying by: - * | -1 0 0 | - * | 0 1 0 | - * | 0 0 1 | - * - */ - SVGMatrix flipX(); - - /** - * Equivalent to multiplying by: - * | 1 0 0 | - * | 0 -1 0 | - * | 0 0 1 | - * - */ - SVGMatrix flipY(); - - /** - * | 1 tan(a) 0 | - * | 0 1 0 | - * | 0 0 1 | - * - */ - SVGMatrix skewX(double angle); - - /** - * Equivalent to multiplying by: - * | 1 0 0 | - * | tan(a) 1 0 | - * | 0 0 1 | - * - */ - SVGMatrix skewY(double angle); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGMatrix(); - - /** - * - */ - SVGMatrix(double aArg, double bArg, double cArg, - double dArg, double eArg, double fArg); - - /** - * Copy constructor - */ - SVGMatrix(const SVGMatrix &other); - - /** - * - */ - ~SVGMatrix() {} - -protected: - -friend class SVGTransform; - - /* - * Set to the identify matrix - */ - void identity(); - - double a, b, c, d, e, f; - -}; - - -/*######################################################################### -## SVGNumber -#########################################################################*/ - -/** - * - */ -class SVGNumber -{ -public: - - /** - * - */ - double getValue(); - - /** - * - */ - void setValue(double val) throw(DOMException); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGNumber(); - - /** - * - */ - SVGNumber(const SVGNumber &other); - - /** - * - */ - ~SVGNumber(); - -protected: - - double value; - -}; - -/*######################################################################### -## SVGPoint -#########################################################################*/ - -/** - * - */ -class SVGPoint -{ -public: - - /** - * - */ - double getX(); - - /** - * - */ - void setX(double val) throw(DOMException); - - /** - * - */ - double getY(); - - /** - * - */ - void setY(double val) throw(DOMException); - - /** - * - */ - SVGPoint matrixTransform(const SVGMatrix &/*matrix*/); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPoint(); - - /** - * - */ - SVGPoint(const SVGPoint &other); - - /** - * - */ - ~SVGPoint(); - -protected: - - double x, y; -}; - - -/*######################################################################### -## SVGPathSeg -#########################################################################*/ - -/** - * - */ -class SVGPathSeg -{ -public: - - /** - * Path Segment Types - */ - typedef enum - { - PATHSEG_UNKNOWN = 0, - PATHSEG_CLOSEPATH = 1, - PATHSEG_MOVETO_ABS = 2, - PATHSEG_MOVETO_REL = 3, - PATHSEG_LINETO_ABS = 4, - PATHSEG_LINETO_REL = 5, - PATHSEG_CURVETO_CUBIC_ABS = 6, - PATHSEG_CURVETO_CUBIC_REL = 7, - PATHSEG_CURVETO_QUADRATIC_ABS = 8, - PATHSEG_CURVETO_QUADRATIC_REL = 9, - PATHSEG_ARC_ABS = 10, - PATHSEG_ARC_REL = 11, - PATHSEG_LINETO_HORIZONTAL_ABS = 12, - PATHSEG_LINETO_HORIZONTAL_REL = 13, - PATHSEG_LINETO_VERTICAL_ABS = 14, - PATHSEG_LINETO_VERTICAL_REL = 15, - PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16, - PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17, - PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18, - PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19 - } PathSegmentType; - - /** - * - */ - unsigned short getPathSegType(); - - /** - * - */ - DOMString getPathSegTypeAsLetter(); - - /** - * From the various subclasses - */ - - /** - * - */ - double getX(); - - /** - * - */ - void setX(double val) throw(DOMException); - - /** - * - */ - double getX1(); - - /** - * - */ - void setX1(double val) throw(DOMException); - - /** - * - */ - double getX2(); - - /** - * - */ - void setX2(double val) throw(DOMException); - - /** - * - */ - double getY(); - - /** - * - */ - void setY(double val) throw(DOMException); - - /** - * - */ - double getY1(); - - /** - * - */ - void setY1(double val) throw(DOMException); - - /** - * - */ - double getY2(); - - /** - * - */ - void setY2(double val) throw(DOMException); - - /** - * - */ - double getR1(); - - /** - * - */ - void setR1(double val) throw(DOMException); - - /** - * - */ - double getR2(); - - /** - * - */ - void setR2(double val) throw(DOMException); - - /** - * - */ - double getAngle(); - - /** - * - */ - void setAngle(double val) throw(DOMException); - - /** - * - */ - bool getLargeArcFlag(); - - /** - * - */ - void setLargeArcFlag(bool val) throw(DOMException); - - /** - * - */ - bool getSweepFlag(); - - /** - * - */ - void setSweepFlag(bool val) throw(DOMException); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPathSeg(); - - /** - * - */ - SVGPathSeg(int typeArg); - - /** - * - */ - SVGPathSeg(const SVGPathSeg &other); - - /** - * - */ - SVGPathSeg &operator=(const SVGPathSeg &other); - - /** - * - */ - ~SVGPathSeg(); - -protected: - - void init(); - - void assign(const SVGPathSeg &other); - - int type; - double x, y, x1, y1, x2, y2; - double r1, r2; - double angle; - bool largeArcFlag; - bool sweepFlag; -}; - - -/*######################################################################### -## SVGPreserveAspectRatio -#########################################################################*/ - -/** - * - */ -class SVGPreserveAspectRatio -{ -public: - - - /** - * Alignment Types - */ - typedef enum - { - SVG_PRESERVEASPECTRATIO_UNKNOWN = 0, - SVG_PRESERVEASPECTRATIO_NONE = 1, - SVG_PRESERVEASPECTRATIO_XMINYMIN = 2, - SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3, - SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4, - SVG_PRESERVEASPECTRATIO_XMINYMID = 5, - SVG_PRESERVEASPECTRATIO_XMIDYMID = 6, - SVG_PRESERVEASPECTRATIO_XMAXYMID = 7, - SVG_PRESERVEASPECTRATIO_XMINYMAX = 8, - SVG_PRESERVEASPECTRATIO_XMIDYMAX = 9, - SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10 - } AlignmentType; - - - /** - * Meet-or-slice Types - */ - typedef enum - { - SVG_MEETORSLICE_UNKNOWN = 0, - SVG_MEETORSLICE_MEET = 1, - SVG_MEETORSLICE_SLICE = 2 - } MeetOrSliceType; - - - /** - * - */ - unsigned short getAlign(); - - /** - * - */ - void setAlign(unsigned short val) throw(DOMException); - - /** - * - */ - unsigned short getMeetOrSlice(); - - /** - * - */ - void setMeetOrSlice(unsigned short val) throw(DOMException); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPreserveAspectRatio(); - - /** - * - */ - SVGPreserveAspectRatio(const SVGPreserveAspectRatio &other); - - /** - * - */ - ~SVGPreserveAspectRatio(); - -protected: - - unsigned short align; - unsigned short meetOrSlice; - -}; - - - -/*######################################################################### -## SVGRect -#########################################################################*/ - -/** - * - */ -class SVGRect -{ -public: - - /** - * - */ - double getX(); - - /** - * - */ - void setX(double val) throw(DOMException); - - /** - * - */ - double getY(); - - /** - * - */ - void setY(double val) throw(DOMException); - - /** - * - */ - double getWidth(); - - /** - * - */ - void setWidth(double val) throw(DOMException); - - /** - * - */ - double getHeight(); - - /** - * - */ - void setHeight(double val) throw(DOMException); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGRect(); - - /** - * - */ - SVGRect(const SVGRect &other); - - /** - * - */ - ~SVGRect(); - -protected: - - double x, y, width, height; - -}; - -/*######################################################################### -## SVGTransform -#########################################################################*/ - -/** - * - */ -class SVGTransform -{ -public: - - /** - * Transform Types - */ - typedef enum - { - SVG_TRANSFORM_UNKNOWN = 0, - SVG_TRANSFORM_MATRIX = 1, - SVG_TRANSFORM_TRANSLATE = 2, - SVG_TRANSFORM_SCALE = 3, - SVG_TRANSFORM_ROTATE = 4, - SVG_TRANSFORM_SKEWX = 5, - SVG_TRANSFORM_SKEWY = 6, - } TransformType; - - /** - * - */ - unsigned short getType(); - - - /** - * - */ - SVGMatrix getMatrix(); - - /** - * - */ - double getAngle(); - - /** - * - */ - void setMatrix(const SVGMatrix &matrixArg); - - /** - * - */ - void setTranslate(double tx, double ty); - - /** - * - */ - void setScale(double sx, double sy); - - /** - * - */ - void setRotate(double angleArg, double cx, double cy); - - /** - * - */ - void setSkewX(double angleArg); - - /** - * - */ - void setSkewY(double angleArg); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGTransform(); - - /** - * - */ - SVGTransform(const SVGTransform &other); - - /** - * - */ - ~SVGTransform(); - -protected: - - int type; - double angle; - - SVGMatrix matrix; -}; - - - - -/*######################################################################### -## SVGUnitTypes -#########################################################################*/ - -/** - * - */ -class SVGUnitTypes -{ -public: - - /** - * Unit Types - */ - typedef enum - { - SVG_UNIT_TYPE_UNKNOWN = 0, - SVG_UNIT_TYPE_USERSPACEONUSE = 1, - SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2 - } UnitType; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGUnitTypes(); - - /** - * - */ - ~SVGUnitTypes(); - -}; - - - - -/*######################################################################### -## SVGValue -#########################################################################*/ - -/** - * This is a helper class that will hold several types of data. It will - * be used in those situations where methods are common to different - * interfaces, except for the data type. This class holds the following: - * SVGAngle - * SVGBoolean - * SVGEnumeration - * SVGInteger - * SVGLength - * SVGNumber - * SVGPreserveAspectRatio - * SVGRect - * SVGString - */ -class SVGValue -{ -public: - - /** - * - */ - typedef enum - { - SVG_ANGLE, - SVG_BOOLEAN, - SVG_ENUMERATION, - SVG_INTEGER, - SVG_LENGTH, - SVG_NUMBER, - SVG_PRESERVE_ASPECT_RATIO, - SVG_RECT, - SVG_STRING, - } SVGValueType; - - /** - * Constructor - */ - SVGValue(); - - /** - * Copy constructor - */ - SVGValue(const SVGValue &other); - - /** - * Assignment - */ - SVGValue &operator=(const SVGValue &other); - - /** - * - */ - ~SVGValue(); - - //########################### - // TYPES - //########################### - - /** - * Angle - */ - SVGValue(const SVGAngle &v); - - SVGAngle angleValue(); - - /** - * Boolean - */ - SVGValue(bool v); - - bool booleanValue(); - - - /** - * Enumeration - */ - SVGValue(short v); - - short enumerationValue(); - - /** - * Integer - */ - SVGValue(long v); - - long integerValue(); - - /** - * Length - */ - SVGValue(const SVGLength &v); - - SVGLength lengthValue(); - - /** - * Number - */ - SVGValue(double v); - - double numberValue(); - - /** - * PathSegment - */ - SVGValue(const SVGPathSeg &v); - - SVGPathSeg pathDataValue(); - - - /** - * Points - */ - SVGValue(const SVGPoint &v); - - SVGPoint pointValue(); - - - /** - * PreserveAspectRatio - */ - SVGValue(const SVGPreserveAspectRatio &v); - - SVGPreserveAspectRatio preserveAspectRatioValue(); - - /** - * Rect - */ - SVGValue(const SVGRect &v); - - SVGRect rectValue(); - - /** - * String - */ - SVGValue(const DOMString &v); - - DOMString stringValue(); - - /** - * TransformList - */ - SVGValue(const SVGTransform &v); - - SVGTransform transformValue(); - - -private: - - void init(); - - void assign(const SVGValue &other); - - short type; - SVGAngle angleval; // SVGAngle - bool bval; // SVGBoolean - short eval; // SVGEnumeration - long ival; // SVGInteger - SVGLength lengthval; // SVGLength - double dval; // SVGNumber - SVGPathSeg segval; // SVGPathSeg - SVGPoint pointval; // SVGPoint - SVGPreserveAspectRatio parval; // SVGPreserveAspectRatio - SVGRect rval; // SVGRect - DOMString sval; // SVGString - SVGTransform transformval; // SVGTransform - -}; - - -/*######################################################################### -## SVGValueList -#########################################################################*/ - -/** - * THis is used to generify a bit the several different types of lists: - * - * SVGLengthList -> SVGValueList<SVGLength> - * SVGValueList -> SVGValueList<SVGNumber> - * SVGPathData -> SVGValueList<SVGPathSeg> - * SVGPoints -> SVGValueList<SVGPoint> - * SVGTransformList -> SVGValueList<SVGTransform> - */ -class SVGValueList -{ -public: - - /** - * - */ - typedef enum - { - SVG_LIST_LENGTH, - SVG_LIST_NUMBER, - SVG_LIST_PATHSEG, - SVG_LIST_POINT, - SVG_LIST_TRANSFORM - } SVGValueListTypes; - - /** - * - */ - unsigned long getNumberOfItems(); - - - /** - * - */ - void clear() throw(DOMException); - - /** - * - */ - SVGValue getItem(unsigned long index) throw(DOMException); - - /** - * - */ - SVGValue insertItemBefore(const SVGValue &newItem, - unsigned long index) - throw(DOMException, SVGException); - - /** - * - */ - SVGValue replaceItem(const SVGValue &newItem, - unsigned long index) - throw(DOMException, SVGException); - - /** - * - */ - SVGValue removeItem(unsigned long index) throw(DOMException); - - /** - * - */ - SVGValue appendItem(const SVGValue &newItem) - throw(DOMException, SVGException); - - /** - * Matrix - */ - SVGValue initialize(const SVGValue &newItem) - throw(DOMException, SVGException); - - /** - * Matrix - */ - SVGValue createSVGTransformFromMatrix(const SVGValue &matrix); - - /** - * Matrix - */ - SVGValue consolidate(); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGValueList(); - - /** - * - */ - SVGValueList(const SVGValueList &other); - - /** - * - */ - ~SVGValueList(); - -protected: - - std::vector<SVGValue> items; - -}; - - - - - -/*######################################################################### -## SVGAnimatedValue -#########################################################################*/ - -/** - * This class is used to merge all of the "Animated" values, with only - * a different type, into a single API. This class subsumes the following: - * SVGAnimatedValue - * SVGAnimatedValue - * SVGAnimatedValue - * SVGAnimatedValue - * SVGAnimatedValue - * SVGAnimatedValue - * SVGAnimatedPathData - * SVGAnimatedPoints - * SVGAnimatedPreserveAspectRatio - * SVGAnimatedValue - * SVGAnimatedValue - */ -class SVGAnimatedValue -{ -public: - - /** - * - */ - SVGValue &getBaseVal(); - - /** - * - */ - void setBaseVal(const SVGValue &val) throw (DOMException); - - /** - * - */ - SVGValue &getAnimVal(); - - /** - * - */ - SVGAnimatedValue(); - - /** - * - */ - SVGAnimatedValue(const SVGValue &baseValue); - - /** - * - */ - SVGAnimatedValue(const SVGValue &baseValue, const SVGValue &animValue); - - /** - * - */ - SVGAnimatedValue(const SVGAnimatedValue &other); - - /** - * - */ - SVGAnimatedValue &operator=(const SVGAnimatedValue &other); - - /** - * - */ - SVGAnimatedValue &operator=(const SVGValue &baseVal); - - /** - * - */ - ~SVGAnimatedValue(); - -private: - - void init(); - - void assign(const SVGAnimatedValue &other); - - SVGValue baseVal; - - SVGValue animVal; - -}; - - -/*######################################################################### -## SVGAnimatedValueList -#########################################################################*/ - -/** - * This class is used to merge all of the "Animated" values, with only - * a different type, into a single API. This class subsumes the following: - * SVGAnimatedValueList - * SVGAnimatedValueList - * SVGAnimatedTransformList - */ -class SVGAnimatedValueList -{ -public: - - /** - * - */ - SVGValueList &getBaseVal(); - - /** - * - */ - void setBaseVal(const SVGValueList &val) throw (DOMException); - - /** - * - */ - SVGValueList &getAnimVal(); - - /** - * - */ - SVGAnimatedValueList(); - - /** - * - */ - SVGAnimatedValueList(const SVGValueList &baseValue); - - /** - * - */ - SVGAnimatedValueList(const SVGValueList &baseValue, const SVGValueList &animValue); - - /** - * - */ - SVGAnimatedValueList(const SVGAnimatedValueList &other); - - /** - * - */ - SVGAnimatedValueList &operator=(const SVGAnimatedValueList &other); - - /** - * - */ - SVGAnimatedValueList &operator=(const SVGValueList &baseVal); - - /** - * - */ - ~SVGAnimatedValueList(); - -private: - - void init(); - - void assign(const SVGAnimatedValueList &other); - - SVGValueList baseVal; - - SVGValueList animVal; - -}; - - - -/*######################################################################### -## SVGICCColor -#########################################################################*/ - -/** - * - */ -class SVGICCColor -{ -public: - - /** - * - */ - DOMString getColorProfile(); - - /** - * - */ - void setColorProfile(const DOMString &val) throw(DOMException); - - /** - * - */ - SVGValueList &getColors(); - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGICCColor(); - - /** - * - */ - SVGICCColor(const SVGICCColor &other); - - /** - * - */ - ~SVGICCColor(); - -protected: - - DOMString colorProfile; - - SVGValueList colors; - -}; - - - -/*######################################################################### -## SVGColor -#########################################################################*/ - -/** - * - */ -class SVGColor : public css::CSSValue -{ -public: - - - /** - * Color Types - */ - typedef enum - { - SVG_COLORTYPE_UNKNOWN = 0, - SVG_COLORTYPE_RGBCOLOR = 1, - SVG_COLORTYPE_RGBCOLOR_ICCCOLOR = 2, - SVG_COLORTYPE_CURRENTCOLOR = 3 - } ColorType; - - - /** - * - */ - unsigned short getColorType(); - - /** - * - */ - css::RGBColor getRgbColor(); - - /** - * - */ - SVGICCColor getIccColor(); - - - /** - * - */ - void setRGBColor(const DOMString& /*rgbColor*/) - throw(SVGException); - - /** - * - */ - void setRGBColorICCColor(const DOMString& /*rgbColor*/, - const DOMString& /*iccColor*/) - throw(SVGException); - - /** - * - */ - void setColor(unsigned short /*colorType*/, - const DOMString& /*rgbColor*/, - const DOMString& /*iccColor*/) - throw(SVGException); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGColor(); - - /** - * - */ - SVGColor(const SVGColor &other); - - /** - * - */ - ~SVGColor(); - -protected: - - int colorType; - -}; - - - -/*######################################################################### -## SVGPaint -#########################################################################*/ - -/** - * - */ -class SVGPaint : public SVGColor -{ -public: - - /** - * Paint Types - */ - typedef enum - { - SVG_PAINTTYPE_UNKNOWN = 0, - SVG_PAINTTYPE_RGBCOLOR = 1, - SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR = 2, - SVG_PAINTTYPE_NONE = 101, - SVG_PAINTTYPE_CURRENTCOLOR = 102, - SVG_PAINTTYPE_URI_NONE = 103, - SVG_PAINTTYPE_URI_CURRENTCOLOR = 104, - SVG_PAINTTYPE_URI_RGBCOLOR = 105, - SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR = 106, - SVG_PAINTTYPE_URI = 107 - } PaintType; - - - /** - * - */ - unsigned short getPaintType(); - - /** - * - */ - DOMString getUri(); - - /** - * - */ - void setUri(const DOMString& uriArg); - - /** - * - */ - void setPaint(unsigned short paintTypeArg, - const DOMString& uriArg, - const DOMString& /*rgbColor*/, - const DOMString& /*iccColor*/) - throw(SVGException); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPaint(); - - /** - * - */ - SVGPaint(const SVGPaint &other); - - /** - * - */ - ~SVGPaint(); - -protected: - - unsigned int paintType; - DOMString uri; - -}; - - - - -//######################################################################## -//######################################################################## -//# I N T E R F A C E S -//######################################################################## -//######################################################################## - - - - - - - -/*######################################################################### -## SVGStylable -#########################################################################*/ - -/** - * - */ -class SVGStylable -{ -public: - - /** - * - */ - SVGAnimatedValue getClassName(); - - /** - * - */ - css::CSSStyleDeclaration getStyle(); - - - /** - * - */ - css::CSSValue getPresentationAttribute(const DOMString& /*name*/); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGStylable(); - - /** - * - */ - SVGStylable(const SVGStylable &other); - - /** - * - */ - ~SVGStylable(); - -protected: - - SVGAnimatedValue className; - css::CSSStyleDeclaration style; - -}; - - - - - -/*######################################################################### -## SVGLocatable -#########################################################################*/ - -/** - * - */ -class SVGLocatable -{ -public: - - /** - * - */ - SVGElementPtr getNearestViewportElement(); - - /** - * - */ - SVGElementPtr getFarthestViewportElement(); - - /** - * - */ - SVGRect getBBox(); - - /** - * - */ - SVGMatrix getCTM(); - - /** - * - */ - SVGMatrix getScreenCTM(); - - /** - * - */ - SVGMatrix getTransformToElement(const SVGElement &/*element*/) - throw(SVGException); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGLocatable(); - - /** - * - */ - SVGLocatable(const SVGLocatable &/*other*/); - - /** - * - */ - ~SVGLocatable(); - -protected: - - SVGRect bbox; - SVGMatrix ctm; - SVGMatrix screenCtm; - -}; - - -/*######################################################################### -## SVGTransformable -#########################################################################*/ - -/** - * - */ -class SVGTransformable : public SVGLocatable -{ -public: - - - /** - * - */ - SVGAnimatedValueList &getTransform(); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGTransformable(); - - /** - * - */ - SVGTransformable(const SVGTransformable &other); - - /** - * - */ - ~SVGTransformable(); - -protected: - - SVGAnimatedValueList transforms; -}; - - - -/*######################################################################### -## SVGTests -#########################################################################*/ - -/** - * - */ -class SVGTests -{ -public: - - /** - * - */ - SVGValueList &getRequiredFeatures(); - - /** - * - */ - SVGValueList &getRequiredExtensions(); - - /** - * - */ - SVGValueList &getSystemLanguage(); - - /** - * - */ - bool hasExtension(const DOMString& /*extension*/); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGTests(); - - /** - * - */ - SVGTests(const SVGTests &other); - - /** - * - */ - ~SVGTests(); - -protected: - - SVGValueList requiredFeatures; - SVGValueList requiredExtensions; - SVGValueList systemLanguage; - -}; - - - - - - -/*######################################################################### -## SVGLangSpace -#########################################################################*/ - -/** - * - */ -class SVGLangSpace -{ -public: - - - /** - * - */ - DOMString getXmlLang(); - - /** - * - */ - void setXmlLang(const DOMString &val) throw(DOMException); - - /** - * - */ - DOMString getXmlSpace(); - - /** - * - */ - void setXmlSpace(const DOMString &val) throw(DOMException); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGLangSpace(); - - /** - * - */ - SVGLangSpace(const SVGLangSpace &other); - - /** - * - */ - ~SVGLangSpace(); - -protected: - - DOMString xmlLang; - DOMString xmlSpace; - -}; - - - -/*######################################################################### -## SVGExternalResourcesRequired -#########################################################################*/ - -/** - * - */ -class SVGExternalResourcesRequired -{ -public: - - /** - * boolean - */ - SVGAnimatedValue getExternalResourcesRequired(); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGExternalResourcesRequired(); - - /** - * - */ - SVGExternalResourcesRequired(const SVGExternalResourcesRequired &other); - - /** - * - */ - ~SVGExternalResourcesRequired(); - -protected: - - SVGAnimatedValue required; //boolean - -}; - - - - - - - - - -/*######################################################################### -## SVGFitToViewBox -#########################################################################*/ - -/** - * - */ -class SVGFitToViewBox -{ -public: - - /** - * rect - */ - SVGAnimatedValue getViewBox(); - - /** - * preserveAspectRatio - */ - SVGAnimatedValue getPreserveAspectRatio(); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGFitToViewBox(); - - /** - * - */ - SVGFitToViewBox(const SVGFitToViewBox &other); - - /** - * - */ - ~SVGFitToViewBox(); - -protected: - - SVGAnimatedValue viewBox; //rect - SVGAnimatedValue preserveAspectRatio; - -}; - - -/*######################################################################### -## SVGZoomAndPan -#########################################################################*/ - -/** - * - */ -class SVGZoomAndPan -{ -public: - - /** - * Zoom and Pan Types - */ - typedef enum - { - SVG_ZOOMANDPAN_UNKNOWN = 0, - SVG_ZOOMANDPAN_DISABLE = 1, - SVG_ZOOMANDPAN_MAGNIFY = 2 - } ZoomAndPanType; - - /** - * - */ - unsigned short getZoomAndPan(); - - /** - * - */ - void setZoomAndPan(unsigned short val) throw(DOMException); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGZoomAndPan(); - - /** - * - */ - SVGZoomAndPan(const SVGZoomAndPan &other); - - /** - * - */ - ~SVGZoomAndPan(); - -protected: - - unsigned short zoomAndPan; - -}; - - - - - - -/*######################################################################### -## SVGViewSpec -#########################################################################*/ - -/** - * - */ -class SVGViewSpec : public SVGZoomAndPan, - public SVGFitToViewBox -{ -public: - - /** - * - */ - SVGValueList getTransform(); - - /** - * - */ - SVGElementPtr getViewTarget(); - - /** - * - */ - DOMString getViewBoxString(); - - /** - * - */ - DOMString getPreserveAspectRatioString(); - - /** - * - */ - DOMString getTransformString(); - - /** - * - */ - DOMString getViewTargetString(); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGViewSpec(); - - /** - * - */ - SVGViewSpec(const SVGViewSpec &other); - - /** - * - */ - ~SVGViewSpec(); - -protected: - - SVGElementPtr viewTarget; - SVGValueList transform; -}; - - -/*######################################################################### -## SVGURIReference -#########################################################################*/ - -/** - * - */ -class SVGURIReference -{ -public: - - /** - * string - */ - SVGAnimatedValue getHref(); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGURIReference(); - - /** - * - */ - SVGURIReference(const SVGURIReference &other); - - /** - * - */ - ~SVGURIReference(); - -protected: - - SVGAnimatedValue href; - -}; - - - - - - -/*######################################################################### -## SVGCSSRule -#########################################################################*/ - -/** - * - */ -class SVGCSSRule : public css::CSSRule -{ -public: - - - /** - * Additional CSS RuleType to support ICC color specifications - */ - typedef enum - { - COLOR_PROFILE_RULE = 7 - } ColorProfileRuleType; - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGCSSRule(); - - /** - * - */ - SVGCSSRule(const SVGCSSRule &other); - - /** - * - */ - ~SVGCSSRule(); - -}; - - - -/*######################################################################### -## SVGRenderingIntent -#########################################################################*/ - -/** - * - */ -class SVGRenderingIntent -{ -public: - - /** - * Rendering Intent Types - */ - typedef enum - { - RENDERING_INTENT_UNKNOWN = 0, - RENDERING_INTENT_AUTO = 1, - RENDERING_INTENT_PERCEPTUAL = 2, - RENDERING_INTENT_RELATIVE_COLORIMETRIC = 3, - RENDERING_INTENT_SATURATION = 4, - RENDERING_INTENT_ABSOLUTE_COLORIMETRIC = 5 - } RenderingIntentType; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGRenderingIntent(); - - /** - * - */ - SVGRenderingIntent(const SVGRenderingIntent &other); - - /** - * - */ - ~SVGRenderingIntent(); - -protected: - - unsigned short renderingIntentType; -}; - - - - - - - - - -/*######################################################################### -## SVGColorProfileRule -#########################################################################*/ - -/** - * - */ -class SVGColorProfileRule : public SVGCSSRule, - public SVGRenderingIntent -{ - -public: - - /** - * - */ - DOMString getSrc(); - - /** - * - */ - void setSrc(const DOMString &val) throw(DOMException); - - /** - * - */ - DOMString getName(); - - /** - * - */ - void setName(const DOMString &val) throw(DOMException); - - /** - * - */ - unsigned short getRenderingIntent(); - - /** - * - */ - void setRenderingIntent(unsigned short val) throw(DOMException); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGColorProfileRule(); - - /** - * - */ - SVGColorProfileRule(const SVGColorProfileRule &other); - - /** - * - */ - ~SVGColorProfileRule(); - -protected: - - unsigned short renderingIntent; - DOMString src; - DOMString name; - -}; - - - -/*######################################################################### -## SVGFilterPrimitiveStandardAttributes -#########################################################################*/ - -/** - * - */ -class SVGFilterPrimitiveStandardAttributes : public SVGStylable -{ -public: - - /** - * length - */ - SVGAnimatedValue getX(); - - /** - * length - */ - SVGAnimatedValue getY(); - - /** - * length - */ - SVGAnimatedValue getWidth(); - - /** - * length - */ - SVGAnimatedValue getHeight(); - - /** - * string - */ - SVGAnimatedValue getResult(); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGFilterPrimitiveStandardAttributes(); - - /** - * - */ - SVGFilterPrimitiveStandardAttributes( - const SVGFilterPrimitiveStandardAttributes &other); - - /** - * - */ - ~SVGFilterPrimitiveStandardAttributes(); - -protected: - - SVGAnimatedValue x; - SVGAnimatedValue y; - SVGAnimatedValue width; - SVGAnimatedValue height; - SVGAnimatedValue result; - -}; - - -/*######################################################################### -## SVGEvent -#########################################################################*/ - -/** - * - */ -class SVGEvent : events::Event -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGEvent(); - - /** - * - */ - SVGEvent(const SVGEvent &other); - - /** - * - */ - ~SVGEvent(); - -}; - - - - -/*######################################################################### -## SVGZoomEvent -#########################################################################*/ - -/** - * - */ -class SVGZoomEvent : events::UIEvent -{ -public: - - /** - * - */ - SVGRect getZoomRectScreen(); - - /** - * - */ - double getPreviousScale(); - - /** - * - */ - SVGPoint getPreviousTranslate(); - - /** - * - */ - double getNewScale(); - - /** - * - */ - SVGPoint getNewTranslate(); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGZoomEvent(); - - /** - * - */ - SVGZoomEvent(const SVGZoomEvent &other); - - /** - * - */ - ~SVGZoomEvent(); - -protected: - - SVGRect zoomRectScreen; - double previousScale; - SVGPoint previousTranslate; - double newScale; - SVGPoint newTranslate; - -}; - - - -/*######################################################################### -## SVGElementInstance -#########################################################################*/ - -/** - * - */ -class SVGElementInstance : public events::EventTarget -{ -public: - - /** - * - */ - SVGElementPtr getCorrespondingElement(); - - /** - * - */ - SVGUseElementPtr getCorrespondingUseElement(); - - /** - * - */ - SVGElementInstance getParentNode(); - - /** - * Since we are using stack types and this is a circular definition, - * we will instead implement this as a global function below: - * SVGElementInstanceList getChildNodes(const SVGElementInstance instance); - */ - //SVGElementInstanceList getChildNodes(); - - /** - * - */ - SVGElementInstance getFirstChild(); - - /** - * - */ - SVGElementInstance getLastChild(); - - /** - * - */ - SVGElementInstance getPreviousSibling(); - - /** - * - */ - SVGElementInstance getNextSibling(); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGElementInstance(); - - /** - * - */ - SVGElementInstance(const SVGElementInstance &other); - - /** - * - */ - ~SVGElementInstance(); - -protected: - - SVGElementPtr correspondingElement; - SVGUseElementPtr correspondingUseElement; - -}; - - - - - - -/*######################################################################### -## SVGElementInstanceList -#########################################################################*/ - -/** - * - */ -class SVGElementInstanceList -{ -public: - - /** - * - */ - unsigned long getLength(); - - /** - * - */ - SVGElementInstance item(unsigned long index); - - /** - * This static method replaces the circular definition of: - * SVGElementInstanceList SVGElementInstance::getChildNodes() - * - */ - static SVGElementInstanceList getChildNodes(const SVGElementInstance &/*instance*/); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGElementInstanceList(); - - /** - * - */ - SVGElementInstanceList(const SVGElementInstanceList &other); - - /** - * - */ - ~SVGElementInstanceList(); - -protected: - - std::vector<SVGElementInstance> items; - - -}; - - - - - - - - -//######################################################################## -//######################################################################## -//######################################################################## -//# D O M -//######################################################################## -//######################################################################## -//######################################################################## - - - - - -/*######################################################################### -## Types -#########################################################################*/ - -/** - * Bitmasks for has_an interface for SVGElement - */ -#define SVG_ANGLE 0x00000001 -#define SVG_ANIMATED_ANGLE 0x00000002 -#define SVG_ANIMATED_BOOLEAN 0x00000004 -#define SVG_ANIMATED_ENUMERATION 0x00000008 -#define SVG_ANIMATED_INTEGER 0x00000010 -#define SVG_ANIMATED_LENGTH 0x00000020 -#define SVG_ANIMATED_LENGTH_LIST 0x00000040 -#define SVG_ANIMATED_NUMBER 0x00000080 -#define SVG_ANIMATED_NUMBER_LIST 0x00000100 -#define SVG_ANIMATED_RECT 0x00000200 -#define SVG_ANIMATED_STRING 0x00000400 -#define SVG_COLOR 0x00000800 -#define SVG_CSS_RULE 0x00001000 -#define SVG_EXTERNAL_RESOURCES_REQUIRED 0x00002000 -#define SVG_FIT_TO_VIEWBOX 0x00004000 -#define SVG_ICCCOLOR 0x00008000 -#define SVG_LANG_SPACE 0x00010000 -#define SVG_LENGTH 0x00020000 -#define SVG_LENGTH_LIST 0x00040000 -#define SVG_LOCATABLE 0x00080000 -#define SVG_NUMBER 0x00100000 -#define SVG_NUMBER_LIST 0x00200000 -#define SVG_RECT 0x00400000 -#define SVG_RENDERING_INTENT 0x00800000 -#define SVG_STRING_LIST 0x01000000 -#define SVG_STYLABLE 0x02000000 -#define SVG_TESTS 0x04000000 -#define SVG_TRANSFORMABLE 0x08000000 -#define SVG_UNIT_TYPES 0x10000000 -#define SVG_URI_REFERENCE 0x20000000 -#define SVG_VIEW_SPEC 0x40000000 -#define SVG_ZOOM_AND_PAN 0x80000000 - -/** - * How many above? Quite handy - */ -#define SVG_NR_INTERFACES 32 - - -/** - * Enumerations for SVGElement types - */ -typedef enum -{ - SVG_A_ELEMENT = 0, - SVG_ALTGLYPH_ELEMENT, - SVG_ALTGLYPHDEF_ELEMENT, - SVG_ALTGLYPHITEM_ELEMENT, - SVG_ANIMATE_ELEMENT, - SVG_ANIMATECOLOR_ELEMENT, - SVG_ANIMATEMOTION_ELEMENT, - SVG_ANIMATETRANSFORM_ELEMENT, - SVG_CIRCLE_ELEMENT, - SVG_CLIPPATH_ELEMENT, - SVG_COLOR_PROFILE_ELEMENT, - SVG_CURSOR_ELEMENT, - SVG_DEFINITION_SRC_ELEMENT, - SVG_DEFS_ELEMENT, - SVG_DESC_ELEMENT, - SVG_ELLIPSE_ELEMENT, - SVG_FEBLEND_ELEMENT, - SVG_FECOLORMATRIX_ELEMENT, - SVG_FECOMPONENTTRANSFER_ELEMENT, - SVG_FECOMPOSITE_ELEMENT, - SVG_FECONVOLVEMATRIX_ELEMENT, - SVG_FEDIFFUSELIGHTING_ELEMENT, - SVG_FEDISPLACEMENTMAP_ELEMENT, - SVG_FEDISTANTLIGHT_ELEMENT, - SVG_FEFLOOD_ELEMENT, - SVG_FEFUNCA_ELEMENT, - SVG_FEFUNCB_ELEMENT, - SVG_FEFUNCG_ELEMENT, - SVG_FEFUNCR_ELEMENT, - SVG_FEGAUSSIANBLUR_ELEMENT, - SVG_FEIMAGE_ELEMENT, - SVG_FEMERGE_ELEMENT, - SVG_FEMERGENODE_ELEMENT, - SVG_FEMORPHOLOGY_ELEMENT, - SVG_FEOFFSET_ELEMENT, - SVG_FEPOINTLIGHT_ELEMENT, - SVG_FESPECULARLIGHTING_ELEMENT, - SVG_FESPOTLIGHT_ELEMENT, - SVG_FETILE_ELEMENT, - SVG_FETURBULENCE_ELEMENT, - SVG_FILTER_ELEMENT, - SVG_FONT_ELEMENT, - SVG_FONT_FACE_ELEMENT, - SVG_FONT_FACE_FORMAT_ELEMENT, - SVG_FONT_FACE_NAME_ELEMENT, - SVG_FONT_FACE_SRC_ELEMENT, - SVG_FONT_FACE_URI_ELEMENT, - SVG_FOREIGNOBJECT_ELEMENT, - SVG_G_ELEMENT, - SVG_GLYPH_ELEMENT, - SVG_GLYPHREF_ELEMENT, - SVG_HKERN_ELEMENT, - SVG_IMAGE_ELEMENT, - SVG_LINE_ELEMENT, - SVG_LINEARGRADIENT_ELEMENT, - SVG_MARKER_ELEMENT, - SVG_MASK_ELEMENT, - SVG_METADATA_ELEMENT, - SVG_MISSING_GLYPH_ELEMENT, - SVG_MPATH_ELEMENT, - SVG_PATH_ELEMENT, - SVG_PATTERN_ELEMENT, - SVG_POLYGON_ELEMENT, - SVG_POLYLINE_ELEMENT, - SVG_RADIALGRADIENT_ELEMENT, - SVG_RECT_ELEMENT, - SVG_SCRIPT_ELEMENT, - SVG_SET_ELEMENT, - SVG_STOP_ELEMENT, - SVG_STYLE_ELEMENT, - SVG_SVG_ELEMENT, - SVG_SWITCH_ELEMENT, - SVG_SYMBOL_ELEMENT, - SVG_TEXT_ELEMENT, - SVG_TEXTPATH_ELEMENT, - SVG_TITLE_ELEMENT, - SVG_TREF_ELEMENT, - SVG_TSPAN_ELEMENT, - SVG_USE_ELEMENT, - SVG_VIEW_ELEMENT, - SVG_VKERN_ELEMENT, - SVG_MAX_ELEMENT -} SVGElementType; - - - - -/** - * Look up the SVG Element type enum for a given string - * Return -1 if not found - */ -int svgElementStrToEnum(const char *str); - - -/** - * Return the string corresponding to a given SVG element type enum - * Return "unknown" if not found - */ -const char *svgElementEnumToStr(int type); - - - - -/*######################################################################### -## SVGElement -#########################################################################*/ - -/** - * All of the SVG DOM interfaces that correspond directly to elements in the SVG - * language(e.g., the SVGPathElement interface corresponds directly to the - * 'path' element in the language) are derivative from base class SVGElement. - */ -class SVGElement : public Element -{ -public: - - //#################################################################### - //# BASE METHODS FOR SVGElement - //#################################################################### - - /** - * Get the value of the id attribute on the given element. - */ - DOMString getId(); - - /** - * Set the value of the id attribute on the given element. - */ - void setId(const DOMString &val) throw(DOMException); - - /** - * Corresponds to attribute xml:base on the given element. - */ - DOMString getXmlBase(); - - /** - * Corresponds to attribute xml:base on the given element. - */ - void setXmlBase(const DOMString &val) throw(DOMException); - - /** - * The nearest ancestor 'svg' element. Null if the given element is the - * outermost 'svg' element. - */ - SVGElementPtr getOwnerSVGElement(); - - /** - * The element which established the current viewport. Often, the nearest - * ancestor 'svg' element. Null if the given element is the outermost 'svg' - * element. - */ - SVGElementPtr getViewportElement(); - - - - //#################################################################### - //#################################################################### - //# E L E M E N T S - //#################################################################### - //#################################################################### - - //#################################################################### - //# SVGAElement - //#################################################################### - - - /** - * - */ - SVGAnimatedValue getTarget(); - - - - //#################################################################### - //# SVGAltGlyphElement - //#################################################################### - - - /** - * Get the attribute glyphRef on the given element. - */ - DOMString getGlyphRef(); - - /** - * Set the attribute glyphRef on the given element. - */ - void setGlyphRef(const DOMString &val) throw(DOMException); - - /** - * Get the attribute format on the given element. - */ - DOMString getFormat(); - - /** - * Set the attribute format on the given element. - */ - void setFormat(const DOMString &val) throw(DOMException); - - - //#################################################################### - //# SVGAltGlyphDefElement - //#################################################################### - - //#################################################################### - //# SVGAltGlyphItemElement - //#################################################################### - - - //#################################################################### - //# SVGAnimateElement - //#################################################################### - - - //#################################################################### - //# SVGAnimateColorElement - //#################################################################### - - //#################################################################### - //# SVGAnimateMotionElement - //#################################################################### - - - //#################################################################### - //# SVGAnimateTransformElement - //#################################################################### - - - //#################################################################### - //# SVGAnimationElement - //#################################################################### - - - /** - * - */ - SVGElementPtr getTargetElement(); - - /** - * - */ - double getStartTime(); - - /** - * - */ - double getCurrentTime(); - - /** - * - */ - double getSimpleDuration() throw(DOMException); - - - - //#################################################################### - //# SVGCircleElement - //#################################################################### - - /** - * Corresponds to attribute cx on the given 'circle' element. - */ - SVGAnimatedValue getCx(); - - /** - * Corresponds to attribute cy on the given 'circle' element. - */ - SVGAnimatedValue getCy(); - - /** - * Corresponds to attribute r on the given 'circle' element. - */ - SVGAnimatedValue getR(); - - //#################################################################### - //# SVGClipPathElement - //#################################################################### - - - /** - * Corresponds to attribute clipPathUnits on the given 'clipPath' element. - * Takes one of the constants defined in SVGUnitTypes. - */ - SVGAnimatedValue getClipPathUnits(); - - - - //#################################################################### - //# SVGColorProfileElement - //#################################################################### - - - /** - * Get the attribute local on the given element. - */ - DOMString getLocal(); - - /** - * Set the attribute local on the given element. - */ - void setLocal(const DOMString &val) throw(DOMException); - - /** - * Get the attribute name on the given element. - */ - DOMString getName(); - - /** - * Set the attribute name on the given element. - */ - void setName(const DOMString &val) throw(DOMException); - - /** - * Set the attribute rendering-intent on the given element. - * The type of rendering intent, identified by one of the - * SVGRenderingIntent constants. - */ - unsigned short getRenderingIntent(); - - /** - * Get the attribute rendering-intent on the given element. - */ - void setRenderingIntent(unsigned short val) throw(DOMException); - - - //#################################################################### - //# SVGComponentTransferFunctionElement - //#################################################################### - - - /** - * Component Transfer Types - */ - typedef enum - { - SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0, - SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1, - SVG_FECOMPONENTTRANSFER_TYPE_TABLE = 2, - SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3, - SVG_FECOMPONENTTRANSFER_TYPE_LINEAR = 4, - SVG_FECOMPONENTTRANSFER_TYPE_GAMMA = 5 - } ComponentTransferType; - - - /** - * Corresponds to attribute type on the given element. Takes one\ - * of the Component Transfer Types. - * -- also in SVGCSSRule - */ - // SVGAnimatedValue getType(); - - /** - * Corresponds to attribute tableValues on the given element. - */ - SVGAnimatedValueList getTableValues(); - - /** - * Corresponds to attribute slope on the given element. - */ - SVGAnimatedValue getSlope(); - - /** - * Corresponds to attribute intercept on the given element. - */ - SVGAnimatedValue getIntercept(); - - /** - * Corresponds to attribute amplitude on the given element. - */ - SVGAnimatedValue getAmplitude(); - - /** - * Corresponds to attribute exponent on the given element. - */ - SVGAnimatedValue getExponent(); - - /** - * Corresponds to attribute offset on the given element. - */ - SVGAnimatedValue getOffset(); - - //#################################################################### - //# SVGCursorElement - //#################################################################### - - /** - * -- also in SVGRect - */ - // SVGAnimatedValue getX(); - - /** - * -- also in SVGRect - */ - // SVGAnimatedValue getY(); - - - //#################################################################### - //# SVGDefinitionSrcElement - //#################################################################### - - //#################################################################### - //# SVGDefsElement - //#################################################################### - - //#################################################################### - //# SVGDescElement - //#################################################################### - - //#################################################################### - //# SVGEllipseElement - //#################################################################### - - /** - * Corresponds to attribute cx on the given 'ellipse' element. - * -- also in Circle - */ - // SVGAnimatedValue getCx(); - - /** - * Corresponds to attribute cy on the given 'ellipse' element. - * -- also in Circle - */ - // SVGAnimatedValue getCy(); - - /** - * Corresponds to attribute rx on the given 'ellipse' element. - */ - SVGAnimatedValue getRx(); - - /** - * Corresponds to attribute ry on the given 'ellipse' element. - */ - SVGAnimatedValue getRy(); - - - //#################################################################### - //# SVGFEBlendElement - //#################################################################### - - /** - * Blend Mode Types - */ - typedef enum - { - SVG_FEBLEND_MODE_UNKNOWN = 0, - SVG_FEBLEND_MODE_NORMAL = 1, - SVG_FEBLEND_MODE_MULTIPLY = 2, - SVG_FEBLEND_MODE_SCREEN = 3, - SVG_FEBLEND_MODE_DARKEN = 4, - SVG_FEBLEND_MODE_LIGHTEN = 5 - } BlendModeType; - - /** - * Corresponds to attribute in on the given 'feBlend' element. - */ - SVGAnimatedValue getIn1(); - - /** - * Corresponds to attribute in2 on the given 'feBlend' element. - */ - SVGAnimatedValue getIn2(); - - /** - * Corresponds to attribute mode on the given 'feBlend' element. - * Takes one of the Blend Mode Types. - */ - SVGAnimatedValue getMode(); - - - //#################################################################### - //# SVGFEColorMatrixElement - //#################################################################### - - /** - * Color Matrix Types - */ - typedef enum - { - SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0, - SVG_FECOLORMATRIX_TYPE_MATRIX = 1, - SVG_FECOLORMATRIX_TYPE_SATURATE = 2, - SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3, - SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4 - } ColorMatrixType; - - - /** - * Corresponds to attribute in on the given 'feColorMatrix' element. - * - also in feBlend - */ - // SVGAnimatedValue getIn1(); - - /** - * Corresponds to attribute type on the given 'feColorMatrix' element. - * Takes one of the Color Matrix Types. - * -- also in CSSRule - */ - // SVGAnimatedValue getType(); - - /** - * Corresponds to attribute values on the given 'feColorMatrix' element. - * Provides access to the contents of the values attribute. - */ - SVGAnimatedValueList getValues(); - - - //#################################################################### - //# SVGFEComponentTransferElement - //#################################################################### - - - /** - * Corresponds to attribute in on the given 'feComponentTransfer' element. - * -- also in feBlend - */ - // SVGAnimatedValue getIn1(); - - //#################################################################### - //# SVGFECompositeElement - //#################################################################### - - /** - * Composite Operators - */ - typedef enum - { - SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0, - SVG_FECOMPOSITE_OPERATOR_OVER = 1, - SVG_FECOMPOSITE_OPERATOR_IN = 2, - SVG_FECOMPOSITE_OPERATOR_OUT = 3, - SVG_FECOMPOSITE_OPERATOR_ATOP = 4, - SVG_FECOMPOSITE_OPERATOR_XOR = 5, - SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6 - } CompositeOperatorType; - - /** - * Corresponds to attribute in on the given 'feComposite' element. - * -- also in feBlend - */ - // SVGAnimatedValue getIn1(); - - /** - * Corresponds to attribute in2 on the given 'feComposite' element. - * -- also in feBlend - */ - // SVGAnimatedValue getIn2(); - - /** - * Corresponds to attribute operator on the given 'feComposite' element. - * Takes one of the Composite Operators. - */ - SVGAnimatedValue getOperator(); - - /** - * Corresponds to attribute k1 on the given 'feComposite' element. - */ - SVGAnimatedValue getK1(); - - /** - * Corresponds to attribute k2 on the given 'feComposite' element. - */ - SVGAnimatedValue getK2(); - - /** - * Corresponds to attribute k3 on the given 'feComposite' element. - */ - SVGAnimatedValue getK3(); - - /** - * Corresponds to attribute k4 on the given 'feComposite' element. - */ - SVGAnimatedValue getK4(); - - - //#################################################################### - //# SVGFEConvolveMatrixElement - //#################################################################### - - - /** - * Edge Mode Values - */ - typedef enum - { - SVG_EDGEMODE_UNKNOWN = 0, - SVG_EDGEMODE_DUPLICATE = 1, - SVG_EDGEMODE_WRAP = 2, - SVG_EDGEMODE_NONE = 3 - } EdgeModeType; - - - /** - * Corresponds to attribute order on the given 'feConvolveMatrix' element. - */ - SVGAnimatedValue getOrderX(); - - /** - * Corresponds to attribute order on the given 'feConvolveMatrix' element. - */ - SVGAnimatedValue getOrderY(); - - /** - * Corresponds to attribute kernelMatrix on the given element. - */ - SVGAnimatedValueList getKernelMatrix(); - - /** - * Corresponds to attribute divisor on the given 'feConvolveMatrix' element. - */ - SVGAnimatedValue getDivisor(); - - /** - * Corresponds to attribute bias on the given 'feConvolveMatrix' element. - */ - SVGAnimatedValue getBias(); - - /** - * Corresponds to attribute targetX on the given 'feConvolveMatrix' element. - */ - SVGAnimatedValue getTargetX(); - - /** - * Corresponds to attribute targetY on the given 'feConvolveMatrix' element. - */ - SVGAnimatedValue getTargetY(); - - /** - * Corresponds to attribute edgeMode on the given 'feConvolveMatrix' - * element. Takes one of the Edge Mode Types. - */ - SVGAnimatedValue getEdgeMode(); - - /** - * Corresponds to attribute kernelUnitLength on the - * given 'feConvolveMatrix' element. - */ - SVGAnimatedValue getKernelUnitLengthX(); - - /** - * Corresponds to attribute kernelUnitLength on the given - * 'feConvolveMatrix' element. - */ - SVGAnimatedValue getKernelUnitLengthY(); - - /** - * Corresponds to attribute preserveAlpha on the - * given 'feConvolveMatrix' element. - */ - SVGAnimatedValue getPreserveAlpha(); - - - - //#################################################################### - //# SVGFEDiffuseLightingElement - //#################################################################### - - - /** - * Corresponds to attribute in on the given 'feDiffuseLighting' element. - * -- also in feBlend - */ - // SVGAnimatedValue getIn1(); - - /** - * Corresponds to attribute surfaceScale on the given - * 'feDiffuseLighting' element. - */ - SVGAnimatedValue getSurfaceScale(); - - /** - * Corresponds to attribute diffuseConstant on the given - * 'feDiffuseLighting' element. - */ - SVGAnimatedValue getDiffuseConstant(); - - /** - * Corresponds to attribute kernelUnitLength on the given - * 'feDiffuseLighting' element. - */ - // SVGAnimatedValue getKernelUnitLengthX(); - - /** - * Corresponds to attribute kernelUnitLength on the given - * 'feDiffuseLighting' element. - */ - // SVGAnimatedValue getKernelUnitLengthY(); - - - - - //#################################################################### - //# SVGFEDisplacementMapElement - //#################################################################### - - - /** - * Channel Selectors - */ - typedef enum - { - SVG_CHANNEL_UNKNOWN = 0, - SVG_CHANNEL_R = 1, - SVG_CHANNEL_G = 2, - SVG_CHANNEL_B = 3, - SVG_CHANNEL_A = 4 - } ChannelSelector; - - /** - * - * -- also in feBlend - */ - // SVGAnimatedValue getIn1(); - - /** - * - * -- also in feBlend - */ - // SVGAnimatedValue getIn2(); - - - /** - * - */ - SVGAnimatedValue getScale(); - - /** - * - */ - SVGAnimatedValue getXChannelSelector(); - - /** - * - */ - SVGAnimatedValue getYChannelSelector(); - - //#################################################################### - //# SVGFEDistantLightElement - //#################################################################### - - - /** - * Corresponds to attribute azimuth on the given 'feDistantLight' element. - */ - SVGAnimatedValue getAzimuth(); - - - /** - * Corresponds to attribute elevation on the given 'feDistantLight' - * element - */ - SVGAnimatedValue getElevation(); - - - //#################################################################### - //# SVGFEFloodElement - //#################################################################### - - - /** - * - * -- also in feBlend - */ - // SVGAnimatedValue getIn1(); - - - //#################################################################### - //# SVGFEFuncAElement - //#################################################################### - - //#################################################################### - //# SVGFEFuncBElement - //#################################################################### - - //#################################################################### - //# SVGFEFuncGElement - //#################################################################### - - //#################################################################### - //# SVGFEFuncRElement - //#################################################################### - - - //#################################################################### - //# SVGFEGaussianBlurElement - //#################################################################### - - - /** - * - * -- also in feBlend - */ - // SVGAnimatedValue getIn1(); - - - /** - * - */ - SVGAnimatedValue getStdDeviationX(); - - /** - * - */ - SVGAnimatedValue getStdDeviationY(); - - - /** - * - */ - void setStdDeviation(double stdDeviationX, double stdDeviationY); - - - //#################################################################### - //# SVGFEImageElement - //#################################################################### - - - //#################################################################### - //# SVGFEMergeElement - //#################################################################### - - //#################################################################### - //# SVGFEMergeNodeElement - //#################################################################### - - //#################################################################### - //# SVGFEMorphologyElement - //#################################################################### - - - - /** - * Morphology Operators - */ - typedef enum - { - SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0, - SVG_MORPHOLOGY_OPERATOR_ERODE = 1, - SVG_MORPHOLOGY_OPERATOR_DILATE = 2 - } MorphologyOperatorType; - - - /** - * - * -- also in feBlend - */ - // SVGAnimatedValue getIn1(); - - - /** - * - */ - // SVGAnimatedValue getOperator(); - - /** - * - */ - SVGAnimatedValue getRadiusX(); - - /** - * - */ - SVGAnimatedValue getRadiusY(); - - //#################################################################### - //# SVGFEOffsetElement - //#################################################################### - - /** - * - * -- also in feBlend - */ - // SVGAnimatedValue getIn1(); - - /** - * - */ - SVGAnimatedValue getDx(); - - /** - * - */ - SVGAnimatedValue getDy(); - - - //#################################################################### - //# SVGFEPointLightElement - //#################################################################### - - /** - * Corresponds to attribute x on the given 'fePointLight' element. - */ - SVGAnimatedValue getX(); - - /** - * Corresponds to attribute y on the given 'fePointLight' element. - */ - SVGAnimatedValue getY(); - - /** - * Corresponds to attribute z on the given 'fePointLight' element. - */ - SVGAnimatedValue getZ(); - - //#################################################################### - //# SVGFESpecularLightingElement - //#################################################################### - - - /** - * - * -- also in feBlend - */ - // SVGAnimatedValue getIn1(); - - /** - * - */ - // SVGAnimatedValue getSurfaceScale(); - - /** - * - */ - SVGAnimatedValue getSpecularConstant(); - - /** - * - */ - SVGAnimatedValue getSpecularExponent(); - - - //#################################################################### - //# SVGFESpotLightElement - //#################################################################### - - /** - * Corresponds to attribute x on the given 'feSpotLight' element. - */ - // SVGAnimatedValue getX(); - - /** - * Corresponds to attribute y on the given 'feSpotLight' element. - */ - // SVGAnimatedValue getY(); - - /** - * Corresponds to attribute z on the given 'feSpotLight' element. - */ - // SVGAnimatedValue getZ(); - - /** - * Corresponds to attribute pointsAtX on the given 'feSpotLight' element. - */ - SVGAnimatedValue getPointsAtX(); - - /** - * Corresponds to attribute pointsAtY on the given 'feSpotLight' element. - */ - SVGAnimatedValue getPointsAtY(); - - /** - * Corresponds to attribute pointsAtZ on the given 'feSpotLight' element. - */ - SVGAnimatedValue getPointsAtZ(); - - /** - * Corresponds to attribute specularExponent on the - * given 'feSpotLight' element. - */ - // SVGAnimatedValue getSpecularExponent(); - - /** - * Corresponds to attribute limitingConeAngle on the - * given 'feSpotLight' element. - */ - SVGAnimatedValue getLimitingConeAngle(); - - - //#################################################################### - //# SVGFETileElement - //#################################################################### - - - /** - * - * -- also in feBlend - */ - // SVGAnimatedValue getIn1(); - - - //#################################################################### - //# SVGFETurbulenceElement - //#################################################################### - - - /** - * Turbulence Types - */ - typedef enum - { - SVG_TURBULENCE_TYPE_UNKNOWN = 0, - SVG_TURBULENCE_TYPE_FRACTALNOISE = 1, - SVG_TURBULENCE_TYPE_TURBULENCE = 2 - } TurbulenceType; - - /** - * Stitch Options - */ - typedef enum - { - SVG_STITCHTYPE_UNKNOWN = 0, - SVG_STITCHTYPE_STITCH = 1, - SVG_STITCHTYPE_NOSTITCH = 2 - } StitchOption; - - - - /** - * - */ - SVGAnimatedValue getBaseFrequencyX(); - - /** - * - */ - SVGAnimatedValue getBaseFrequencyY(); - - /** - * - */ - SVGAnimatedValue getNumOctaves(); - - /** - * - */ - SVGAnimatedValue getSeed(); - - /** - * - */ - SVGAnimatedValue getStitchTiles(); - - /** - * - */ - SVGAnimatedValue getType(); - - - - //#################################################################### - //# SVGFilterElement - //#################################################################### - - - /** - * Corresponds to attribute filterUnits on the given 'filter' element. Takes one - * of the constants defined in SVGUnitTypes. - */ - SVGAnimatedValue getFilterUnits(); - - /** - * Corresponds to attribute primitiveUnits on the given 'filter' element. Takes - * one of the constants defined in SVGUnitTypes. - */ - SVGAnimatedValue getPrimitiveUnits(); - - /** - * - */ - // SVGAnimatedValue getX(); - - /** - * Corresponds to attribute x on the given 'filter' element. - */ - // SVGAnimatedValue getY(); - - /** - * Corresponds to attribute y on the given 'filter' element. - */ - // SVGAnimatedValue getWidth(); - - /** - * Corresponds to attribute height on the given 'filter' element. - */ - // SVGAnimatedValue getHeight(); - - - /** - * Corresponds to attribute filterRes on the given 'filter' element. - * Contains the X component of attribute filterRes. - */ - SVGAnimatedValue getFilterResX(); - - /** - * Corresponds to attribute filterRes on the given 'filter' element. - * Contains the Y component(possibly computed automatically) - * of attribute filterRes. - */ - SVGAnimatedValue getFilterResY(); - - /** - * Sets the values for attribute filterRes. - */ - void setFilterRes(unsigned long filterResX, unsigned long filterResY); - - - //#################################################################### - //# SVGFontElement - //#################################################################### - - //#################################################################### - //# SVGFontFaceElement - //#################################################################### - - //#################################################################### - //# SVGFontFaceFormatElement - //#################################################################### - - //#################################################################### - //# SVGFontFaceNameElement - //#################################################################### - - //#################################################################### - //# SVGFontFaceSrcElement - //#################################################################### - - //#################################################################### - //# SVGFontFaceUriElement - //#################################################################### - - //#################################################################### - //# SVGForeignObjectElement - //#################################################################### - - /** - * - */ - // SVGAnimatedValue getX(); - - /** - * - */ - // SVGAnimatedValue getY(); - - /** - * - */ - // SVGAnimatedValue getWidth(); - - /** - * - */ - // SVGAnimatedValue getHeight(); - - - - //#################################################################### - //# SVGGlyphRefElement - //#################################################################### - - - /** - * Get the attribute glyphRef on the given element. - */ - // DOMString getGlyphRef(); - - /** - * Set the attribute glyphRef on the given element. - */ - // void setGlyphRef(const DOMString &val) throw(DOMException); - - /** - * Get the attribute format on the given element. - */ - // DOMString getFormat(); - - /** - * Set the attribute format on the given element. - */ - // void setFormat(const DOMString &val) throw(DOMException); - - /** - * Get the attribute x on the given element. - */ - // double getX(); - - /** - * Set the attribute x on the given element. - */ - // void setX(double val) throw(DOMException); - - /** - * Get the attribute y on the given element. - */ - // double getY(); - - /** - * Set the attribute y on the given element. - */ - // void setY(double val) throw(DOMException); - - /** - * Get the attribute dx on the given element. - */ - // double getDx(); - - /** - * Set the attribute dx on the given element. - */ - // void setDx(double val) throw(DOMException); - - /** - * Get the attribute dy on the given element. - */ - // double getDy(); - - /** - * Set the attribute dy on the given element. - */ - // void setDy(double val) throw(DOMException); - - - //#################################################################### - //# SVGGradientElement - //#################################################################### - - - /** - * Spread Method Types - */ - typedef enum - { - SVG_SPREADMETHOD_UNKNOWN = 0, - SVG_SPREADMETHOD_PAD = 1, - SVG_SPREADMETHOD_REFLECT = 2, - SVG_SPREADMETHOD_REPEAT = 3 - } SpreadMethodType; - - - /** - * Corresponds to attribute gradientUnits on the given element. - * Takes one of the constants defined in SVGUnitTypes. - */ - SVGAnimatedValue &getGradientUnits(); - - /** - * Corresponds to attribute gradientTransform on the given element. - */ - SVGAnimatedValueList &getGradientTransform(); - - /** - * Corresponds to attribute spreadMethod on the given element. - * One of the Spread Method Types. - */ - SVGAnimatedValue &getSpreadMethod(); - - - - //#################################################################### - //# SVGHKernElement - //#################################################################### - - //#################################################################### - //# SVGImageElement - //#################################################################### - - /** - * Corresponds to attribute x on the given 'image' element. - */ - // SVGAnimatedValue getX(); - - /** - * Corresponds to attribute y on the given 'image' element. - */ - // SVGAnimatedValue getY(); - - /** - * Corresponds to attribute width on the given 'image' element. - */ - // SVGAnimatedValue getWidth(); - - /** - * Corresponds to attribute height on the given 'image' element. - */ - // SVGAnimatedValue getHeight(); - - - /** - * Corresponds to attribute preserveAspectRatio on the given element. - */ - // SVGAnimatedPreserveAspectRatio getPreserveAspectRatio(); - - //#################################################################### - //# SVGLinearGradientElement - //#################################################################### - - /** - * Corresponds to attribute x1 on the given 'linearGradient' element. - */ - // SVGAnimatedValue getX1(); - - /** - * Corresponds to attribute y1 on the given 'linearGradient' element. - */ - // SVGAnimatedValue getY1(); - - /** - * Corresponds to attribute x2 on the given 'linearGradient' element. - */ - // SVGAnimatedValue getX2(); - - /** - * Corresponds to attribute y2 on the given 'linearGradient' element. - */ - // SVGAnimatedValue getY2(); - - - - //#################################################################### - //# SVGLineElement - //#################################################################### - - /** - * Corresponds to attribute x1 on the given 'line' element. - */ - // SVGAnimatedValue getX1(); - - /** - * Corresponds to attribute y1 on the given 'line' element. - */ - // SVGAnimatedValue getY1(); - - /** - * Corresponds to attribute x2 on the given 'line' element. - */ - // SVGAnimatedValue getX2(); - - /** - * Corresponds to attribute y2 on the given 'line' element. - */ - // SVGAnimatedValue getY2(); - - - //#################################################################### - //# SVGMarkerElement - //#################################################################### - - - /** - * Marker Unit Types - */ - typedef enum - { - SVG_MARKERUNITS_UNKNOWN = 0, - SVG_MARKERUNITS_USERSPACEONUSE = 1, - SVG_MARKERUNITS_STROKEWIDTH = 2 - } MarkerUnitType; - - /** - * Marker Orientation Types - */ - typedef enum - { - SVG_MARKER_ORIENT_UNKNOWN = 0, - SVG_MARKER_ORIENT_AUTO = 1, - SVG_MARKER_ORIENT_ANGLE = 2 - } MarkerOrientationType; - - - /** - * Corresponds to attribute refX on the given 'marker' element. - */ - SVGAnimatedValue getRefX(); - - /** - * Corresponds to attribute refY on the given 'marker' element. - */ - SVGAnimatedValue getRefY(); - - /** - * Corresponds to attribute markerUnits on the given 'marker' element. - * One of the Marker Units Types defined above. - */ - SVGAnimatedValue getMarkerUnits(); - - /** - * Corresponds to attribute markerWidth on the given 'marker' element. - */ - SVGAnimatedValue getMarkerWidth(); - - /** - * Corresponds to attribute markerHeight on the given 'marker' element. - */ - SVGAnimatedValue getMarkerHeight(); - - /** - * Corresponds to attribute orient on the given 'marker' element. - * One of the Marker Orientation Types defined above. - */ - SVGAnimatedValue getOrientType(); - - /** - * Corresponds to attribute orient on the given 'marker' element. - * If markerUnits is SVG_MARKER_ORIENT_ANGLE, the angle value for - * attribute orient; otherwise, it will be set to zero. - */ - SVGAnimatedValue getOrientAngle(); - - - /** - * Sets the value of attribute orient to 'auto'. - */ - void setOrientToAuto(); - - /** - * Sets the value of attribute orient to the given angle. - */ - void setOrientToAngle(const SVGAngle &angle); - - - //#################################################################### - //# SVGMaskElement - //#################################################################### - - - /** - * Corresponds to attribute maskUnits on the given 'mask' element. Takes one of - * the constants defined in SVGUnitTypes. - */ - SVGAnimatedValue getMaskUnits(); - - /** - * Corresponds to attribute maskContentUnits on the given 'mask' element. Takes - * one of the constants defined in SVGUnitTypes. - */ - SVGAnimatedValue getMaskContentUnits(); - - /** - * Corresponds to attribute x on the given 'mask' element. - */ - // SVGAnimatedValue getX(); - - /** - * Corresponds to attribute y on the given 'mask' element. - */ - // SVGAnimatedValue getY(); - - /** - * Corresponds to attribute width on the given 'mask' element. - */ - // SVGAnimatedValue getWidth(); - - /** - * Corresponds to attribute height on the given 'mask' element. - */ - // SVGAnimatedValue getHeight(); - - //#################################################################### - //# SVGMetadataElement - //#################################################################### - - //#################################################################### - //# SVGMissingGlyphElement - //#################################################################### - - - //#################################################################### - //# SVGMPathElement - //#################################################################### - - /** - * Corresponds to attribute pathLength on the given 'path' element. - */ - SVGAnimatedValue getPathLength(); - - /** - * Returns the user agent's computed value for the total length of the path using - * the user agent's distance-along-a-path algorithm, as a distance in the current - * user coordinate system. - */ - double getTotalLength(); - - /** - * Returns the(x,y) coordinate in user space which is distance units along the - * path, utilizing the user agent's distance-along-a-path algorithm. - */ - SVGPoint getPointAtLength(double distance); - - /** - * Returns the index into pathSegList which is distance units along the path, - * utilizing the user agent's distance-along-a-path algorithm. - */ - unsigned long getPathSegAtLength(double distance); - - /** - * Returns a stand-alone, parentless SVGPathSegClosePath object. - */ - SVGPathSeg createSVGPathSegClosePath(); - - /** - * Returns a stand-alone, parentless SVGPathSegMovetoAbs object. - */ - SVGPathSeg createSVGPathSegMovetoAbs(double x, double y); - - /** - * Returns a stand-alone, parentless SVGPathSegMovetoRel object. - */ - SVGPathSeg createSVGPathSegMovetoRel(double x, double y); - - /** - * Returns a stand-alone, parentless SVGPathSegLinetoAbs object. - */ - SVGPathSeg createSVGPathSegLinetoAbs(double x, double y); - - /** - * Returns a stand-alone, parentless SVGPathSegLinetoRel object. - */ - SVGPathSeg createSVGPathSegLinetoRel(double x, double y); - - /** - * Returns a stand-alone, parentless SVGPathSegCurvetoCubicAbs object. - */ - SVGPathSeg createSVGPathSegCurvetoCubicAbs(double x, double y, - double x1, double y1, double x2, double y2); - - /** - * Returns a stand-alone, parentless SVGPathSegCurvetoCubicRel object. - */ - SVGPathSeg createSVGPathSegCurvetoCubicRel(double x, double y, - double x1, double y1, double x2, double y2); - - /** - * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticAbs object. - */ - SVGPathSeg createSVGPathSegCurvetoQuadraticAbs(double x, double y, - double x1, double y1); - - /** - * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticRel object. - */ - SVGPathSeg createSVGPathSegCurvetoQuadraticRel(double x, double y, - double x1, double y1); - - /** - * Returns a stand-alone, parentless SVGPathSegArcAbs object. - */ - SVGPathSeg createSVGPathSegArcAbs(double x, double y, - double r1, double r2, double angle, - bool largeArcFlag, bool sweepFlag); - - /** - * Returns a stand-alone, parentless SVGPathSegArcRel object. - */ - SVGPathSeg createSVGPathSegArcRel(double x, double y, double r1, - double r2, double angle, bool largeArcFlag, - bool sweepFlag); - - /** - * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalAbs object. - */ - SVGPathSeg createSVGPathSegLinetoHorizontalAbs(double x); - - /** - * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalRel object. - */ - SVGPathSeg createSVGPathSegLinetoHorizontalRel(double x); - - /** - * Returns a stand-alone, parentless SVGPathSegLinetoVerticalAbs object. - */ - SVGPathSeg createSVGPathSegLinetoVerticalAbs(double y); - - /** - * Returns a stand-alone, parentless SVGPathSegLinetoVerticalRel object. - */ - SVGPathSeg createSVGPathSegLinetoVerticalRel(double y); - - /** - * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothAbs object. - */ - SVGPathSeg createSVGPathSegCurvetoCubicSmoothAbs(double x, double y, - double x2, double y2); - - /** - * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothRel object. - */ - SVGPathSeg createSVGPathSegCurvetoCubicSmoothRel(double x, double y, - double x2, double y2); - - /** - * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothAbs - * object. - */ - SVGPathSeg createSVGPathSegCurvetoQuadraticSmoothAbs(double x, double y); - - /** - * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothRel - * object. - */ - SVGPathSeg createSVGPathSegCurvetoQuadraticSmoothRel(double x, double y); - - //#################################################################### - //# SVGPathElement - //#################################################################### - - //#################################################################### - //# SVGPatternElement - //#################################################################### - - /** - * Corresponds to attribute patternUnits on the given 'pattern' element. - * Takes one of the constants defined in SVGUnitTypes. - */ - SVGAnimatedValue getPatternUnits(); - - /** - * Corresponds to attribute patternContentUnits on the given 'pattern' - * element. Takes one of the constants defined in SVGUnitTypes. - */ - SVGAnimatedValue getPatternContentUnits(); - - /** - * Corresponds to attribute patternTransform on the given 'pattern' element. - */ - SVGAnimatedValueList &getPatternTransform(); - - /** - * Corresponds to attribute x on the given 'pattern' element. - */ - // SVGAnimatedValue getX(); - - /** - * - */ - // SVGAnimatedValue getY(); - - /** - * Corresponds to attribute width on the given 'pattern' element. - */ - // SVGAnimatedValue getWidth(); - - /** - * Corresponds to attribute height on the given 'pattern' element. - */ - // SVGAnimatedValue getHeight(); - - - //#################################################################### - //# SVGPolyLineElement - //#################################################################### - - //#################################################################### - //# SVGPolygonElement - //#################################################################### - - //#################################################################### - //# SVGRadialGradientElement - //#################################################################### - - - /** - * Corresponds to attribute cx on the given 'radialGradient' element. - */ - // SVGAnimatedValue getCx(); - - - /** - * Corresponds to attribute cy on the given 'radialGradient' element. - */ - // SVGAnimatedValue getCy(); - - - /** - * Corresponds to attribute r on the given 'radialGradient' element. - */ - // SVGAnimatedValue getR(); - - - /** - * Corresponds to attribute fx on the given 'radialGradient' element. - */ - SVGAnimatedValue getFx(); - - - /** - * Corresponds to attribute fy on the given 'radialGradient' element. - */ - SVGAnimatedValue getFy(); - - - //#################################################################### - //# SVGRectElement - //#################################################################### - - /** - * Corresponds to attribute x on the given 'rect' element. - */ - // SVGAnimatedValue getX(); - - /** - * Corresponds to attribute y on the given 'rect' element. - */ - // SVGAnimatedValue getY(); - - /** - * Corresponds to attribute width on the given 'rect' element. - */ - // SVGAnimatedValue getWidth(); - - /** - * Corresponds to attribute height on the given 'rect' element. - */ - // SVGAnimatedValue getHeight(); - - - /** - * Corresponds to attribute rx on the given 'rect' element. - */ - // SVGAnimatedValue getRx(); - - /** - * Corresponds to attribute ry on the given 'rect' element. - */ - // SVGAnimatedValue getRy(); - - - //#################################################################### - //# SVGScriptElement - //#################################################################### - - /** - * - */ - // DOMString getType(); - - /** - * - */ - // void setType(const DOMString &val) throw(DOMException); - - //#################################################################### - //# SVGSetElement - //#################################################################### - - //#################################################################### - //# SVGStopElement - //#################################################################### - - - /** - * Corresponds to attribute offset on the given 'stop' element. - */ - // SVGAnimatedValue getOffset(); - - - //#################################################################### - //# SVGStyleElement - //#################################################################### - - /** - * Get the attribute xml:space on the given element. - */ - DOMString getXmlspace(); - - /** - * Set the attribute xml:space on the given element. - */ - void setXmlspace(const DOMString &val) throw(DOMException); - - /** - * Get the attribute type on the given 'style' element. - */ - // DOMString getType(); - - /** - * Set the attribute type on the given 'style' element. - */ - // void setType(const DOMString &val) throw(DOMException); - - /** - * Get the attribute media on the given 'style' element. - */ - DOMString getMedia(); - - /** - * Set the attribute media on the given 'style' element. - */ - void setMedia(const DOMString &val) throw(DOMException); - - /** - * Get the attribute title on the given 'style' element. - */ - DOMString getTitle(); - - /** - * Set the attribute title on the given 'style' element. - */ - void setTitle(const DOMString &val) throw(DOMException); - - //#################################################################### - //# SVGSymbolElement - //#################################################################### - - //#################################################################### - //# SVGSVGElement - //#################################################################### - - /** - * Corresponds to attribute x on the given 'svg' element. - */ - // SVGAnimatedValue getX(); - - /** - * Corresponds to attribute y on the given 'svg' element. - */ - // SVGAnimatedValue getY(); - - /** - * Corresponds to attribute width on the given 'svg' element. - */ - // SVGAnimatedValue getWidth(); - - /** - * Corresponds to attribute height on the given 'svg' element. - */ - // SVGAnimatedValue getHeight(); - - /** - * Get the attribute contentScriptType on the given 'svg' element. - */ - DOMString getContentScriptType(); - - /** - * Set the attribute contentScriptType on the given 'svg' element. - */ - void setContentScriptType(const DOMString &val) throw(DOMException); - - - /** - * Get the attribute contentStyleType on the given 'svg' element. - */ - DOMString getContentStyleType(); - - /** - * Set the attribute contentStyleType on the given 'svg' element. - */ - void setContentStyleType(const DOMString &val) throw(DOMException); - - /** - * The position and size of the viewport(implicit or explicit) that corresponds - * to this 'svg' element. When the user agent is actually rendering the content, - * then the position and size values represent the actual values when rendering. - * The position and size values are unitless values in the coordinate system of - * the parent element. If no parent element exists(i.e., 'svg' element - * represents the root of the document tree), if this SVG document is embedded as - * part of another document(e.g., via the HTML 'object' element), then the - * position and size are unitless values in the coordinate system of the parent - * document.(If the parent uses CSS or XSL layout, then unitless values - * represent pixel units for the current CSS or XSL viewport, as described in the - * CSS2 specification.) If the parent element does not have a coordinate system, - * then the user agent should provide reasonable default values for this attribute. - * */ - SVGRect getViewport(); - - /** - * Size of a pixel units(as defined by CSS2) along the x-axis of the viewport, - * which represents a unit somewhere in the range of 70dpi to 120dpi, and, on - * systems that support this, might actually match the characteristics of the - * target medium. On systems where it is impossible to know the size of a pixel, - * a suitable default pixel size is provided. - */ - double getPixelUnitToMillimeterX(); - - /** - * Corresponding size of a pixel unit along the y-axis of the viewport. - */ - double getPixelUnitToMillimeterY(); - - /** - * User interface(UI) events in DOM Level 2 indicate the screen positions at - * which the given UI event occurred. When the user agent actually knows the - * physical size of a "screen unit", this attribute will express that information; - * otherwise, user agents will provide a suitable default value such as .28mm. - */ - double getScreenPixelToMillimeterX(); - - /** - * Corresponding size of a screen pixel along the y-axis of the viewport. - */ - double getScreenPixelToMillimeterY(); - - - /** - * The initial view(i.e., before magnification and panning) of the current - * innermost SVG document fragment can be either the "standard" view(i.e., based - * on attributes on the 'svg' element such as fitBoxToViewport) or to a "custom" - * view(i.e., a hyperlink into a particular 'view' or other element - see - * Linking into SVG content: URI fragments and SVG views). If the initial view is - * the "standard" view, then this attribute is false. If the initial view is a - * "custom" view, then this attribute is true. - */ - bool getUseCurrentView(); - - /** - * Set the value above - */ - void setUseCurrentView(bool val) throw(DOMException); - - /** - * The definition of the initial view(i.e., before magnification and panning) of - * the current innermost SVG document fragment. The meaning depends on the - * situation: - * - * * If the initial view was a "standard" view, then: - * o the values for viewBox, preserveAspectRatio and zoomAndPan within - * currentView will match the values for the corresponding DOM attributes that - * are on SVGSVGElement directly - * o the values for transform and viewTarget within currentView will be null - * * If the initial view was a link into a 'view' element, then: - * o the values for viewBox, preserveAspectRatio and zoomAndPan within - * currentView will correspond to the corresponding attributes for the given - * 'view' element - * o the values for transform and viewTarget within currentView will be null - * * If the initial view was a link into another element(i.e., other than a - * 'view'), then: - * o the values for viewBox, preserveAspectRatio and zoomAndPan within - * currentView will match the values for the corresponding DOM attributes that - * are on SVGSVGElement directly for the closest ancestor 'svg' element - * o the values for transform within currentView will be null - * o the viewTarget within currentView will represent the target of the link - * * If the initial view was a link into the SVG document fragment using an SVG - * view specification fragment identifier(i.e., #svgView(...)), then: - * o the values for viewBox, preserveAspectRatio, zoomAndPan, transform and - * viewTarget within currentView will correspond to the values from the SVG view - * specification fragment identifier - * - */ - SVGViewSpec getCurrentView(); - - - /** - * This attribute indicates the current scale factor relative to the initial view - * to take into account user magnification and panning operations, as described - * under Magnification and panning. DOM attributes currentScale and - * currentTranslate are equivalent to the 2x3 matrix [a b c d e f] = - * [currentScale 0 0 currentScale currentTranslate.x currentTranslate.y]. If - * "magnification" is enabled(i.e., zoomAndPan="magnify"), then the effect is as - * if an extra transformation were placed at the outermost level on the SVG - * document fragment(i.e., outside the outermost 'svg' element). - */ - double getCurrentScale(); - - /** - * Set the value above. - */ - void setCurrentScale(double val) throw(DOMException); - - /** - * The corresponding translation factor that takes into account - * user "magnification". - */ - SVGPoint getCurrentTranslate(); - - /** - * Takes a time-out value which indicates that redraw shall not occur until:(a) - * the corresponding unsuspendRedraw(suspend_handle_id) call has been made,(b) - * an unsuspendRedrawAll() call has been made, or(c) its timer has timed out. In - * environments that do not support interactivity(e.g., print media), then - * redraw shall not be suspended. suspend_handle_id = - * suspendRedraw(max_wait_milliseconds) and unsuspendRedraw(suspend_handle_id) - * must be packaged as balanced pairs. When you want to suspend redraw actions as - * a collection of SVG DOM changes occur, then precede the changes to the SVG DOM - * with a method call similar to suspend_handle_id = - * suspendRedraw(max_wait_milliseconds) and follow the changes with a method call - * similar to unsuspendRedraw(suspend_handle_id). Note that multiple - * suspendRedraw calls can be used at once and that each such method call is - * treated independently of the other suspendRedraw method calls. - */ - unsigned long suspendRedraw(unsigned long max_wait_milliseconds); - - /** - * Cancels a specified suspendRedraw() by providing a unique suspend_handle_id. - */ - void unsuspendRedraw(unsigned long suspend_handle_id) throw(DOMException); - - /** - * Cancels all currently active suspendRedraw() method calls. This method is most - * useful at the very end of a set of SVG DOM calls to ensure that all pending - * suspendRedraw() method calls have been cancelled. - */ - void unsuspendRedrawAll(); - - /** - * In rendering environments supporting interactivity, forces the user agent to - * immediately redraw all regions of the viewport that require updating. - */ - void forceRedraw(); - - /** - * Suspends(i.e., pauses) all currently running animations that are defined - * within the SVG document fragment corresponding to this 'svg' element, causing - * the animation clock corresponding to this document fragment to stand still - * until it is unpaused. - */ - void pauseAnimations(); - - /** - * Unsuspends(i.e., unpauses) currently running animations that are defined - * within the SVG document fragment, causing the animation clock to continue from - * the time at which it was suspended. - */ - void unpauseAnimations(); - - /** - * Returns true if this SVG document fragment is in a paused state. - */ - bool animationsPaused(); - - /** - * Returns the current time in seconds relative to the start time for - * the current SVG document fragment. - */ - // double getCurrentTime(); - - /** - * Adjusts the clock for this SVG document fragment, establishing - * a new current time. - */ - void setCurrentTime(double seconds); - - /** - * Returns the list of graphics elements whose rendered content intersects the - * supplied rectangle, honoring the 'pointer-events' property value on each - * candidate graphics element. - */ - NodeList getIntersectionList(const SVGRect &rect, - const SVGElementPtr referenceElement); - - /** - * Returns the list of graphics elements whose rendered content is entirely - * contained within the supplied rectangle, honoring the 'pointer-events' - * property value on each candidate graphics element. - */ - NodeList getEnclosureList(const SVGRect &rect, - const SVGElementPtr referenceElement); - - /** - * Returns true if the rendered content of the given element intersects the - * supplied rectangle, honoring the 'pointer-events' property value on each - * candidate graphics element. - */ - bool checkIntersection(const SVGElementPtr element, const SVGRect &rect); - - /** - * Returns true if the rendered content of the given element is entirely - * contained within the supplied rectangle, honoring the 'pointer-events' - * property value on each candidate graphics element. - */ - bool checkEnclosure(const SVGElementPtr element, const SVGRect &rect); - - /** - * Unselects any selected objects, including any selections of text - * strings and type-in bars. - */ - void deselectAll(); - - /** - * Creates an SVGNumber object outside of any document trees. The object - * is initialized to a value of zero. - */ - SVGNumber createSVGNumber(); - - /** - * Creates an SVGLength object outside of any document trees. The object - * is initialized to the value of 0 user units. - */ - SVGLength createSVGLength(); - - /** - * Creates an SVGAngle object outside of any document trees. The object - * is initialized to the value 0 degrees(unitless). - */ - SVGAngle createSVGAngle(); - - /** - * Creates an SVGPoint object outside of any document trees. The object - * is initialized to the point(0,0) in the user coordinate system. - */ - SVGPoint createSVGPoint(); - - /** - * Creates an SVGMatrix object outside of any document trees. The object - * is initialized to the identity matrix. - */ - SVGMatrix createSVGMatrix(); - - /** - * Creates an SVGRect object outside of any document trees. The object - * is initialized such that all values are set to 0 user units. - */ - SVGRect createSVGRect(); - - /** - * Creates an SVGTransform object outside of any document trees. - * The object is initialized to an identity matrix transform - * (SVG_TRANSFORM_MATRIX). - */ - SVGTransform createSVGTransform(); - - /** - * Creates an SVGTransform object outside of any document trees. - * The object is initialized to the given matrix transform - * (i.e., SVG_TRANSFORM_MATRIX). - */ - SVGTransform createSVGTransformFromMatrix(const SVGMatrix &matrix); - - /** - * Searches this SVG document fragment(i.e., the search is restricted to a - * subset of the document tree) for an Element whose id is given by elementId. If - * an Element is found, that Element is returned. If no such element exists, - * returns null. Behavior is not defined if more than one element has this id. - */ - ElementPtr getElementById(const DOMString& elementId); - - - //#################################################################### - //# SVGTextElement - //#################################################################### - - - //#################################################################### - //# SVGTextContentElement - //#################################################################### - - - /** - * lengthAdjust Types - */ - typedef enum - { - LENGTHADJUST_UNKNOWN = 0, - LENGTHADJUST_SPACING = 1, - LENGTHADJUST_SPACINGANDGLYPHS = 2 - } LengthAdjustType; - - - /** - * Corresponds to attribute textLength on the given element. - */ - SVGAnimatedValue getTextLength(); - - - /** - * Corresponds to attribute lengthAdjust on the given element. The value must be - * one of the length adjust constants specified above. - */ - SVGAnimatedValue getLengthAdjust(); - - - /** - * Returns the total number of characters to be rendered within the current - * element. Includes characters which are included via a 'tref' reference. - */ - long getNumberOfChars(); - - /** - * The total sum of all of the advance values from rendering all of the - * characters within this element, including the advance value on the glyphs - *(horizontal or vertical), the effect of properties 'kerning', 'letter-spacing' - * and 'word-spacing' and adjustments due to attributes dx and dy on 'tspan' - * elements. For non-rendering environments, the user agent shall make reasonable - * assumptions about glyph metrics. - */ - double getComputedTextLength(); - - /** - * The total sum of all of the advance values from rendering the specified - * substring of the characters, including the advance value on the glyphs - *(horizontal or vertical), the effect of properties 'kerning', 'letter-spacing' - * and 'word-spacing' and adjustments due to attributes dx and dy on 'tspan' - * elements. For non-rendering environments, the user agent shall make reasonable - * assumptions about glyph metrics. - */ - double getSubStringLength(unsigned long charnum, unsigned long nchars) - throw(DOMException); - - /** - * Returns the current text position before rendering the character in the user - * coordinate system for rendering the glyph(s) that correspond to the specified - * character. The current text position has already taken into account the - * effects of any inter-character adjustments due to properties 'kerning', - * 'letter-spacing' and 'word-spacing' and adjustments due to attributes x, y, dx - * and dy. If multiple consecutive characters are rendered inseparably(e.g., as - * a single glyph or a sequence of glyphs), then each of the inseparable - * characters will return the start position for the first glyph. - */ - SVGPoint getStartPositionOfChar(unsigned long charnum) throw(DOMException); - - /** - * Returns the current text position after rendering the character in the user - * coordinate system for rendering the glyph(s) that correspond to the specified - * character. This current text position does not take into account the effects - * of any inter-character adjustments to prepare for the next character, such as - * properties 'kerning', 'letter-spacing' and 'word-spacing' and adjustments due - * to attributes x, y, dx and dy. If multiple consecutive characters are rendered - * inseparably(e.g., as a single glyph or a sequence of glyphs), then each of - * the inseparable characters will return the end position for the last glyph. - */ - SVGPoint getEndPositionOfChar(unsigned long charnum) throw(DOMException); - - /** - * Returns a tightest rectangle which defines the minimum and maximum X and Y - * values in the user coordinate system for rendering the glyph(s) that - * correspond to the specified character. The calculations assume that all glyphs - * occupy the full standard glyph cell for the font. If multiple consecutive - * characters are rendered inseparably(e.g., as a single glyph or a sequence of - * glyphs), then each of the inseparable characters will return the same extent. - */ - SVGRect getExtentOfChar(unsigned long charnum) throw(DOMException); - - /** - * Returns the rotation value relative to the current user coordinate system used - * to render the glyph(s) corresponding to the specified character. If multiple - * glyph(s) are used to render the given character and the glyphs each have - * different rotations(e.g., due to text-on-a-path), the user agent shall return - * an average value(e.g., the rotation angle at the midpoint along the path for - * all glyphs used to render this character). The rotation value represents the - * rotation that is supplemental to any rotation due to properties - * 'glyph-orientation-horizontal' and 'glyph-orientation-vertical'; thus, any - * glyph rotations due to these properties are not included into the returned - * rotation value. If multiple consecutive characters are rendered inseparably - *(e.g., as a single glyph or a sequence of glyphs), then each of the - * inseparable characters will return the same rotation value. - */ - double getRotationOfChar(unsigned long charnum) throw(DOMException); - - /** - * Returns the index of the character whose corresponding glyph cell bounding box - * contains the specified point. The calculations assume that all glyphs occupy - * the full standard glyph cell for the font. If no such character exists, a - * value of -1 is returned. If multiple such characters exist, the character - * within the element whose glyphs were rendered last(i.e., take into account - * any reordering such as for bidirectional text) is used. If multiple - * consecutive characters are rendered inseparably(e.g., as a single glyph or a - * sequence of glyphs), then the user agent shall allocate an equal percentage of - * the text advance amount to each of the contributing characters in determining - * which of the characters is chosen. - */ - long getCharNumAtPosition(const SVGPoint &point); - - /** - * Causes the specified substring to be selected just as if the user - * selected the substring interactively. - */ - void selectSubString(unsigned long charnum, unsigned long nchars) - throw(DOMException); - - - - - - //#################################################################### - //# SVGTextPathElement - //#################################################################### - - - /** - * textPath Method Types - */ - typedef enum - { - TEXTPATH_METHODTYPE_UNKNOWN = 0, - TEXTPATH_METHODTYPE_ALIGN = 1, - TEXTPATH_METHODTYPE_STRETCH = 2 - } TextPathMethodType; - - /** - * textPath Spacing Types - */ - typedef enum - { - TEXTPATH_SPACINGTYPE_UNKNOWN = 0, - TEXTPATH_SPACINGTYPE_AUTO = 1, - TEXTPATH_SPACINGTYPE_EXACT = 2 - } TextPathSpacingType; - - - /** - * Corresponds to attribute startOffset on the given 'textPath' element. - */ - SVGAnimatedValue getStartOffset(); - - /** - * Corresponds to attribute method on the given 'textPath' element. The value - * must be one of the method type constants specified above. - */ - SVGAnimatedValue getMethod(); - - /** - * Corresponds to attribute spacing on the given 'textPath' element. - * The value must be one of the spacing type constants specified above. - */ - SVGAnimatedValue getSpacing(); - - - //#################################################################### - //# SVGTextPositioningElement - //#################################################################### - - - /** - * Corresponds to attribute x on the given element. - */ - // SVGAnimatedValue getX(); - - /** - * Corresponds to attribute y on the given element. - */ - // SVGAnimatedValue getY(); - - /** - * Corresponds to attribute dx on the given element. - */ - // SVGAnimatedValue getDx(); - - /** - * Corresponds to attribute dy on the given element. - */ - // SVGAnimatedValue getDy(); - - - /** - * Corresponds to attribute rotate on the given element. - */ - SVGAnimatedValueList getRotate(); - - - //#################################################################### - //# SVGTitleElement - //#################################################################### - - //#################################################################### - //# SVGTRefElement - //#################################################################### - - //#################################################################### - //# SVGTSpanElement - //#################################################################### - - //#################################################################### - //# SVGSwitchElement - //#################################################################### - - //#################################################################### - //# SVGUseElement - //#################################################################### - - /** - * Corresponds to attribute x on the given 'use' element. - */ - // SVGAnimatedValue getX(); - - /** - * Corresponds to attribute y on the given 'use' element. - */ - // SVGAnimatedValue getY(); - - /** - * Corresponds to attribute width on the given 'use' element. - */ - // SVGAnimatedValue getWidth(); - - /** - * Corresponds to attribute height on the given 'use' element. - */ - // SVGAnimatedValue getHeight(); - - /** - * The root of the "instance tree". See description of SVGElementInstance for - * a discussion on the instance tree. - * */ - SVGElementInstance getInstanceRoot(); - - /** - * If the 'href' attribute is being animated, contains the current animated root - * of the "instance tree". If the 'href' attribute is not currently being - * animated, contains the same value as 'instanceRoot'. The root of the "instance - * tree". See description of SVGElementInstance for a discussion on the instance - * tree. - */ - SVGElementInstance getAnimatedInstanceRoot(); - - //#################################################################### - //# SVGVKernElement - //#################################################################### - - //#################################################################### - //# SVGViewElement - //#################################################################### - - - /** - * - */ - SVGValueList getViewTarget(); - - - - - //################## - //# Non-API methods - //################## - - - /** - * - */ - ~SVGElement() {} - - -}; - - - -/*######################################################################### -## SVGDocument -#########################################################################*/ - -/** - * When an 'svg' element is embedded inline as a component of a document from - * another namespace, such as when an 'svg' element is embedded inline within an - * XHTML document [XHTML], then an SVGDocument object will not exist; instead, - * the root object in the document object hierarchy will be a Document object of - * a different type, such as an HTMLDocument object. - * - * However, an SVGDocument object will indeed exist when the root element of the - * XML document hierarchy is an 'svg' element, such as when viewing a stand-alone - * SVG file(i.e., a file with MIME type "image/svg+xml"). In this case, the - * SVGDocument object will be the root object of the document object model - * hierarchy. - * - * In the case where an SVG document is embedded by reference, such as when an - * XHTML document has an 'object' element whose href attribute references an SVG - * document(i.e., a document whose MIME type is "image/svg+xml" and whose root - * element is thus an 'svg' element), there will exist two distinct DOM - * hierarchies. The first DOM hierarchy will be for the referencing document - *(e.g., an XHTML document). The second DOM hierarchy will be for the referenced - * SVG document. In this second DOM hierarchy, the root object of the document - * object model hierarchy is an SVGDocument object. - */ -class SVGDocument : public Document, - public events::DocumentEvent -{ -public: - - - /** - * The title of a document as specified by the title sub-element of the 'svg' - * root element(i.e., <svg><title>Here is the title</title>...</svg>) - */ - DOMString getTitle(); - - /** - * Returns the URI of the page that linked to this page. The value is an empty - * string if the user navigated to the page directly(not through a link, but, - * for example, via a bookmark). - */ - DOMString getReferrer(); - - /** - * The domain name of the server that served the document, or a null string if - * the server cannot be identified by a domain name. - */ - DOMString getDomain(); - - /** - * The complete URI of the document. - */ - DOMString getURL(); - - /** - * The root 'svg' element in the document hierarchy. - */ - SVGElementPtr getRootElement(); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - ~SVGDocument() {} - -}; - - - -/*######################################################################### -## GetSVGDocument -#########################################################################*/ - -/** - * In the case where an SVG document is embedded by reference, such as when an - * XHTML document has an 'object' element whose href(or equivalent) attribute - * references an SVG document(i.e., a document whose MIME type is - * "image/svg+xml" and whose root element is thus an 'svg' element), the SVG user - * agent is required to implement the GetSVGDocument interface for the element - * which references the SVG document(e.g., the HTML 'object' or comparable - * referencing elements). - */ -class GetSVGDocument -{ -public: - - /** - * Returns the SVGDocument object for the referenced SVG document. - */ - SVGDocumentPtr getSVGDocument() - throw(DOMException); - - //################## - //# Non-API methods - //################## - - /** - * - */ - ~GetSVGDocument() {} - -}; - - - - - - - -} //namespace svg -} //namespace dom -} //namespace w3c -} //namespace org - -#endif // SEEN_SVG_H -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - diff --git a/src/dom/svgimpl.cpp b/src/dom/svgimpl.cpp index 87f43af81..4372e1b87 100644 --- a/src/dom/svgimpl.cpp +++ b/src/dom/svgimpl.cpp @@ -777,7 +777,7 @@ DOMString SVGSVGElementImpl::getAttribute(const DOMString& name) else if (name == "y") s = d2s(y.getAnimVal().getValue()); else - s = SVGElement::getAttribute(name); + s = SVGElementImpl::getAttribute(name); return s; } @@ -792,7 +792,7 @@ void SVGSVGElementImpl::setAttribute(const DOMString& name, x.getAnimVal().setValue(s2d(value)); else if (name == "y") y.getAnimVal().setValue(s2d(value)); - SVGElement::setAttribute(name, value); + SVGElementImpl::setAttribute(name, value); } diff --git a/src/dropper-context.cpp b/src/dropper-context.cpp index 7dfe203ba..d513dd587 100644 --- a/src/dropper-context.cpp +++ b/src/dropper-context.cpp @@ -279,7 +279,7 @@ bool SPDropperContext::root_handler(GdkEvent* event) { // locale-sensitive printf is OK, since this goes to the UI, not into SVG gchar *alpha = g_strdup_printf(_(" alpha %.3g"), alpha_to_set); // where the color is picked, to show in the statusbar - gchar *where = this->dragging ? g_strdup_printf(_(", averaged with radius %d"), (int) rw) : g_strdup_printf(_(" under cursor")); + gchar *where = this->dragging ? g_strdup_printf(_(", averaged with radius %d"), (int) rw) : g_strdup_printf("%s", _(" under cursor")); // message, to show in the statusbar const gchar *message = this->dragging ? _("<b>Release mouse</b> to set color.") : _("<b>Click</b> to set fill, <b>Shift+click</b> to set stroke; <b>drag</b> to average color in area; with <b>Alt</b> to pick inverse color; <b>Ctrl+C</b> to copy the color under mouse to clipboard"); diff --git a/src/ege-color-prof-tracker.cpp b/src/ege-color-prof-tracker.cpp index 53004a96d..eca90ecb7 100644 --- a/src/ege-color-prof-tracker.cpp +++ b/src/ege-color-prof-tracker.cpp @@ -110,6 +110,9 @@ typedef struct _ScreenTrack { GdkFilterReturn x11_win_filter(GdkXEvent *xevent, GdkEvent *event, gpointer data); void handle_property_change(GdkScreen* screen, const gchar* name); void add_x11_tracking_for_screen(GdkScreen* screen, ScreenTrack* screenTrack); +static void fire(GdkScreen* screen, gint monitor); +static void clear_profile( GdkScreen* screen, guint monitor ); +static void set_profile( GdkScreen* screen, guint monitor, const guint8* data, guint len ); #endif /* GDK_WINDOWING_X11 */ static guint signals[LAST_SIGNAL] = {0}; @@ -132,9 +135,6 @@ static void event_after_cb( GtkWidget* widget, GdkEvent* event, gpointer user_da static void target_hierarchy_changed_cb(GtkWidget* widget, GtkWidget* prev_top, gpointer user_data); static void target_screen_changed_cb(GtkWidget* widget, GdkScreen* prev_screen, gpointer user_data); static void screen_size_changed_cb(GdkScreen* screen, gpointer user_data); -static void fire(GdkScreen* screen, gint monitor); -static void clear_profile( GdkScreen* screen, guint monitor ); -static void set_profile( GdkScreen* screen, guint monitor, const guint8* data, guint len ); static void track_screen( GdkScreen* screen, EgeColorProfTracker* tracker ); G_DEFINE_TYPE(EgeColorProfTracker, ege_color_prof_tracker, G_TYPE_OBJECT); @@ -474,83 +474,6 @@ void screen_size_changed_cb(GdkScreen* screen, gpointer user_data) } } -void fire(GdkScreen* screen, gint monitor) -{ - GSList* curr = tracked_screens; - while ( curr ) { - ScreenTrack* track = (ScreenTrack*)curr->data; - if ( track->screen == screen) { - GSList* trackHook = track->trackers; - while ( trackHook ) { - EgeColorProfTracker* tracker = (EgeColorProfTracker*)(trackHook->data); - if ( (monitor == -1) || (tracker->private_data->_monitor == monitor) ) { - g_signal_emit( G_OBJECT(tracker), signals[CHANGED], 0 ); - } - trackHook = g_slist_next(trackHook); - } - } - curr = g_slist_next(curr); - } -} - -static void clear_profile( GdkScreen* screen, guint monitor ) -{ - GSList* curr = tracked_screens; - while ( curr && ((ScreenTrack*)curr->data)->screen != screen ) { - curr = g_slist_next(curr); - } - if ( curr ) { - ScreenTrack* track = (ScreenTrack*)curr->data; - guint i = 0; - GByteArray* previous = 0; - for ( i = track->profiles->len; i <= monitor; i++ ) { - g_ptr_array_add( track->profiles, 0 ); - } - previous = (GByteArray*)g_ptr_array_index( track->profiles, monitor ); - if ( previous ) { - g_byte_array_free( previous, TRUE ); - } - - track->profiles->pdata[monitor] = 0; - } -} - -static void set_profile( GdkScreen* screen, guint monitor, const guint8* data, guint len ) -{ - GSList* curr = tracked_screens; - while ( curr && ((ScreenTrack*)curr->data)->screen != screen ) { - curr = g_slist_next(curr); - } - if ( curr ) { - /* Something happened to a screen being tracked. */ - ScreenTrack* track = (ScreenTrack*)curr->data; - gint screenNum = gdk_screen_get_number(screen); - guint i = 0; - GByteArray* previous = 0; - GSList* abstracts = 0; - - for ( i = track->profiles->len; i <= monitor; i++ ) { - g_ptr_array_add( track->profiles, 0 ); - } - previous = (GByteArray*)g_ptr_array_index( track->profiles, monitor ); - if ( previous ) { - g_byte_array_free( previous, TRUE ); - } - - if ( data && len ) { - GByteArray* newBytes = g_byte_array_sized_new( len ); - newBytes = g_byte_array_append( newBytes, data, len ); - track->profiles->pdata[monitor] = newBytes; - } else { - track->profiles->pdata[monitor] = 0; - } - - for ( abstracts = abstract_trackers; abstracts; abstracts = g_slist_next(abstracts) ) { - g_signal_emit( G_OBJECT(abstracts->data), signals[MODIFIED], 0, screenNum, monitor ); - } - } -} - #ifdef GDK_WINDOWING_X11 GdkFilterReturn x11_win_filter(GdkXEvent *xevent, GdkEvent *event, @@ -692,4 +615,81 @@ void add_x11_tracking_for_screen(GdkScreen* screen, ScreenTrack* screenTrack) } } } + +void fire(GdkScreen* screen, gint monitor) +{ + GSList* curr = tracked_screens; + while ( curr ) { + ScreenTrack* track = (ScreenTrack*)curr->data; + if ( track->screen == screen) { + GSList* trackHook = track->trackers; + while ( trackHook ) { + EgeColorProfTracker* tracker = (EgeColorProfTracker*)(trackHook->data); + if ( (monitor == -1) || (tracker->private_data->_monitor == monitor) ) { + g_signal_emit( G_OBJECT(tracker), signals[CHANGED], 0 ); + } + trackHook = g_slist_next(trackHook); + } + } + curr = g_slist_next(curr); + } +} + +static void clear_profile( GdkScreen* screen, guint monitor ) +{ + GSList* curr = tracked_screens; + while ( curr && ((ScreenTrack*)curr->data)->screen != screen ) { + curr = g_slist_next(curr); + } + if ( curr ) { + ScreenTrack* track = (ScreenTrack*)curr->data; + guint i = 0; + GByteArray* previous = 0; + for ( i = track->profiles->len; i <= monitor; i++ ) { + g_ptr_array_add( track->profiles, 0 ); + } + previous = (GByteArray*)g_ptr_array_index( track->profiles, monitor ); + if ( previous ) { + g_byte_array_free( previous, TRUE ); + } + + track->profiles->pdata[monitor] = 0; + } +} + +static void set_profile( GdkScreen* screen, guint monitor, const guint8* data, guint len ) +{ + GSList* curr = tracked_screens; + while ( curr && ((ScreenTrack*)curr->data)->screen != screen ) { + curr = g_slist_next(curr); + } + if ( curr ) { + /* Something happened to a screen being tracked. */ + ScreenTrack* track = (ScreenTrack*)curr->data; + gint screenNum = gdk_screen_get_number(screen); + guint i = 0; + GByteArray* previous = 0; + GSList* abstracts = 0; + + for ( i = track->profiles->len; i <= monitor; i++ ) { + g_ptr_array_add( track->profiles, 0 ); + } + previous = (GByteArray*)g_ptr_array_index( track->profiles, monitor ); + if ( previous ) { + g_byte_array_free( previous, TRUE ); + } + + if ( data && len ) { + GByteArray* newBytes = g_byte_array_sized_new( len ); + newBytes = g_byte_array_append( newBytes, data, len ); + track->profiles->pdata[monitor] = newBytes; + } else { + track->profiles->pdata[monitor] = 0; + } + + for ( abstracts = abstract_trackers; abstracts; abstracts = g_slist_next(abstracts) ) { + g_signal_emit( G_OBJECT(abstracts->data), signals[MODIFIED], 0, screenNum, monitor ); + } + } +} #endif /* GDK_WINDOWING_X11 */ diff --git a/src/extension/dbus/document-interface.cpp b/src/extension/dbus/document-interface.cpp index 3cb03646a..ccc39fbef 100644 --- a/src/extension/dbus/document-interface.cpp +++ b/src/extension/dbus/document-interface.cpp @@ -43,6 +43,7 @@ #include "sp-object.h" #include "sp-root.h" #include "style.h" //style_write +#include "util/units.h" #include "extension/system.h" //IO @@ -543,13 +544,13 @@ gchar *document_interface_node(DocumentInterface *doc_interface, gchar *type, GE gdouble document_interface_document_get_width (DocumentInterface *doc_interface) { - return doc_interface->target.getDocument()->getWidth(); + return doc_interface->target.getDocument()->getWidth().value("px"); } gdouble document_interface_document_get_height (DocumentInterface *doc_interface) { - return doc_interface->target.getDocument()->getHeight(); + return doc_interface->target.getDocument()->getHeight().value("px"); } gchar *document_interface_document_get_css(DocumentInterface *doc_interface, GError ** error) diff --git a/src/extension/init.cpp b/src/extension/init.cpp index 1a163d4c2..2dde9eeb8 100644 --- a/src/extension/init.cpp +++ b/src/extension/init.cpp @@ -295,7 +295,7 @@ static void build_module_from_dir(gchar const *dirname) { if (!dirname) { - g_warning(_("Null external module directory name. Modules will not be loaded.")); + g_warning("%s", _("Null external module directory name. Modules will not be loaded.")); return; } diff --git a/src/extension/internal/filter/filter-file.cpp b/src/extension/internal/filter/filter-file.cpp index d569c6438..48e64f089 100644 --- a/src/extension/internal/filter/filter-file.cpp +++ b/src/extension/internal/filter/filter-file.cpp @@ -44,7 +44,7 @@ void Filter::filters_load_dir (gchar const * dirname, gchar * menuname) { if (!dirname) { - g_warning(_("Null external module directory name. Filters will not be loaded.")); + g_warning("%s", _("Null external module directory name. Filters will not be loaded.")); return; } diff --git a/src/extension/internal/pdf-input-cairo.cpp b/src/extension/internal/pdf-input-cairo.cpp index c2f2b43a5..355a5784d 100644 --- a/src/extension/internal/pdf-input-cairo.cpp +++ b/src/extension/internal/pdf-input-cairo.cpp @@ -491,7 +491,7 @@ bool PdfImportCairoDialog::_onDraw(const Cairo::RefPtr<Cairo::Context>& cr) { */ void PdfImportCairoDialog::_setPreviewPage(int page) { - PopplerPage *_previewed_page = poppler_document_get_page(_poppler_doc, page); + PopplerPage *_previewed_page = poppler_document_get_page(_poppler_doc, page-1); // Try to get a thumbnail from the PDF if possible if (!_render_thumb) { diff --git a/src/extension/system.cpp b/src/extension/system.cpp index f7fd48b3f..a4c370f4c 100644 --- a/src/extension/system.cpp +++ b/src/extension/system.cpp @@ -124,7 +124,7 @@ SPDocument *open(Extension *key, gchar const *filename) if ( inkscape_use_gui() ) { sp_ui_error_dialog(_("Format autodetect failed. The file is being opened as SVG.")); } else { - g_warning(_("Format autodetect failed. The file is being opened as SVG.")); + g_warning("%s", _("Format autodetect failed. The file is being opened as SVG.")); } } diff --git a/src/file.cpp b/src/file.cpp index caea05d95..baa7b12b5 100644 --- a/src/file.cpp +++ b/src/file.cpp @@ -74,6 +74,8 @@ #include <glibmm/i18n.h> #include <glibmm/miscutils.h> +#include <string> + using Inkscape::DocumentUndo; #ifdef WITH_GNOME_VFS @@ -124,7 +126,7 @@ static void sp_file_add_recent(gchar const *uri) /** * Create a blank document and add it to the desktop */ -SPDesktop *sp_file_new(const Glib::ustring &templ) +SPDesktop *sp_file_new(const std::string &templ) { SPDocument *doc = SPDocument::createNewDoc( !templ.empty() ? templ.c_str() : 0 , TRUE, true ); g_return_val_if_fail(doc != NULL, NULL); @@ -139,24 +141,13 @@ SPDesktop *sp_file_new(const Glib::ustring &templ) } SPDesktop *desktop = SP_ACTIVE_DESKTOP; - if (desktop) { + if (desktop) desktop->setWaitingCursor(); - } - SPDocument *existing = desktop ? sp_desktop_document(desktop) : NULL; - - if (existing && existing->virgin) { - // If the current desktop is empty, open the document there - doc->ensureUpToDate(); // TODO this will trigger broken link warnings, etc. - desktop->change_document(doc); - doc->emitResizedSignal(doc->getWidth().value("px"), doc->getHeight().value("px")); - } else { - // create a whole new desktop and window - SPViewWidget *dtw = sp_desktop_widget_new(sp_document_namedview(doc, NULL)); // TODO this will trigger broken link warnings, etc. - g_return_val_if_fail(dtw != NULL, NULL); - sp_create_window(dtw, TRUE); - desktop = static_cast<SPDesktop *>(dtw->view); - } + SPViewWidget *dtw = sp_desktop_widget_new(sp_document_namedview(doc, NULL)); // TODO this will trigger broken link warnings, etc. + g_return_val_if_fail(dtw != NULL, NULL); + sp_create_window(dtw, TRUE); + desktop = static_cast<SPDesktop *>(dtw->view); doc->doUnref(); @@ -166,6 +157,9 @@ SPDesktop *sp_file_new(const Glib::ustring &templ) #ifdef WITH_DBUS Inkscape::Extension::Dbus::dbus_init_desktop_interface(desktop); #endif + + if (desktop) + desktop->clearWaitingCursor(); return desktop; } @@ -220,7 +214,7 @@ SPDesktop* sp_file_new_default() { Glib::ustring templateUri = sp_file_default_template_uri(); SPDesktop* desk = sp_file_new(sp_file_default_template_uri()); - rdf_add_from_preferences( SP_ACTIVE_DOCUMENT ); + //rdf_add_from_preferences( SP_ACTIVE_DOCUMENT ); return desk; } diff --git a/src/file.h b/src/file.h index 682ca422e..7f80f3645 100644 --- a/src/file.h +++ b/src/file.h @@ -16,6 +16,7 @@ */ #include <glibmm/ustring.h> +#include <string> #include "extension/system.h" class SPDesktop; @@ -43,7 +44,7 @@ Glib::ustring sp_file_default_template_uri(); * Creates a new Inkscape document and window. * Return value is a pointer to the newly created desktop. */ -SPDesktop* sp_file_new (const Glib::ustring &templ); +SPDesktop* sp_file_new (const std::string &templ); SPDesktop* sp_file_new_default (void); /*###################### diff --git a/src/gradient-drag.cpp b/src/gradient-drag.cpp index fb58aa508..096b2b47b 100644 --- a/src/gradient-drag.cpp +++ b/src/gradient-drag.cpp @@ -1438,7 +1438,7 @@ void GrDragger::updateTip() } g_free(item_desc); } else if (g_slist_length (draggables) == 2 && isA (POINT_RG_CENTER) && isA (POINT_RG_FOCUS)) { - this->knot->tip = g_strdup_printf (_("Radial gradient <b>center</b> and <b>focus</b>; drag with <b>Shift</b> to separate focus")); + this->knot->tip = g_strdup_printf ("%s", _("Radial gradient <b>center</b> and <b>focus</b>; drag with <b>Shift</b> to separate focus")); } else { int length = g_slist_length (this->draggables); this->knot->tip = g_strdup_printf (ngettext("Gradient point shared by <b>%d</b> gradient; drag with <b>Shift</b> to separate", diff --git a/src/interface.cpp b/src/interface.cpp index ea5eaf16a..d18eb8063 100644 --- a/src/interface.cpp +++ b/src/interface.cpp @@ -716,33 +716,6 @@ sp_recent_open(GtkRecentChooser *recent_menu, gpointer /*user_data*/) g_free(uri); } -static bool -compare_file_basenames(gchar const *a, gchar const *b) { - bool rc; - gchar *ba, *bb; - - bool sort_by_fullname = true; // Sort by full name (including path) or just filename - if (sort_by_fullname) { - ba = g_strdup(a); - bb = g_strdup(b); - } else { - ba = g_path_get_basename(a); - bb = g_path_get_basename(b); - } - - gchar *fa = g_filename_to_utf8(ba, -1, NULL, NULL, NULL); - gchar *fb = g_filename_to_utf8(bb, -1, NULL, NULL, NULL); - g_free(ba); - g_free(bb); - - rc = g_utf8_collate(fa, fb) < 0; - - g_free(fa); - g_free(fb); - - return rc; -} - static void sp_ui_checkboxes_menus(GtkMenu *m, Inkscape::UI::View::View *view) { diff --git a/src/libdepixelize/Makefile_insert b/src/libdepixelize/Makefile_insert index 75b19bf5c..421d32439 100644 --- a/src/libdepixelize/Makefile_insert +++ b/src/libdepixelize/Makefile_insert @@ -5,7 +5,15 @@ libdepixelize/all: libdepixelize/libdepixelize.a libdepixelize/clean: rm -f libdepixelize/libdepixelize.a $(libdepixelize_libdepixelize_a_OBJECTS) -libdepixelize_libdepixelize_a_SOURCES = \ - libdepixelize/kopftracer2011.cpp \ - libdepixelize/kopftracer2011.h \ - libdepixelize/splines.h +libdepixelize_libdepixelize_a_SOURCES = \ + libdepixelize/kopftracer2011.cpp \ + libdepixelize/kopftracer2011.h \ + libdepixelize/splines.h \ + libdepixelize/priv/branchless.h \ + libdepixelize/priv/colorspace.h \ + libdepixelize/priv/homogeneoussplines.h \ + libdepixelize/priv/iterator.h \ + libdepixelize/priv/pixelgraph.h \ + libdepixelize/priv/point.h \ + libdepixelize/priv/simplifiedvoronoi.h \ + libdepixelize/priv/splines.h diff --git a/src/libnrtype/FontFactory.cpp b/src/libnrtype/FontFactory.cpp index 74c706a1b..c91e57065 100644 --- a/src/libnrtype/FontFactory.cpp +++ b/src/libnrtype/FontFactory.cpp @@ -962,7 +962,7 @@ font_instance *font_factory::Face(PangoFontDescription *descr, bool canFail) nFace = pango_font_map_load_font(fontServer,fontContext,descr); } else { - g_warning(_("Ignoring font without family that will crash Pango")); + g_warning("%s", _("Ignoring font without family that will crash Pango")); } if ( nFace ) { diff --git a/src/libnrtype/Layout-TNG-Output.cpp b/src/libnrtype/Layout-TNG-Output.cpp index f7f910c2f..060cecebf 100644 --- a/src/libnrtype/Layout-TNG-Output.cpp +++ b/src/libnrtype/Layout-TNG-Output.cpp @@ -181,8 +181,9 @@ void Layout::show(DrawingGroup *in_arena, Geom::OptRect const &paintbox) const glyph_index++; } nr_text->setStyle(text_source->style); - nr_text->setItemBounds(paintbox); in_arena->prependChild(nr_text); + // Set item bounds without filter enlargement + in_arena->setItemBounds(paintbox); } } diff --git a/src/marker.cpp b/src/marker.cpp index 730985b01..45188b4a4 100644 --- a/src/marker.cpp +++ b/src/marker.cpp @@ -35,11 +35,6 @@ struct SPMarkerView { std::vector<Inkscape::DrawingItem *> items; }; -static Inkscape::DrawingItem *sp_marker_private_show (SPItem *item, Inkscape::Drawing &drawing, unsigned int key, unsigned int flags); -static void sp_marker_private_hide (SPItem *item, unsigned int key); -static Geom::OptRect sp_marker_bbox(SPItem const *item, Geom::Affine const &transform, SPItem::BBoxType type); -static void sp_marker_print (SPItem *item, SPPrintContext *ctx); - static void sp_marker_view_remove (SPMarker *marker, SPMarkerView *view, unsigned int destroyitems); #include "sp-factory.h" @@ -503,57 +498,19 @@ Inkscape::DrawingItem* SPMarker::show(Inkscape::Drawing &drawing, unsigned int k return SPGroup::show(drawing, key, flags); } -/** - * This routine is disabled to break propagation. - */ -static Inkscape::DrawingItem * -sp_marker_private_show (SPItem */*item*/, Inkscape::Drawing &/*drawing*/, unsigned int /*key*/, unsigned int /*flags*/) -{ - /* Break propagation */ - return NULL; -} - void SPMarker::hide(unsigned int key) { // CPPIFY: correct? SPGroup::hide(key); } -/** - * This routine is disabled to break propagation. - */ -static void -sp_marker_private_hide (SPItem */*item*/, unsigned int /*key*/) -{ - /* Break propagation */ -} - Geom::OptRect SPMarker::bbox(Geom::Affine const &transform, SPItem::BBoxType type) { return Geom::OptRect(); } -/** - * This routine is disabled to break propagation. - */ -static Geom::OptRect -sp_marker_bbox(SPItem const *, Geom::Affine const &, SPItem::BBoxType) -{ - /* Break propagation */ - return Geom::OptRect(); -} - void SPMarker::print(SPPrintContext* ctx) { } -/** - * This routine is disabled to break propagation. - */ -static void -sp_marker_print (SPItem */*item*/, SPPrintContext */*ctx*/) -{ - /* Break propagation */ -} - /* fixme: Remove link if zero-sized (Lauris) */ /** diff --git a/src/rect-context.cpp b/src/rect-context.cpp index 599680190..f60b3d465 100644 --- a/src/rect-context.cpp +++ b/src/rect-context.cpp @@ -165,9 +165,7 @@ bool SPRectContext::item_handler(SPItem* item, GdkEvent* event) { break; } - if (!ret) { - ret = SPEventContext::item_handler(item, event); - } + ret = SPEventContext::item_handler(item, event); return ret; } diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp index 0cb7123ae..64ecd6e04 100644 --- a/src/selection-chemistry.cpp +++ b/src/selection-chemistry.cpp @@ -1104,18 +1104,21 @@ void sp_selection_cut(SPDesktop *desktop) * \pre item != NULL */ SPCSSAttr * -take_style_from_item(SPItem *item) +take_style_from_item(SPObject *object) { + // CPPIFY: + // This function should only take SPItems, but currently SPString is not an Item. + // write the complete cascaded style, context-free - SPCSSAttr *css = sp_css_attr_from_object(item, SP_STYLE_FLAG_ALWAYS); + SPCSSAttr *css = sp_css_attr_from_object(object, SP_STYLE_FLAG_ALWAYS); if (css == NULL) return NULL; - if ((SP_IS_GROUP(item) && item->children) || - (SP_IS_TEXT(item) && item->children && item->children->next == NULL)) { + if ((SP_IS_GROUP(object) && object->children) || + (SP_IS_TEXT(object) && object->children && object->children->next == NULL)) { // if this is a text with exactly one tspan child, merge the style of that tspan as well // If this is a group, merge the style of its topmost (last) child with style - for (SPObject *last_element = item->lastChild(); last_element != NULL; last_element = last_element->getPrev()) { + for (SPObject *last_element = object->lastChild(); last_element != NULL; last_element = last_element->getPrev()) { if ( last_element->style ) { SPCSSAttr *temp = sp_css_attr_from_object(last_element, SP_STYLE_FLAG_IFSET); if (temp) { @@ -1126,15 +1129,18 @@ take_style_from_item(SPItem *item) } } } - if (!(SP_IS_TEXT(item) || SP_IS_TSPAN(item) || SP_IS_TREF(item) || SP_IS_STRING(item))) { + + if (!(SP_IS_TEXT(object) || SP_IS_TSPAN(object) || SP_IS_TREF(object) || SP_IS_STRING(object))) { // do not copy text properties from non-text objects, it's confusing css = sp_css_attr_unset_text(css); } - // FIXME: also transform gradient/pattern fills, by forking? NO, this must be nondestructive - double ex = item->i2doc_affine().descrim(); - if (ex != 1.0) { - css = sp_css_attr_scale(css, ex); + if (SP_IS_ITEM(object)) { + // FIXME: also transform gradient/pattern fills, by forking? NO, this must be nondestructive + double ex = SP_ITEM(object)->i2doc_affine().descrim(); + if (ex != 1.0) { + css = sp_css_attr_scale(css, ex); + } } return css; diff --git a/src/selection-chemistry.h b/src/selection-chemistry.h index f7a4f928c..e86000f70 100644 --- a/src/selection-chemistry.h +++ b/src/selection-chemistry.h @@ -85,7 +85,7 @@ void sp_selection_raise_to_top(Inkscape::Selection *selection, SPDesktop *deskto void sp_selection_lower(Inkscape::Selection *selection, SPDesktop *desktop); void sp_selection_lower_to_bottom(Inkscape::Selection *selection, SPDesktop *desktop); -SPCSSAttr *take_style_from_item (SPItem *item); +SPCSSAttr *take_style_from_item (SPObject *object); void sp_selection_cut(SPDesktop *desktop); void sp_selection_copy(SPDesktop *desktop); diff --git a/src/selection-describer.cpp b/src/selection-describer.cpp index fc6cb7f91..96ef3d0d1 100644 --- a/src/selection-describer.cpp +++ b/src/selection-describer.cpp @@ -146,7 +146,7 @@ void SelectionDescriber::_updateMessageFromSelection(Inkscape::Selection *select if (layer == parent) in_phrase = g_strdup_printf(_(" in %s"), layer_name); else if (!layer) - in_phrase = g_strdup_printf(_(" hidden in definitions")); + in_phrase = g_strdup_printf("%s", _(" hidden in definitions")); else in_phrase = g_strdup_printf(_(" in group %s (%s)"), parent_name, layer_name); } else { diff --git a/src/sp-gradient-spread.h b/src/sp-gradient-spread.h index cc74ef614..60e33b7c0 100644 --- a/src/sp-gradient-spread.h +++ b/src/sp-gradient-spread.h @@ -4,7 +4,8 @@ enum SPGradientSpread { SP_GRADIENT_SPREAD_PAD, SP_GRADIENT_SPREAD_REFLECT, - SP_GRADIENT_SPREAD_REPEAT + SP_GRADIENT_SPREAD_REPEAT, + SP_GRADIENT_SPREAD_UNDEFINED = INT_MAX }; diff --git a/src/sp-guide.cpp b/src/sp-guide.cpp index 42a3b1ba7..83d2d8e78 100644 --- a/src/sp-guide.cpp +++ b/src/sp-guide.cpp @@ -470,7 +470,7 @@ char *sp_guide_description(SPGuide const *guide, const bool verbose) char *descr = 0; if ( !guide->document ) { // Guide has probably been deleted and no longer has an attached namedview. - descr = g_strdup_printf(_("Deleted")); + descr = g_strdup_printf("%s", _("Deleted")); } else { SPNamedView *namedview = sp_document_namedview(guide->document, NULL); diff --git a/src/sp-image.cpp b/src/sp-image.cpp index c3352fcf0..38c749dd3 100644 --- a/src/sp-image.cpp +++ b/src/sp-image.cpp @@ -78,9 +78,6 @@ static void sp_image_set_curve(SPImage *image); static Inkscape::Pixbuf *sp_image_repr_read_image(gchar const *href, gchar const *absref, gchar const *base ); static void sp_image_update_arenaitem (SPImage *img, Inkscape::DrawingImage *ai); static void sp_image_update_canvas_image (SPImage *image); -static GdkPixbuf * sp_image_repr_read_dataURI (const gchar * uri_data); -static GdkPixbuf * sp_image_repr_read_b64 (const gchar * uri_data); -static void pixbuf_set_mime_data(GdkPixbuf *pb, guchar *data, gsize len, GdkPixbufFormat *fmt); #ifdef DEBUG_LCMS extern guint update_in_progress; diff --git a/src/sp-item.cpp b/src/sp-item.cpp index a91d0e741..b7ef68f7d 100644 --- a/src/sp-item.cpp +++ b/src/sp-item.cpp @@ -608,8 +608,8 @@ void SPItem::update(SPCtx *ctx, guint flags) { Geom::OptRect item_bbox = item->visualBounds(); SPItemView *itemview = item->display; do { - if (itemview->arenaitem) - itemview->arenaitem->setItemBounds(item_bbox); + if (itemview->arenaitem) // Already enlarged by visualBounds + itemview->arenaitem->setFilterBounds(item_bbox); } while ( (itemview = itemview->next) ); } @@ -1065,7 +1065,8 @@ Inkscape::DrawingItem *SPItem::invoke_show(Inkscape::Drawing &drawing, unsigned item_bbox = visualBounds(); } ai->setData(this); - ai->setItemBounds(item_bbox); + // Already enlarged by visualBounds for filters + ai->setFilterBounds(item_bbox); } return ai; diff --git a/src/spray-context.cpp b/src/spray-context.cpp index 51fdab6ff..08dc59bce 100644 --- a/src/spray-context.cpp +++ b/src/spray-context.cpp @@ -186,7 +186,7 @@ void SPSprayContext::update_cursor(bool /*with_shift*/) { num = g_slist_length(const_cast<GSList *>(desktop->selection->itemList())); sel_message = g_strdup_printf(ngettext("<b>%i</b> object selected","<b>%i</b> objects selected",num), num); } else { - sel_message = g_strdup_printf(_("<b>Nothing</b> selected")); + sel_message = g_strdup_printf("%s", _("<b>Nothing</b> selected")); } switch (this->mode) { diff --git a/src/text-context.cpp b/src/text-context.cpp index 10973b7aa..f12ce6aa6 100644 --- a/src/text-context.cpp +++ b/src/text-context.cpp @@ -1390,8 +1390,11 @@ SPCSSAttr *sp_text_get_style_at_cursor(SPEventContext const *ec) return NULL; SPObject const *obj = sp_te_object_at_position(tc->text, tc->text_sel_end); - if (obj) - return take_style_from_item(SP_ITEM(obj)); + + if (obj) { + return take_style_from_item(const_cast<SPObject*>(obj)); + } + return NULL; } diff --git a/src/trace/trace.cpp b/src/trace/trace.cpp index e2cda6247..cb83541e3 100644 --- a/src/trace/trace.cpp +++ b/src/trace/trace.cpp @@ -213,7 +213,7 @@ Glib::RefPtr<Gdk::Pixbuf> Tracer::sioxProcessImage(SPImage *img, Glib::RefPtr<Gd SPDesktop *desktop = SP_ACTIVE_DESKTOP; if (!desktop) { - g_warning(_("Trace: No active desktop")); + g_warning("%s", _("Trace: No active desktop")); return Glib::RefPtr<Gdk::Pixbuf>(NULL); } @@ -310,7 +310,7 @@ Glib::RefPtr<Gdk::Pixbuf> Tracer::sioxProcessImage(SPImage *img, Glib::RefPtr<Gd SioxImage result = sengine.extractForeground(simage, 0xffffff); if (!result.isValid()) { - g_warning(_("Invalid SIOX result")); + g_warning("%s", _("Invalid SIOX result")); return Glib::RefPtr<Gdk::Pixbuf>(NULL); } diff --git a/src/tweak-context.cpp b/src/tweak-context.cpp index 2171ecbe4..65106e651 100644 --- a/src/tweak-context.cpp +++ b/src/tweak-context.cpp @@ -168,7 +168,7 @@ void SPTweakContext::update_cursor (bool with_shift) { num = g_slist_length(const_cast<GSList *>(desktop->selection->itemList())); sel_message = g_strdup_printf(ngettext("<b>%i</b> object selected","<b>%i</b> objects selected",num), num); } else { - sel_message = g_strdup_printf(_("<b>Nothing</b> selected")); + sel_message = g_strdup_printf("%s", _("<b>Nothing</b> selected")); } switch (this->mode) { diff --git a/src/ui/dialog/print.cpp b/src/ui/dialog/print.cpp index e6dae278b..03ac9dc64 100644 --- a/src/ui/dialog/print.cpp +++ b/src/ui/dialog/print.cpp @@ -101,7 +101,7 @@ static void draw_page( unlink (tmp_png.c_str()); } else { - g_warning(_("Could not open temporary PNG for bitmap printing")); + g_warning("%s", _("Could not open temporary PNG for bitmap printing")); } } else { @@ -144,11 +144,11 @@ static void draw_page( ret = ctx->finish(); } else { - g_warning(_("Could not set up Document")); + g_warning("%s", _("Could not set up Document")); } } else { - g_warning(_("Failed to set CairoRenderContext")); + g_warning("%s", _("Failed to set CairoRenderContext")); } // Clean up diff --git a/src/ui/dialog/spellcheck.cpp b/src/ui/dialog/spellcheck.cpp index 9cc18c02c..45106755c 100644 --- a/src/ui/dialog/spellcheck.cpp +++ b/src/ui/dialog/spellcheck.cpp @@ -459,7 +459,7 @@ SpellCheck::finished () if (_stops) label = g_strdup_printf(_("<b>Finished</b>, <b>%d</b> words added to dictionary"), _adds); else - label = g_strdup_printf(_("<b>Finished</b>, nothing suspicious found")); + label = g_strdup_printf("%s", _("<b>Finished</b>, nothing suspicious found")); banner_label.set_markup(label); g_free(label); } diff --git a/src/ui/dialog/template-load-tab.cpp b/src/ui/dialog/template-load-tab.cpp index 265ee8026..8e33cf503 100644 --- a/src/ui/dialog/template-load-tab.cpp +++ b/src/ui/dialog/template-load-tab.cpp @@ -18,12 +18,16 @@ #include <glibmm/fileutils.h> #include <glibmm/miscutils.h> #include <glibmm/stringutils.h> +#include <iostream> +#include <list> +#include "extension/db.h" +#include "extension/effect.h" +#include "inkscape.h" #include "interface.h" #include "file.h" #include "path-prefix.h" #include "preferences.h" -#include "inkscape.h" #include "xml/repr.h" #include "xml/document.h" #include "xml/node.h" @@ -152,7 +156,7 @@ void TemplateLoadTab::_refreshTemplatesList() case LIST_KEYWORD: { for (std::map<Glib::ustring, TemplateData>::iterator it = _tdata.begin() ; it != _tdata.end() ; ++it) { - if (it->second.keywords.count(_current_keyword) != 0){ + if (it->second.keywords.count(_current_keyword.lowercase()) != 0){ Gtk::TreeModel::iterator iter = _tlist_store->append(); Gtk::TreeModel::Row row = *iter; row[_columns.textValue] = it->first; @@ -163,11 +167,11 @@ void TemplateLoadTab::_refreshTemplatesList() case USER_SPECIFIED : { for (std::map<Glib::ustring, TemplateData>::iterator it = _tdata.begin() ; it != _tdata.end() ; ++it) { - if (it->second.keywords.count(_current_keyword) != 0 || - it->second.display_name.find(_current_keyword) != Glib::ustring::npos || - it->second.author.find(_current_keyword) != Glib::ustring::npos || - it->second.short_description.find(_current_keyword) != Glib::ustring::npos || - it->second.long_description.find(_current_keyword) != Glib::ustring::npos ) + if (it->second.keywords.count(_current_keyword.lowercase()) != 0 || + it->second.display_name.lowercase().find(_current_keyword.lowercase()) != Glib::ustring::npos || + it->second.author.lowercase().find(_current_keyword.lowercase()) != Glib::ustring::npos || + it->second.short_description.lowercase().find(_current_keyword.lowercase()) != Glib::ustring::npos || + it->second.long_description.lowercase().find(_current_keyword.lowercase()) != Glib::ustring::npos ) { Gtk::TreeModel::iterator iter = _tlist_store->append(); Gtk::TreeModel::Row row = *iter; @@ -187,10 +191,13 @@ void TemplateLoadTab::_loadTemplates() // system templates dir _getTemplatesFromDir(INKSCAPE_TEMPLATESDIR + _loading_path); + + // procedural templates + _getProceduralTemplates(); } -TemplateLoadTab::TemplateData TemplateLoadTab::_processTemplateFile(const Glib::ustring &path) +TemplateLoadTab::TemplateData TemplateLoadTab::_processTemplateFile(const std::string &path) { TemplateData result; result.path = path; @@ -209,7 +216,6 @@ TemplateLoadTab::TemplateData TemplateLoadTab::_processTemplateFile(const Glib:: Inkscape::XML::Document *rdoc; rdoc = sp_repr_read_file(path.data(), SP_SVG_NS_URI); Inkscape::XML::Node *myRoot; - Inkscape::XML::Node *dataNode; if (rdoc){ myRoot = rdoc->root(); @@ -221,44 +227,14 @@ TemplateLoadTab::TemplateData TemplateLoadTab::_processTemplateFile(const Glib:: if (myRoot == NULL) // No template info return result; - - if ((dataNode = sp_repr_lookup_name(myRoot, "inkscape:_name")) != NULL) - result.display_name = dgettext("Document template name", dataNode->firstChild()->content()); - if ((dataNode = sp_repr_lookup_name(myRoot, "inkscape:author")) != NULL) - result.author = dataNode->firstChild()->content(); - if ((dataNode = sp_repr_lookup_name(myRoot, "inkscape:_short")) != NULL) - result.short_description = dgettext("Document template short description", dataNode->firstChild()->content()); - if ((dataNode = sp_repr_lookup_name(myRoot, "inkscape:_long") )!= NULL) - result.long_description = dgettext("Document template long description", dataNode->firstChild()->content()); - if ((dataNode = sp_repr_lookup_name(myRoot, "inkscape:preview")) != NULL) - result.preview_name = dataNode->firstChild()->content(); - if ((dataNode = sp_repr_lookup_name(myRoot, "inkscape:date")) != NULL){ - result.creation_date = dataNode->firstChild()->content(); - } - - if ((dataNode = sp_repr_lookup_name(myRoot, "inkscape:_keywords")) != NULL){ - Glib::ustring data = dataNode->firstChild()->content(); - while (!data.empty()){ - std::size_t pos = data.find_first_of(" "); - if (pos == Glib::ustring::npos) - pos = data.size(); - - Glib::ustring keyword = dgettext("Document template keyword", data.substr(0, pos).data()); - result.keywords.insert(keyword); - _keywords.insert(keyword); - - if (pos == data.size()) - break; - data.erase(0, pos+1); - } - } + _getDataFromNode(myRoot, result); } return result; } -void TemplateLoadTab::_getTemplatesFromDir(const Glib::ustring &path) +void TemplateLoadTab::_getTemplatesFromDir(const std::string &path) { if ( !Glib::file_test(path, Glib::FILE_TEST_EXISTS) || !Glib::file_test(path, Glib::FILE_TEST_IS_DIR)) @@ -266,9 +242,9 @@ void TemplateLoadTab::_getTemplatesFromDir(const Glib::ustring &path) Glib::Dir dir(path); - Glib::ustring file = Glib::build_filename(path, dir.read_name()); + std::string file = Glib::build_filename(path, dir.read_name()); while (file != path){ - if (Glib::str_has_suffix(file, ".svg") && !Glib::str_has_prefix(Glib::path_get_basename(file), "default")){ + if (Glib::str_has_suffix(file, ".svg") && !Glib::str_has_prefix(Glib::path_get_basename(file), "default.")){ TemplateData tmp = _processTemplateFile(file); if (tmp.display_name != "") _tdata[tmp.display_name] = tmp; @@ -277,5 +253,66 @@ void TemplateLoadTab::_getTemplatesFromDir(const Glib::ustring &path) } } + +void TemplateLoadTab::_getProceduralTemplates() +{ + std::list<Inkscape::Extension::Effect *> effects; + Inkscape::Extension::db.get_effect_list(effects); + + std::list<Inkscape::Extension::Effect *>::iterator it = effects.begin(); + while (it != effects.end()){ + Inkscape::XML::Node *myRoot; + myRoot = (*it)->get_repr(); + myRoot = sp_repr_lookup_name(myRoot, "inkscape:_templateinfo"); + + if (myRoot){ + TemplateData result; + result.display_name = (*it)->get_name(); + result.is_procedural = true; + result.path = ""; + result.tpl_effect = *it; + + _getDataFromNode(myRoot, result); + _tdata[result.display_name] = result; + } + ++it; + } +} + + +void TemplateLoadTab::_getDataFromNode(Inkscape::XML::Node *dataNode, TemplateData &data) +{ + Inkscape::XML::Node *currentData; + if ((currentData = sp_repr_lookup_name(dataNode, "inkscape:_name")) != NULL) + data.display_name = dgettext("Document template name", currentData->firstChild()->content()); + if ((currentData = sp_repr_lookup_name(dataNode, "inkscape:author")) != NULL) + data.author = currentData->firstChild()->content(); + if ((currentData = sp_repr_lookup_name(dataNode, "inkscape:_shortdesc")) != NULL) + data.short_description = dgettext("Document template short description", currentData->firstChild()->content()); + if ((currentData = sp_repr_lookup_name(dataNode, "inkscape:_long") )!= NULL) + data.long_description = dgettext("Document template long description", currentData->firstChild()->content()); + if ((currentData = sp_repr_lookup_name(dataNode, "inkscape:preview")) != NULL) + data.preview_name = currentData->firstChild()->content(); + if ((currentData = sp_repr_lookup_name(dataNode, "inkscape:date")) != NULL) + data.creation_date = currentData->firstChild()->content(); + + if ((currentData = sp_repr_lookup_name(dataNode, "inkscape:_keywords")) != NULL){ + Glib::ustring tplKeywords = currentData->firstChild()->content(); + while (!tplKeywords.empty()){ + std::size_t pos = tplKeywords.find_first_of(" "); + if (pos == Glib::ustring::npos) + pos = tplKeywords.size(); + + Glib::ustring keyword = dgettext("Document template keyword", tplKeywords.substr(0, pos).data()); + data.keywords.insert(keyword.lowercase()); + _keywords.insert(keyword.lowercase()); + + if (pos == tplKeywords.size()) + break; + tplKeywords.erase(0, pos+1); + } + } +} + } } diff --git a/src/ui/dialog/template-load-tab.h b/src/ui/dialog/template-load-tab.h index 50f3e0be2..744a2a9fb 100644 --- a/src/ui/dialog/template-load-tab.h +++ b/src/ui/dialog/template-load-tab.h @@ -18,6 +18,10 @@ #include <gtkmm/treeview.h> #include <map> #include <set> +#include <string> + +#include "xml/node.h" +#include "extension/effect.h" namespace Inkscape { @@ -32,7 +36,7 @@ public: struct TemplateData { bool is_procedural; - Glib::ustring path; + std::string path; Glib::ustring display_name; Glib::ustring author; Glib::ustring short_description; @@ -40,6 +44,7 @@ public: Glib::ustring preview_name; Glib::ustring creation_date; std::set<Glib::ustring> keywords; + Inkscape::Extension::Effect *tpl_effect; }; TemplateLoadTab(); @@ -60,7 +65,7 @@ protected: Glib::ustring _current_keyword; Glib::ustring _current_template; - Glib::ustring _loading_path; + std::string _loading_path; std::map<Glib::ustring, TemplateData> _tdata; std::set<Glib::ustring> _keywords; @@ -91,9 +96,11 @@ private: SearchType _current_search_type; - void _getTemplatesFromDir(const Glib::ustring &); + void _getDataFromNode(Inkscape::XML::Node *, TemplateData &); + void _getProceduralTemplates(); + void _getTemplatesFromDir(const std::string &); void _keywordSelected(); - TemplateData _processTemplateFile(const Glib::ustring &); + TemplateData _processTemplateFile(const std::string &); }; } diff --git a/src/ui/dialog/template-widget.cpp b/src/ui/dialog/template-widget.cpp index be7e2b515..7e34e5a58 100644 --- a/src/ui/dialog/template-widget.cpp +++ b/src/ui/dialog/template-widget.cpp @@ -19,7 +19,14 @@ #include <glibmm/miscutils.h> #include "template-load-tab.h" +#include "desktop.h" +#include "desktop-handles.h" +#include "document.h" +#include "document-undo.h" #include "file.h" +#include "extension/implementation/implementation.h" +#include "inkscape.h" + namespace Inkscape { namespace UI { @@ -28,18 +35,16 @@ namespace UI { TemplateWidget::TemplateWidget() : _more_info_button(_("More info")) , _short_description_label(_(" ")) - , _template_author_label(_(" ")) , _template_name_label(_("no template selected")) + , _effect_prefs(NULL) { pack_start(_template_name_label, Gtk::PACK_SHRINK, 10); - pack_start(_template_author_label, Gtk::PACK_SHRINK, 0); pack_start(_preview_box, Gtk::PACK_SHRINK, 0); _preview_box.pack_start(_preview_image, Gtk::PACK_EXPAND_PADDING, 15); _preview_box.pack_start(_preview_render, Gtk::PACK_EXPAND_PADDING, 10); _short_description_label.set_line_wrap(true); - //_short_description_label.set_size_request(200); Gtk::Alignment *align; align = manage(new Gtk::Alignment(Gtk::ALIGN_END, Gtk::ALIGN_CENTER, 0.0, 0.0)); @@ -55,10 +60,19 @@ TemplateWidget::TemplateWidget() void TemplateWidget::create() { - if (_current_template.path == "") + if (_current_template.display_name == "") return; - if (_current_template.is_procedural) {} + if (_current_template.is_procedural){ + SPDesktop *desktop = SP_ACTIVE_DESKTOP; + SPDesktop *desc = sp_file_new_default(); + _current_template.tpl_effect->effect(desc); + DocumentUndo::clearUndo(sp_desktop_document(desc)); + sp_desktop_document(desc)->setModifiedSinceSave(false); + + if (desktop) + desktop->clearWaitingCursor(); + } else { sp_file_new(_current_template.path); } @@ -68,34 +82,41 @@ void TemplateWidget::create() void TemplateWidget::display(TemplateLoadTab::TemplateData data) { _current_template = data; - if (data.is_procedural){} - else{ - _template_name_label.set_text(_current_template.display_name); - _template_author_label.set_text(_current_template.author); - _short_description_label.set_text(_current_template.short_description); + + _template_name_label.set_text(_current_template.display_name); + _short_description_label.set_text(_current_template.short_description); - Glib::ustring imagePath = Glib::build_filename(Glib::path_get_dirname(_current_template.path), _current_template.preview_name); - if (data.preview_name != ""){ - _preview_image.set(imagePath); - _preview_image.show(); - _preview_render.hide(); - } - else{ - _preview_render.showImage(data.path); - _preview_render.show(); - _preview_image.hide(); - } + _preview_render.hide(); + _preview_image.hide(); + + std::string imagePath = Glib::build_filename(Glib::path_get_dirname(_current_template.path), _current_template.preview_name); + if (data.preview_name != ""){ + _preview_image.set(imagePath); + _preview_image.show(); + } + else if (!data.is_procedural){ + Glib::ustring gPath = data.path.c_str(); + _preview_render.showImage(gPath); + _preview_render.show(); + } + + if (_effect_prefs != NULL){ + remove (*_effect_prefs); + _effect_prefs = NULL; + } + if (data.is_procedural){ + _effect_prefs = data.tpl_effect->get_imp()->prefs_effect(data.tpl_effect, SP_ACTIVE_DESKTOP, NULL, NULL); + pack_start(*_effect_prefs); } } void TemplateWidget::_displayTemplateDetails() { - if (_current_template.path == "") - return; + Glib::ustring message = _current_template.display_name + "\n\n"; - Glib::ustring message = _current_template.display_name + "\n\n" + - _("Path: ") + _current_template.path + "\n\n"; + if (_current_template.path != "") + message += _("Path: ") + _current_template.path + "\n\n"; if (_current_template.long_description != "") message += _("Description: ") + _current_template.long_description + "\n\n"; diff --git a/src/ui/dialog/template-widget.h b/src/ui/dialog/template-widget.h index f7e1267ce..bb35d26a0 100644 --- a/src/ui/dialog/template-widget.h +++ b/src/ui/dialog/template-widget.h @@ -17,6 +17,7 @@ #include "template-load-tab.h" + namespace Inkscape { namespace UI { @@ -36,8 +37,8 @@ private: Gtk::Image _preview_image; Dialog::SVGPreview _preview_render; Gtk::Label _short_description_label; - Gtk::Label _template_author_label; Gtk::Label _template_name_label; + Gtk::Widget *_effect_prefs; void _displayTemplateDetails(); }; diff --git a/src/util/units.cpp b/src/util/units.cpp index e5c6f74fb..59717d0b5 100644 --- a/src/util/units.cpp +++ b/src/util/units.cpp @@ -321,6 +321,9 @@ bool UnitTable::load(std::string const &filename) { Glib::ustring unitfile = Glib::file_get_contents(filename); ctx.parse(unitfile); ctx.end_parse(); + } catch (Glib::FileError const &e) { + g_warning("Units file %s is missing: %s\n", filename.c_str(), e.what().c_str()); + return false; } catch (Glib::MarkupError const &e) { g_warning("Problem loading units file '%s': %s\n", filename.c_str(), e.what().c_str()); return false; diff --git a/src/widgets/gradient-toolbar.cpp b/src/widgets/gradient-toolbar.cpp index a68f3f451..f7d2b2bd5 100644 --- a/src/widgets/gradient-toolbar.cpp +++ b/src/widgets/gradient-toolbar.cpp @@ -286,7 +286,7 @@ void gr_read_selection( Inkscape::Selection *selection, } } if (spread != spr_selected) { - if (spr_selected != INT_MAX) { + if (spr_selected != SP_GRADIENT_SPREAD_UNDEFINED) { spr_multi = true; } else { spr_selected = spread; @@ -319,7 +319,7 @@ void gr_read_selection( Inkscape::Selection *selection, } } if (spread != spr_selected) { - if (spr_selected != INT_MAX) { + if (spr_selected != SP_GRADIENT_SPREAD_UNDEFINED) { spr_multi = true; } else { spr_selected = spread; @@ -345,7 +345,7 @@ void gr_read_selection( Inkscape::Selection *selection, } } if (spread != spr_selected) { - if (spr_selected != INT_MAX) { + if (spr_selected != SP_GRADIENT_SPREAD_UNDEFINED) { spr_multi = true; } else { spr_selected = spread; @@ -380,7 +380,7 @@ static void gr_tb_selection_changed(Inkscape::Selection * /*selection*/, gpointe } SPGradient *gr_selected = 0; - SPGradientSpread spr_selected = static_cast<SPGradientSpread>(INT_MAX); // meaning undefined + SPGradientSpread spr_selected = SP_GRADIENT_SPREAD_UNDEFINED; bool gr_multi = false; bool spr_multi = false; |
