// Copyright (C) 2000-2007, Luca Padovani . // // This file is part of GtkMathView, a flexible, high-quality rendering // engine for MathML documents. // // GtkMathView 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 3 of the License, or // (at your option) any later version. // // GtkMathView 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 program. If not, see . #ifndef __AreaFactory_hh__ #define __AreaFactory_hh__ #include "BoxArea.hh" #include "BoxedLayoutArea.hh" #include "ColorArea.hh" #include "GlyphStringArea.hh" #include "GlyphWrapperArea.hh" #include "HideArea.hh" #include "HorizontalArrayArea.hh" #include "HorizontalFillerArea.hh" #include "HorizontalSpaceArea.hh" #include "IdArea.hh" #include "IgnoreArea.hh" #include "InkArea.hh" #include "Object.hh" #include "OverlapArrayArea.hh" #include "ShiftArea.hh" #include "StepArea.hh" #include "VerticalArrayArea.hh" #include "VerticalFillerArea.hh" #include "VerticalSpaceArea.hh" #include "CombinedGlyphArea.hh" class GMV_MathView_EXPORT AreaFactory : public Object { protected: AreaFactory(void) { } virtual ~AreaFactory() { } public: static SmartPtr create(void) { return new AreaFactory(); } virtual SmartPtr glyphWrapper(const AreaRef& area, CharIndex length) const { return GlyphWrapperArea::create(area, length); } virtual SmartPtr box(const AreaRef& area, const BoundingBox& box) const { return BoxArea::create(area, box); } virtual SmartPtr color(const AreaRef& area, const RGBColor& color) const { return ColorArea::create(area, color); } virtual SmartPtr hide(const AreaRef& area) const { return HideArea::create(area); } virtual SmartPtr horizontalArray(const std::vector& content) const { return HorizontalArrayArea::create(content); } virtual SmartPtr glyphString(const std::vector& content, const std::vector& counters, UCS4String s) const { return GlyphStringArea::create(content, counters, s); } virtual SmartPtr verticalArray(const std::vector& content, AreaIndex ref) const { return VerticalArrayArea::create(content, ref); } virtual SmartPtr overlapArray(const std::vector& content) const { return OverlapArrayArea::create(content); } virtual SmartPtr id(const AreaRef& area) const { return IdArea::create(area); } virtual SmartPtr ignore(const AreaRef& area) const { return IgnoreArea::create(area); } virtual SmartPtr ink(const AreaRef& area) const { return InkArea::create(area); } virtual SmartPtr horizontalSpace(const scaled& w) const { return HorizontalSpaceArea::create(w); } virtual SmartPtr verticalSpace(const scaled& h, const scaled& d) const { return VerticalSpaceArea::create(h, d); } virtual SmartPtr horizontalFiller(void) const { return HorizontalFillerArea::create(); } virtual SmartPtr verticalFiller(void) const { return VerticalFillerArea::create(); } virtual SmartPtr shift(const AreaRef& area, const scaled& s) const { return ShiftArea::create(area, s); } virtual SmartPtr step(const AreaRef& area, const scaled& s) const { return StepArea::create(area, s); } virtual SmartPtr boxedLayout(const BoundingBox& box, const std::vector& content) const { return BoxedLayoutArea::create(box, content); } virtual SmartPtr combinedGlyph(const AreaRef& base, const AreaRef& accent, const AreaRef& under, const scaled& dx, const scaled& dy, const scaled& dxUnder) const { return CombinedGlyphArea::create(base, accent, under, dx, dy, dxUnder); } // macro areas virtual AreaRef background(const AreaRef& area, const RGBColor& color) const; virtual AreaRef horizontalLine(const scaled& thickness, const RGBColor& color) const; virtual AreaRef fixedHorizontalLine(const scaled& thickness, const scaled& length, const RGBColor& color) const; virtual AreaRef verticalLine(const scaled& thickness, const RGBColor& color) const; virtual AreaRef fixedVerticalLine(const scaled& thickness, const scaled& height, const scaled& depth, const RGBColor& color) const; virtual AreaRef center(const AreaRef& area) const; virtual AreaRef left(const AreaRef& area) const; virtual AreaRef right(const AreaRef& area) const; virtual AreaRef middle(const AreaRef& area) const; virtual AreaRef top(const AreaRef& area) const; virtual AreaRef bottom(const AreaRef& area) const; virtual AreaRef freeze(const AreaRef& area) const; }; #endif // __AreaFactory_hh__