summaryrefslogtreecommitdiffstats
path: root/src/sp-glyph-kerning.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/sp-glyph-kerning.cpp')
-rw-r--r--src/sp-glyph-kerning.cpp133
1 files changed, 61 insertions, 72 deletions
diff --git a/src/sp-glyph-kerning.cpp b/src/sp-glyph-kerning.cpp
index be47c7621..f33d3c509 100644
--- a/src/sp-glyph-kerning.cpp
+++ b/src/sp-glyph-kerning.cpp
@@ -1,18 +1,12 @@
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#define __SP_ANCHOR_C__
-
-/*
+/**
* SVG <hkern> and <vkern> elements implementation
* W3C SVG 1.1 spec, page 476, section 20.7
*
- * Author:
+ * Authors:
* Felipe C. da S. Sanches <juca@members.fsf.org>
* Abhishek Sharma
*
- * Copyright (C) 2008, Felipe C. da S. Sanches
+ * Copyright (C) 2008 Authors
*
* Released under GNU GPL, read the file 'COPYING' for more information
*/
@@ -26,45 +20,49 @@
#include <cstring>
-SPGlyphKerning::SPGlyphKerning() : SPObject() {
+SPGlyphKerning::SPGlyphKerning()
+ : SPObject()
//TODO: correct these values:
- this->u1 = NULL;
- this->g1 = NULL;
- this->u2 = NULL;
- this->g2 = NULL;
- this->k = 0;
-}
-
-SPGlyphKerning::~SPGlyphKerning() {
+ , u1(NULL)
+ , g1(NULL)
+ , u2(NULL)
+ , g2(NULL)
+ , k(0)
+{
}
-void SPGlyphKerning::build(SPDocument *document, Inkscape::XML::Node *repr) {
- SPObject::build(document, repr);
+void SPGlyphKerning::build(SPDocument *document, Inkscape::XML::Node *repr)
+{
+ SPObject::build(document, repr);
- this->readAttr( "u1" );
- this->readAttr( "g1" );
- this->readAttr( "u2" );
- this->readAttr( "g2" );
- this->readAttr( "k" );
+ this->readAttr( "u1" );
+ this->readAttr( "g1" );
+ this->readAttr( "u2" );
+ this->readAttr( "g2" );
+ this->readAttr( "k" );
}
-void SPGlyphKerning::release() {
- SPObject::release();
+void SPGlyphKerning::release()
+{
+ SPObject::release();
}
-GlyphNames::GlyphNames(const gchar* value){
+GlyphNames::GlyphNames(const gchar* value)
+{
if (value) {
- this->names = strdup(value);
+ names = g_strdup(value);
}
}
-GlyphNames::~GlyphNames(){
- if (this->names) {
- g_free(this->names);
+GlyphNames::~GlyphNames()
+{
+ if (names) {
+ g_free(names);
}
}
-bool GlyphNames::contains(const char* name){
+bool GlyphNames::contains(const char* name)
+{
if (!(this->names) || !name) {
return false;
}
@@ -75,14 +73,15 @@ bool GlyphNames::contains(const char* name){
while (is >> str) {
if (str == s) {
- return true;
+ return true;
}
}
return false;
}
-void SPGlyphKerning::set(unsigned int key, const gchar *value) {
+void SPGlyphKerning::set(unsigned int key, const gchar *value)
+{
switch (key) {
case SP_ATTR_U1:
{
@@ -143,15 +142,16 @@ void SPGlyphKerning::set(unsigned int key, const gchar *value) {
}
/**
- * * Receives update notifications.
- * */
-void SPGlyphKerning::update(SPCtx *ctx, guint flags) {
+ * Receives update notifications.
+ */
+void SPGlyphKerning::update(SPCtx *ctx, guint flags)
+{
if (flags & SP_OBJECT_MODIFIED_FLAG) {
/* do something to trigger redisplay, updates? */
- this->readAttr( "u1" );
- this->readAttr( "u2" );
- this->readAttr( "g2" );
- this->readAttr( "k" );
+ this->readAttr( "u1" );
+ this->readAttr( "u2" );
+ this->readAttr( "g2" );
+ this->readAttr( "k" );
}
SPObject::update(ctx, flags);
@@ -159,37 +159,26 @@ void SPGlyphKerning::update(SPCtx *ctx, guint flags) {
#define COPY_ATTR(rd,rs,key) (rd)->setAttribute((key), rs->attribute(key));
-Inkscape::XML::Node* SPGlyphKerning::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) {
- if ((flags & SP_OBJECT_WRITE_BUILD) && !repr) {
- repr = xml_doc->createElement("svg:glyphkerning");//fix this!
- }
-
- /* I am commenting out this part because I am not certain how does it work. I will have to study it later. Juca
- repr->setAttribute("unicode", glyph->unicode);
- repr->setAttribute("glyph-name", glyph->glyph_name);
- repr->setAttribute("d", glyph->d);
- sp_repr_set_svg_double(repr, "orientation", (double) glyph->orientation);
- sp_repr_set_svg_double(repr, "arabic-form", (double) glyph->arabic_form);
- repr->setAttribute("lang", glyph->lang);
- sp_repr_set_svg_double(repr, "horiz-adv-x", glyph->horiz_adv_x);
- sp_repr_set_svg_double(repr, "vert-origin-x", glyph->vert_origin_x);
- sp_repr_set_svg_double(repr, "vert-origin-y", glyph->vert_origin_y);
- sp_repr_set_svg_double(repr, "vert-adv-y", glyph->vert_adv_y);
- */
- if (repr != this->getRepr()) {
- // All the COPY_ATTR functions below use
- // XML Tree directly, while they shouldn't.
- COPY_ATTR(repr, this->getRepr(), "u1");
- COPY_ATTR(repr, this->getRepr(), "g1");
- COPY_ATTR(repr, this->getRepr(), "u2");
- COPY_ATTR(repr, this->getRepr(), "g2");
- COPY_ATTR(repr, this->getRepr(), "k");
- }
-
- SPObject::write(xml_doc, repr, flags);
-
- return repr;
+Inkscape::XML::Node* SPGlyphKerning::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags)
+{
+ if ((flags & SP_OBJECT_WRITE_BUILD) && !repr) {
+ repr = xml_doc->createElement("svg:glyphkerning"); // fix this!
+ }
+
+ if (repr != this->getRepr()) {
+ // All the COPY_ATTR functions below use
+ // XML Tree directly, while they shouldn't.
+ COPY_ATTR(repr, this->getRepr(), "u1");
+ COPY_ATTR(repr, this->getRepr(), "g1");
+ COPY_ATTR(repr, this->getRepr(), "u2");
+ COPY_ATTR(repr, this->getRepr(), "g2");
+ COPY_ATTR(repr, this->getRepr(), "k");
+ }
+ SPObject::write(xml_doc, repr, flags);
+
+ return repr;
}
+
/*
Local Variables:
mode:c++