Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members

uprop.hpp

00001 /* ==================================================== ======== ======= *
00002  *
00003  *  uprop.hpp
00004  *  Ubit Project  [Elc][2003]
00005  *  Author: Eric Lecolinet
00006  *
00007  *  Part of the Ubit Toolkit: A Brick Construction Game Model for Creating GUIs
00008  *
00009  *  (C) 1999-2003 Eric Lecolinet @ ENST Paris
00010  *  WWW: http://www.enst.fr/~elc/ubit   Email: elc@enst.fr (subject: ubit)
00011  *
00012  * ***********************************************************************
00013  * COPYRIGHT NOTICE : 
00014  * THIS PROGRAM IS DISTRIBUTED WITHOUT ANY WARRANTY AND WITHOUT EVEN THE 
00015  * IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 
00016  * YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT UNDER THE TERMS OF THE GNU 
00017  * GENERAL PUBLIC LICENSE AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION; 
00018  * EITHER VERSION 2 OF THE LICENSE, OR (AT YOUR OPTION) ANY LATER VERSION.
00019  * SEE FILES 'COPYRIGHT' AND 'COPYING' FOR MORE DETAILS.
00020  * ***********************************************************************
00021  *
00022  * ==================================================== [Elc:03] ======= *
00023  * ==================================================== ======== ======= */
00024 
00025 #ifndef _uprop_hpp_
00026 #define _uprop_hpp_
00027 //pragma ident  "@(#)uprop.hpp  ubit:03.06.04"
00028 #include <ubit/unumber.hpp>
00029 
00030 
00038 class UProp: public UBrick {
00039   friend class UBox;
00040 public:
00041   UProp(u_modes b_modes = 0) : UBrick(b_modes) {}
00043 
00044   virtual class UProp* propCast() {return this;}
00046 
00047   // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00048   // callbacks
00049 
00050   virtual void onChange(UCall&);
00052 
00053   virtual void changed(bool update_now);
00061   // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00062   // implementation
00063   
00064   virtual void update() = 0;
00066 
00067   virtual void putProp(class UContext*, class UCtrl*) = 0;
00069 };
00070 
00071 /* ==================================================== [Elc:03] ======= */
00072 /* ==================================================== ======== ======= */
00073 
00078 class UScale : public UIntgBase, public UProp {
00079 public:
00080   UScale(int value = 0);
00081   UScale(const UIntgBase& value);
00082 
00083   friend UScale& uscale(int val = 0)           {return *new UScale(val);}
00084   friend UScale& uscale(const UIntgBase& val)  {return *new UScale(val);}
00086 
00087   // inherited: set(), incr(), decr(), equals()
00088 
00089   float getXScale() const;
00090   float getYScale() const;
00091   void  getXYScale(float& xscale, float& yscale) const;
00092 
00093   static float getXScale(int lscale);
00094   static float getYScale(int lscale);
00095   static void  getXYScale(int lscale, float& xscale, float& yscale);
00096 
00097   // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00098 
00099   virtual void changed(bool update_now);
00100   virtual void update();
00101   virtual void putProp(class UContext*, class UCtrl*);
00102 };
00103 
00104 /* ==================================================== [Elc:03] ======= */
00105 /* ==================================================== ======== ======= */
00106 
00110 class UAlpha : public UProp {
00111   float value;
00112 public:
00113   UAlpha(float value = 1.0);
00114   friend UAlpha& ualpha(float val = 1.0) {return *new UAlpha(val);}
00116 
00117   float get() const {return value;}
00119   
00120   void set(float value);
00121   void set(float value, bool update_now);
00123 
00124   virtual void update();
00125   virtual void putProp(class UContext*, class UCtrl*);
00126 };
00127 
00128 /* ==================================================== [Elc:03] ======= */
00129 /* ==================================================== ======== ======= */
00130 
00134 class UBackground : public UProp {
00135   const class UColor  *bgcolor;
00136   const class UIma    *bgima;
00137   const class UHalign *halign;
00138   const class UValign *valign;
00139 public:
00140   UBackground();
00141   UBackground(const UIma& bgima);
00142   UBackground(const UColor& bgcolor);
00143 
00144   friend UBackground& ubackground(const UColor& bgcolor);
00145   friend UBackground& ubackground(const UIma& bgima);
00146 
00147   // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00148 
00149   void set(const UColor& bgcolor);
00151 
00152   void set(const UIma& bgima);
00156   void set(const UIma& bgima, const UColor& bgcolor);
00161   void setLayout(const UHalign&, const UValign&);
00165   const class UColor*  getColor()  const {return bgcolor;}
00166   const class UIma*    getIma()    const {return bgima;}
00167   const class UHalign* getHalign() const {return halign;}
00168   const class UValign* getValign() const {return valign;}
00169 
00170   virtual void update();
00171   virtual void putProp(class UContext*, class UCtrl*);
00172 };
00173 
00174 /* ==================================================== [Elc:03] ======= */
00175 /* ==================================================== ======== ======= */
00176 /*
00177 class UShape : public UProp {
00178   friend class UView;
00179   const UPix *pix;
00180 public:
00181   // The shape of the component will adapt to the shape of the UPix argument
00182   UShape(const UPix&);
00183   friend UShape& ushape(UPix&);
00184 
00185   void set(const UPix*);
00186   void set(const UPix&);
00187 
00188   virtual void update();
00189   virtual void putProp(class UContext*, class UCtrl*);
00190 };
00191 */
00192 
00193 /* ==================================================== [Elc:03] ======= */
00194 /* ==================================================== ======== ======= */
00195 
00201 class UPos : public UProp {
00202 public:
00203   UPos();
00204   UPos(const UPos&);
00205   UPos(u_pos x, u_pos y);
00206 
00207   friend UPos& upos(const UPos& p)     {return *new UPos(p);}
00208   friend UPos& upos(u_pos x, u_pos y)  {return *new UPos(x, y);}
00209 
00210   virtual ~UPos() {destructs();}  // necessaire car removingFrom specifique
00211 
00212   UPos& operator=(const UPos&);
00213   void set(const UPos&, bool update = true);
00214   
00215   void set(u_pos x, u_pos y, bool update = true);
00216   void setX(u_pos x);
00217   void setY(u_pos y);
00218 
00219   u_pos getX() const {return x;}
00220   u_pos getY() const {return y;}
00221 
00222   virtual void addingTo(class ULink *selflink, UGroup *parent);
00223   virtual void removingFrom(class ULink *selflink, UGroup *parent);
00225   
00226   virtual void update();
00227   virtual void putProp(class UContext*, class UCtrl*);
00228 private:
00229   u_pos x, y;
00230 };
00231 
00232 /* ==================================================== [Elc:03] ======= */
00233 /* ==================================================== ======== ======= */
00234 
00244 class UWidth : public UProp {
00245 public:
00246   static const u_dim AUTO_RESIZE, KEEP_SIZE;
00247 
00248   UWidth(u_dim value = 0);
00249   UWidth(const UWidth&);
00250   friend UWidth& uwidth(u_dim value = 0);
00251 
00252   u_dim get() const {return value;}
00253   void set(u_dim);
00254     
00255   UWidth& operator=(u_dim _val)         {set(_val); return *this;}
00256   UWidth& operator=(const UWidth& _val) {set(_val.get()); return *this;}
00257 
00258   virtual void update();
00259   virtual void putProp(class UContext*, class UCtrl*);
00260 private:
00261   u_dim value;
00262 };
00263 
00264 /* ==================================================== ======== ======= */
00268 class UHeight : public UProp {
00269 public:
00270   static const u_dim AUTO_RESIZE, KEEP_SIZE;
00271 
00272   UHeight(u_dim value = 0);
00273   UHeight(const UHeight&);
00274   friend UHeight& uheight(u_dim value = 0);
00275 
00276   u_dim get() const {return value;}
00277   void  set(u_dim);
00278 
00279   UHeight& operator=(u_dim _val)          {set(_val); return *this;}
00280   UHeight& operator=(const UHeight& _val) {set(_val.get()); return *this;}
00281 
00282   virtual void update();
00283   virtual void putProp(class UContext*, class UCtrl*);
00284 private:
00285   u_dim value;
00286 };
00287 
00288 /* ==================================================== [Elc:03] ======= */
00289 /* ==================================================== ======== ======= */
00290 
00294 class UOrient : public UProp {
00295 public:
00296   enum {VERTICAL, HORIZONTAL, INHERIT};
00297   static UOrient vertical, horizontal, inherit;
00298 
00299   UOrient(char value = VERTICAL, u_modes = 0);
00300   UOrient(const UOrient&);
00301   friend UOrient& uorient(const UOrient&);
00302 
00303   void set(const UOrient&);
00304   char get() const {return value;}
00305 
00306   virtual void update();
00307   virtual void putProp(class UContext*, class UCtrl*);
00308 private:
00309   char value;
00310 };
00311 
00312 /* ==================================================== [Elc:03] ======= */
00313 /* ==================================================== ======== ======= */
00314 
00320 class UValign : public UProp {
00321   char value;
00322 public:
00323   enum {TOP, BOTTOM, FLEX, CENTER};
00324   static UValign top, bottom, flex, center;
00325 
00326   UValign(char value = TOP, u_modes = 0);
00327   UValign(const UValign&);
00328   friend UValign& uvalign(const UValign&);
00329 
00330   friend UValign& utop()     {return UValign::top;}
00331   friend UValign& ubottom()  {return UValign::bottom;}
00332   friend UValign& uvcenter() {return UValign::center;}
00333   friend UValign& uvflex()   {return UValign::flex;}
00334 
00335   char get() const {return value;}
00336   void set(const UValign&);
00337   
00338   virtual void update();
00339   virtual void putProp(class UContext*, class UCtrl*);
00340 };
00341 
00342 /* ==================================================== [Elc:03] ======= */
00343 /* ==================================================== ======== ======= */
00344 
00350 class UHalign : public UProp {
00351   char value;
00352 public:
00353   enum {LEFT, RIGHT, FLEX, CENTER};
00354   static UHalign left, right, flex, center;
00355 
00356   UHalign(char value = LEFT, u_modes = 0);
00357   UHalign(const UHalign&);
00358   friend UHalign& uhalign(const UHalign&);
00359 
00360   friend UHalign& uleft()    {return UHalign::left;}
00361   friend UHalign& uright()   {return UHalign::right;}
00362   friend UHalign& uhcenter() {return UHalign::center;}
00363   friend UHalign& uhflex()   {return UHalign::flex;}
00364 
00365   char get() const {return value;}
00366   void set(const UHalign&);
00367   
00368   virtual void update();
00369   virtual void putProp(class UContext*, class UCtrl*);
00370 };
00371 
00372 /* ==================================================== [Elc:03] ======= */
00373 /* ==================================================== ======== ======= */
00374 
00377 class UVspacing : public UProp {
00378 public:
00379   UVspacing(int = 0);
00380   friend UVspacing& uvspacing(int);
00381 
00382   int get() const {return value;}
00383   void set(int);
00384   UVspacing& operator=(int i) {set(i); return *this;}
00385   
00386   virtual void update();
00387   virtual void putProp(class UContext*, class UCtrl*);
00388 private:
00389   int value;
00390 };
00391 
00392 /* ==================================================== ======== ======= */
00393 
00396 class UHspacing : public UProp {
00397 public:
00398   UHspacing(int = 0);
00399   friend UHspacing& uhspacing(int);
00400 
00401   int get() const {return value;}
00402   void set(int);
00403   UHspacing& operator=(int i) {set(i); return *this;} 
00404 
00405   virtual void update();
00406   virtual void putProp(class UContext*, class UCtrl*);
00407 private:
00408   int value;
00409 };
00410 
00411 /* ==================================================== [Elc:03] ======= */
00412 /* ==================================================== ======== ======= */
00413 
00416 class UVmargin : public UProp {
00417 public:
00418   UVmargin(int = 0);
00419   friend UVmargin& uvmargin(int);
00420 
00421   int get() const {return value;}
00422   void set(int);
00423   UVmargin& operator=(int i) {set(i); return *this;} 
00424 
00425   virtual void update();
00426   virtual void putProp(class UContext*, class UCtrl*);
00427 private:
00428   int value;
00429 };
00430 
00431 /* ==================================================== ======== ======= */
00432 
00435 class UHmargin : public UProp {
00436 public:
00437   UHmargin(int = 0);
00438   friend UHmargin& uhmargin(int);
00439 
00440   int get() const {return value;}
00441   void set(int);
00442   UHmargin& operator=(int i) {set(i); return *this;} 
00443 
00444   virtual void update();
00445   virtual void putProp(class UContext*, class UCtrl*);
00446 private:
00447   int value;
00448 };
00449 
00450 /* ==================================================== [Elc:03] ======= */
00451 /* ==================================================== ======== ======= */
00452 
00453 /* Tool Tip.
00454  */
00455 class UTip: public UProp {
00456   uptr<UStr> value;
00457 public:
00458 
00459   UTip(const char* value);
00461 
00462   UTip(UStr& value);
00469   friend UTip& utip(const char* _value) {return *(new UTip(_value));}
00470   friend UTip& utip(UStr& _value)       {return *(new UTip(_value));}
00472 
00473   virtual void set(const UStr& value);
00474   virtual const UStr& get() const {return *value;}
00475 
00476   virtual void update();
00477   virtual void putProp(class UContext*, class UCtrl*) {}
00478 };
00479 
00480 /* ==================================================== [Elc:03] ======= */
00481 /* ==================================================== ======== ======= */
00482 
00483 /* Window Title.
00484  */
00485 class UTitle: public UProp {
00486   uptr<UStr> value;
00487 
00488 public:
00489   UTitle(const char* value);
00490   UTitle(const UStr& value);
00492 
00493   UTitle(UStr& value);
00500   friend UTitle& utitle(const char* _value)  {return *new UTitle(_value);}
00501   friend UTitle& utitle(const UStr& _value)  {return *new UTitle(_value);}
00502   friend UTitle& utitle(UStr& _value)        {return *new UTitle(_value);}
00504 
00505   virtual void set(const UStr& value);
00506   virtual const UStr& get() const {return *value;}
00507 
00508   virtual void update();
00509   virtual void putProp(class UContext*, class UCtrl*) {}
00510 };
00511 
00512 /* ==================================================== [Elc:03] ======= */
00513 /* ==================================================== ======== ======= */
00514 
00515 /* Comment (not displayed)
00516  */
00517 class UComment: public UProp {
00518   char *value;
00519 
00520 public:
00521   UComment(const char* = null);
00522   friend UComment& ucomment(const char *s);
00523 
00524   const char* get() const {return value;}
00525   void set(const char*);
00526   
00527   virtual void update();
00528   virtual void putProp(class UContext*, class UCtrl*);
00529 };
00530 
00531 /* ==================================================== [Elc:03] ======= */
00532 /* ==================================================== ======== ======= */
00533 
00537 class UFlagdef : public UProp {
00538 public:
00539   UFlagdef();
00540   UFlagdef(const UFlag&);
00541 
00542   friend UFlagdef& uflagdef() {return *new UFlagdef();}
00543   friend UFlagdef& uflagdef(const class UFlag& f) {return *new UFlagdef(f);}
00544 
00545   virtual void set(const UFlag&);
00546   virtual void clear();
00547 
00548   const UFlag* getFlag() const {return flag;}
00549   
00550   virtual void update();
00551   virtual void putProp(UContext*, class UCtrl*);
00552 
00553 protected:
00554   const class UFlag* flag;
00555 };
00556 
00557 /* ==================================================== [Elc:03] ======= */
00558 /* ==================================================== ======== ======= */
00559 
00560 class UPropdef : public UFlagdef {
00561 public:
00562   UPropdef();
00563   UPropdef(const UFlag&);
00564   UPropdef(const UFlag&, UProp&);
00565   UPropdef(const UFlag&, UProp*);
00566   friend UPropdef& upropdef(const class UFlag& f, UProp&);
00567   friend UPropdef& upropdef(const class UFlag& f, UProp*);
00568 
00569   virtual void set(const UFlag&);
00570   virtual void set(UProp&);
00571   virtual void set(UProp*);
00572   virtual void set(const UFlag&, UProp&);
00573   virtual void set(const UFlag&, UProp*);
00574   virtual void clear();
00575 
00576   UProp* getProp() const {return prop;}
00577   virtual void putProp(UContext*, class UCtrl*);
00578 
00579 private:
00580   uptr<UProp> prop;
00581 };
00582 
00583 /* ==================================================== ======== ======= */
00584 
00585 class UPropval : public UProp {
00586 public:
00587   UPropval(const UFlag&);
00588   friend UPropval& upropval(const class UFlag& f);
00589 
00590   const UFlag* getFlag() const {return flag;}
00591 
00592   virtual void update();
00593   virtual void putProp(UContext*, class UCtrl*);
00594 
00595 private:
00596   const class UFlag* flag;
00597 };
00598 
00599 #endif
00600 /* ==================================================== [TheEnd] ======= */
00601 /* ==================================================== [Elc:03] ======= */

Generated on Thu May 19 12:40:17 2005 for Ubit[Eric.Lecolinet@enst.fr] by  doxygen 1.4.2