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

FXLCDLabel.h

Go to the documentation of this file.
00001 /********************************************************************************
00002 *                                                                               *
00003 *                  LCD text label widget                                        *
00004 *                                                                               *
00005 *********************************************************************************
00006 * Copyright (C) 2003 by Mathew Robertson.   All Rights Reserved.                *
00007 *********************************************************************************
00008 * This library is free software; you can redistribute it and/or                 *
00009 * modify it under the terms of the GNU Lesser General Public                    *
00010 * License as published by the Free Software Foundation; either                  *
00011 * version 2.1 of the License, or (at your option) any later version.            *
00012 *                                                                               *
00013 * This library is distributed in the hope that it will be useful,               *
00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of                *
00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU             *
00016 * Lesser General Public License for more details.                               *
00017 *                                                                               *
00018 * You should have received a copy of the GNU Lesser General Public              *
00019 * License along with this library; if not, write to the Free Software           *
00020 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.    *
00021 *********************************************************************************/
00022 #ifndef FXLCDLABEL_H
00023 #define FXLCDLABEL_H
00024 
00025 #ifndef FXHORIZONTALFRAME_H
00026 #include <fox/FXHorizontalFrame.h>
00027 using namespace FX;
00028 #endif
00029 namespace FXEX {
00030 
00031 /// LCD Label styles
00032 enum {
00033   LCDLABEL_NORMAL        = FRAME_SUNKEN|FRAME_THICK,
00034   LCDLABEL_LEADING_ZEROS = 0x01000000,    /// leading zero's on label - useful for integers
00035   };
00036 
00037 /**
00038  * A widget which has the seven-segment display used as the drawing object for each letter
00039  * in the label.  Supports display of leading zeros, such as when you need to display a
00040  * number.  Also supports the 'JUSTIFY_RIGHT' option, for right alignment.
00041  */
00042 class FXAPI FXLCDLabel : public FXHorizontalFrame{
00043   FXDECLARE(FXLCDLabel)
00044 
00045   protected:
00046     FXLCDLabel () {}
00047 
00048     FXString label;      /// The currently shown label
00049     FXint   nfigures;    /// The number of shown figuresi, greater than zero
00050 
00051     // Draw a string
00052     virtual void drawString(const FXString& lbl);
00053 
00054   public:
00055     enum {
00056     ID_SEVENSEGMENT=FXHorizontalFrame::ID_LAST,
00057     ID_LAST
00058     };
00059 
00060   public:
00061     long onPaint (FXObject*, FXSelector, void*);
00062     long onCmdSetValue(FXObject*,FXSelector,void* ptr);
00063     long onCmdSetIntValue(FXObject*,FXSelector,void* ptr);
00064     long onCmdSetRealValue(FXObject*,FXSelector,void* ptr);
00065     long onCmdSetStringValue(FXObject*,FXSelector,void* ptr);
00066     long onCmdGetIntValue(FXObject*,FXSelector,void* ptr);
00067     long onCmdGetRealValue(FXObject*,FXSelector,void* ptr);
00068     long onCmdGetStringValue(FXObject*,FXSelector,void* ptr);
00069     long onRedirectEvent(FXObject*,FXSelector,void* ptr);
00070     long onQueryTip(FXObject*,FXSelector,void* ptr);
00071     long onQueryHelp(FXObject*,FXSelector,void* ptr);
00072 
00073   public:
00074     /// make me a label
00075     FXLCDLabel (FXComposite* p,FXuint nfig=1,FXObject* tgt=NULL,FXSelector sel=0,FXuint opts=LCDLABEL_NORMAL,FXint pl=DEFAULT_PAD,FXint pr=DEFAULT_PAD,FXint pt=DEFAULT_PAD,FXint pb=DEFAULT_PAD,FXint hs=DEFAULT_PAD);
00076 
00077     /// create resrouces
00078     virtual void create();
00079 
00080     /// detach resources
00081     virtual void detach();
00082 
00083     /// destroy resources
00084     virtual void destroy();
00085 
00086     /// manipulate text in LCD label
00087     void setText(FXString lbl);
00088     FXString getText() const { return label; }
00089 
00090     /// set/get forground color
00091     void setFgColor(FXColor clr);
00092     FXColor getFgColor() const;
00093 
00094     /// set/get background color
00095     void setBgColor(FXColor clr);
00096     FXColor getBgColor() const;
00097 
00098     /// set/get segment horizontal length - must be more than twice the segment width
00099     void setHorizontal(const FXint len);
00100     FXint getHorizontal() const;
00101 
00102     /// set/get segment vertical length - must be more than twice the segment width
00103     void setVertical(const FXint len);
00104     FXint getVertical() const;
00105 
00106     /// set/get segment width - must be less than half the segment length
00107     void setThickness(const FXint width);
00108     FXint getThickness() const;
00109 
00110     /// set/get groove width - must be less than segment width
00111     void setGroove(const FXint width);
00112     FXint getGroove() const;
00113 
00114     /// return minimum width
00115     virtual FXint getDefaultWidth();
00116 
00117     /// return minimum height
00118     virtual FXint getDefaultHeight();
00119 
00120     /// save resources
00121     virtual void save(FXStream &store) const;
00122 
00123     /// load resources
00124     virtual void load(FXStream &store);
00125 
00126     /// dtor
00127     virtual ~FXLCDLabel();
00128   };
00129 
00130 } // namespace FXEX
00131 #endif // FXLCDLabel