/*
 *
 *             BW_LED_Number a very very primitive LED
 *
 * Copyright: Bernd Johannes Wuebben, wuebben@math.cornell.edu
 *
 *
 * $Id$
 *
 */


#ifndef BW_LED_NUM_H
#define BW_LED_NUM_H

#include "tqframe.h"
#include "tqbitarray.h"


class BW_LED_Number : public TQFrame
{
    Q_OBJECT
  

public:

    BW_LED_Number( TQWidget *parent=0, const char *name=0 );
   ~BW_LED_Number();

    void    setSmallLED(bool ); // if you LED is small it might look better
                                // if you call setSmallLED(TRUE)

            // this sets the fore and  background color of the LED
            // the forground defaults to yellow, the background defaults
            // to black

    void    setLEDColor( const TQColor& foregroundColor, const TQColor& backgroundColor );


            // this sets the color of the segments that are not iluminated
            // the default is a rather dark red.

    void    setLEDoffColor(TQColor color);

	    // calling showOffColon(TRUE) will show the colon if not illuminated
	    // this is rather ugly -- the default is that they are not shown.

    void    showOffColon(bool off);

signals:
    void	clicked();

public slots:

            // display one of the characters " 0 1 2 3 4 5 6 7 8 9 . : - "
    void    display( char c );

            // display on e of the numbers   " 0 1 2 3 4 5 6 7 8 9"
    void    display( int i );

protected:

    void    resizeEvent( TQResizeEvent * );
    void	mouseReleaseEvent ( TQMouseEvent * e );
    void    drawContents( TQPainter * );

private:

    bool    seg_contained_in( char c, char* seg);
    void    drawSegment( const TQPoint &, char, TQPainter &, int, bool = FALSE );
    void    drawSymbol( TQPainter *p,char s ,bool repaint);

    char* old_segments;
    char* current_segments;

    char   current_symbol;
    char    old_symbol;
    TQColor  offcolor;
    TQColor  fgcolor;
    TQColor  bgcolor;


    bool    smallLED;
    bool    show_off_colon;

private:	// Disabled copy constructor and operator=

    BW_LED_Number( const BW_LED_Number & );
    BW_LED_Number &operator=( const BW_LED_Number & );

};


#endif // BW_LED_NUM_H
