00001
00011 class OHL : public OGraphic
00012 {
00013 protected:
00014 void svgPoint(ostream &);
00015 bool pointsClosed();
00016 void svgLine(ostream &);
00017 bool linesClosed();
00018
00019 deque <OGraphic*> oa;
00020 deque <AGraphic*> aa;
00021
00022 public:
00023 OGraphic* clone() const;
00024 inline OGraphic* create() const;
00025 OHL();
00026 ~OHL();
00027
00028 void oClear();
00029 void aClear();
00030
00031 inline int osize();
00032 inline void newObject();
00033 inline void newObject(OGraphic*);
00034 inline void deleteObject(int);
00035 inline OGraphic* objectRead(int);
00036 inline int rangeRead(OGraphic*);
00037 inline void objectWrite(OGraphic*,int);
00038 inline void objectPush(OGraphic*,int);
00039 inline void objectInsert(OGraphic*,int);
00040
00041 inline int asize();
00042 inline void newAttribute();
00043 inline void newAttribute(AGraphic*);
00044 inline void deleteAttribute(int);
00045 inline AGraphic* attributeRead(int);
00046 inline int rangeRead(AGraphic*);
00047 inline void attributeWrite(AGraphic*,int);
00048 inline void attributePush(AGraphic*,int);
00049 inline void attributeInsert(AGraphic*,int);
00050
00051 string getFOName();
00052 string getFAName();
00053 bool sameObject();
00054 bool sameObject(string &);
00055 bool sameAttribute();
00056 bool sameAttribute(string &);
00057
00058 inline deque<OGraphic*> readOGraphicArray();
00059 deque<OGraphic*> readOGraphicArray(string &);
00060 void readOGraphicArray(string &,deque<OGraphic*> &);
00061
00062 void writeOGraphicArray(deque<OGraphic*> &);
00063 void addOGraphicArray(deque<OGraphic*> &);
00064 void writeOGraphicArray(string &,deque<OGraphic*> &);
00065 int writeOGraphicArray(string &,deque<OGraphic*> &,int);
00066
00067
00068
00069 void gomo(ostream &);
00070 void gomi(istream &);
00071 void xmlo(ostream &);
00072 void svgo(ostream &);
00073 };
00074
00078 inline OGraphic* OHL::create() const
00079 { return new OHL(); }
00080
00084 inline int OHL::osize()
00085 { return oa.size(); }
00089 inline void OHL::newObject()
00090 { oa.push_back(new OGraphicImpl()); }
00094 inline void OHL::newObject(OGraphic* o)
00095 { oa.push_back(o); }
00099 inline void OHL::deleteObject(int p)
00100 { if(p<oa.size()) { oa[p]->~OGraphic(); oa.erase(oa.begin()+p);} }
00104 inline OGraphic* OHL::objectRead(int p)
00105 { return oa.at(p); }
00109 inline int OHL::rangeRead(OGraphic* o)
00110 {for(int i=0;i<oa.size();i++) if(oa[i]==o) return i; return -1;}
00114 inline void OHL::objectWrite(OGraphic* o,int p)
00115 { if(p<oa.size()) oa[p] = o; }
00120 inline void OHL::objectPush(OGraphic* o,int p)
00121 { if(p<oa.size()) { oa[p]->~OGraphic(); oa[p] = o;} }
00126 inline void OHL::objectInsert(OGraphic* o,int p)
00127 { if(p<oa.size()) oa.insert(oa.begin()+p,o); }
00128
00132 inline int OHL::asize()
00133 { return aa.size(); }
00137 inline void OHL::newAttribute()
00138 { aa.push_back(new AGraphicImpl()); }
00142 inline void OHL::newAttribute(AGraphic* a)
00143 { aa.push_back(a); }
00148 inline void OHL::deleteAttribute(int p)
00149 { if(p<aa.size()) { aa[p]->~AGraphic(); aa.erase(aa.begin()+p);} }
00154 inline AGraphic* OHL::attributeRead(int p)
00155 { return aa.at(p); }
00159 inline int OHL::rangeRead(AGraphic* a)
00160 {for(int i=0;i<aa.size();i++) if(aa[i]==a) return i; return -1;}
00165 inline void OHL::attributeWrite(AGraphic* a,int p)
00166 { if(p<aa.size()) aa[p] = a; }
00171 inline void OHL::attributePush(AGraphic* a,int p)
00172 { if(p<aa.size()) {aa[p]->~AGraphic(); aa[p] = a;} }
00177 inline void OHL::attributeInsert(AGraphic* a,int p)
00178 { if(p<aa.size()) aa.insert(aa.begin()+p,a); }
00182 deque<OGraphic*> OHL::readOGraphicArray()
00183 { return oa; }