/* libppt - library to read PowerPoint presentation Copyright (C) 2005 Yolla Indria This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA */ #ifndef LIBPPT_OBJECTS #define LIBPPT_OBJECTS #include "ustring.h" #include namespace Libppt { class Color { public: unsigned red, green, blue; Color(){ red = green = blue = 0; } Color( unsigned r, unsigned g, unsigned b ) { red = r; green = g; blue = b; } Color( const Color& c ) { red = c.red; green = c.green; blue = c.blue; } Color& operator=( const Color& c ) { red = c.red; green = c.green; blue = c.blue; return *this; } }; class Object { public: Object(); virtual ~Object(); int id() const; void setId( int id ); virtual bool isText() const { return false; } virtual bool isPicture() const { return false; } virtual bool isGroup() const { return false; } virtual bool isDrawing() const { return false; } // all is in mm double top() const; double left() const; double width() const; double height() const; void setTop( double top ); void setLeft( double left ); void setWidth( double width ); void setHeight( double height ); bool isBackground() const; void setBackground( bool bg ); bool hasProperty( std::string name ); void setProperty( std::string name, int value ); void setProperty( std::string name, double value ); void setProperty( std::string name, std::string value ); void setProperty( std::string name, bool value ); void setProperty( std::string name, Color value ); void setProperty( std::string name, const char* value ) { setProperty( name, std::string(value) ); } int getIntProperty( std::string name ); double getDoubleProperty( std::string name ); bool getBoolProperty( std::string name ); std::string getStrProperty( std::string name ); Color getColorProperty(std::string name); private: // no copy or assign Object( const Object& ); Object& operator=( const Object& ); class Private; Private* d; }; class TextObject: public Object { public: enum { Title = 0, Body = 1, Notes = 2, NotUsed = 3, Other = 4, // text in a tqshape CenterBody = 5, // subtitle in title slide CenterTitle = 6, // title in title slide HalfBody = 7, // body in two-column slide QuarterBody = 8 // body in four-body slide }; TextObject(); virtual ~TextObject(); virtual bool isText() const { return true; } unsigned type() const; void setType( unsigned type ); const char* typeAsString() const; UString text(unsigned index) const; void setText( const UString& text ); unsigned listSize() const; bool bulletFlag(unsigned index) const; void setBulletFlag( bool flag ) ; void convertFrom( Object* object ); private: // no copy or assign TextObject( const TextObject& ); TextObject& operator=( const TextObject& ); class Private; Private* d; }; class GroupObject: public Object { public: GroupObject(); virtual ~GroupObject(); virtual bool isGroup() const { return true; } unsigned objectCount() const; Object* object( unsigned index ); void addObject( Object* object ); void takeObject( Object* object ); private: // no copy or assign GroupObject( const GroupObject& ); GroupObject& operator=( const GroupObject& ); class Private; Private* d; }; class DrawObject: public Object { public: enum { None = 0, Rectangle, RoundRectangle, Circle, Ellipse, Diamond, RightArrow, LeftArrow, UpArrow, DownArrow, IsoscelesTriangle, RightTriangle, Parallelogram, Trapezoid, Hexagon, Octagon, Line, Smiley, Heart, FreeLine }; DrawObject(); virtual ~DrawObject(); virtual bool isDrawing() const { return true; } unsigned tqshape() const; void setShape( unsigned s ); bool isVerFlip() const; void setVerFlip( bool vFlip ); bool isHorFlip() const; void setHorFlip( bool hFlip ); private: // no copy or assign DrawObject( const DrawObject& ); DrawObject& operator=( const DrawObject& ); class Private; Private* d; }; } #endif /* LIBPPT_OBJECTS */