58cf085f4a4de3c49fe270636169643d55db17f9JucaBlues/*
58cf085f4a4de3c49fe270636169643d55db17f9JucaBlues * SVG <hkern> and <vkern> elements implementation
58cf085f4a4de3c49fe270636169643d55db17f9JucaBlues *
58cf085f4a4de3c49fe270636169643d55db17f9JucaBlues * Authors:
5ef6cb9428f2e6f5457e890a1c3b37f53730c07aFelipe C. da S. Sanches * Felipe C. da S. Sanches <juca@members.fsf.org>
58cf085f4a4de3c49fe270636169643d55db17f9JucaBlues *
58cf085f4a4de3c49fe270636169643d55db17f9JucaBlues * Copyright (C) 2008 Felipe C. da S. Sanches
58cf085f4a4de3c49fe270636169643d55db17f9JucaBlues *
58cf085f4a4de3c49fe270636169643d55db17f9JucaBlues * Released under GNU GPL, read the file 'COPYING' for more information
58cf085f4a4de3c49fe270636169643d55db17f9JucaBlues */
58cf085f4a4de3c49fe270636169643d55db17f9JucaBlues
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White#ifndef SEEN_SP_GLYPH_KERNING_H
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White#define SEEN_SP_GLYPH_KERNING_H
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White
58cf085f4a4de3c49fe270636169643d55db17f9JucaBlues#include "sp-object.h"
963d87c95becc6ec4f174719cbb31aec3a5e989aJucaBlues#include "unicoderange.h"
58cf085f4a4de3c49fe270636169643d55db17f9JucaBlues
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White#define SP_HKERN(obj) (dynamic_cast<SPHkern*>(obj))
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White#define SP_IS_HKERN(obj) (dynamic_cast<const SPHkern*>(obj) != NULL)
6bbadb7dace9a9325f05c20ab8401ef71e857c10Markus Engel
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White#define SP_VKERN(obj) (dynamic_cast<SPVkern*>(obj))
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White#define SP_IS_VKERN(obj) (dynamic_cast<const SPVkern*>(obj) != NULL)
6bbadb7dace9a9325f05c20ab8401ef71e857c10Markus Engel
6bbadb7dace9a9325f05c20ab8401ef71e857c10Markus Engel// CPPIFY: These casting macros are buggy, as Vkern and Hkern aren't "real" classes.
58cf085f4a4de3c49fe270636169643d55db17f9JucaBlues
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. Whiteclass GlyphNames {
f45619747d788d05b19687aedde8620096f50048JucaBluespublic:
11f343b8117dbf56931f537820c2749a8232fec2Liam P. White GlyphNames(char const* value);
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White ~GlyphNames();
11f343b8117dbf56931f537820c2749a8232fec2Liam P. White bool contains(char const* name);
f45619747d788d05b19687aedde8620096f50048JucaBluesprivate:
11f343b8117dbf56931f537820c2749a8232fec2Liam P. White char* names;
f45619747d788d05b19687aedde8620096f50048JucaBlues};
f45619747d788d05b19687aedde8620096f50048JucaBlues
35087bff7509c736a32e0b74fd9ff0834bde7b6bMarkus Engelclass SPGlyphKerning : public SPObject {
883c5b2d5104c153708fdc513209d5694b489900Markus Engelpublic:
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White SPGlyphKerning();
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White virtual ~SPGlyphKerning() {}
883c5b2d5104c153708fdc513209d5694b489900Markus Engel
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White // FIXME encapsulation
963d87c95becc6ec4f174719cbb31aec3a5e989aJucaBlues UnicodeRange* u1;
f45619747d788d05b19687aedde8620096f50048JucaBlues GlyphNames* g1;
963d87c95becc6ec4f174719cbb31aec3a5e989aJucaBlues UnicodeRange* u2;
f45619747d788d05b19687aedde8620096f50048JucaBlues GlyphNames* g2;
58cf085f4a4de3c49fe270636169643d55db17f9JucaBlues double k;
883c5b2d5104c153708fdc513209d5694b489900Markus Engel
a2e6e13c14553c9fc1e16d8cd6ebc3b71c6bccefMarkus Engelprotected:
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White virtual void release();
11f343b8117dbf56931f537820c2749a8232fec2Liam P. White virtual void set(unsigned int key, char const* value);
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White virtual void update(SPCtx* ctx, unsigned int flags);
11f343b8117dbf56931f537820c2749a8232fec2Liam P. White virtual Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, unsigned int flags);
883c5b2d5104c153708fdc513209d5694b489900Markus Engel};
883c5b2d5104c153708fdc513209d5694b489900Markus Engel
883c5b2d5104c153708fdc513209d5694b489900Markus Engelclass SPHkern : public SPGlyphKerning {
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White virtual ~SPHkern() {}
883c5b2d5104c153708fdc513209d5694b489900Markus Engel};
883c5b2d5104c153708fdc513209d5694b489900Markus Engel
883c5b2d5104c153708fdc513209d5694b489900Markus Engelclass SPVkern : public SPGlyphKerning {
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White virtual ~SPVkern() {}
883c5b2d5104c153708fdc513209d5694b489900Markus Engel};
1f29ece7a5be5230692c25ff5132d46b20dcd692JucaBlues
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White#endif // !SEEN_SP_GLYPH_KERNING_H
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White/*
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White Local Variables:
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White mode:c++
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White c-file-style:"stroustrup"
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White indent-tabs-mode:nil
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White fill-column:99
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White End:
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White*/
377ff4742f6ad20c6594696e36cad31a395001c6Liam P. White// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8 :