46 FXIMPLEMENT(
MFXSevenSegment, FXFrame, MFXSevenSegmentMap, ARRAYNUMBER(MFXSevenSegmentMap))
54 FXFrame(p, opts, 0, 0, 0, 0, pl, pr, pt, pb),
56 myLCDTextColor(FXRGB(0, 255, 0)),
57 myBackGroundColor(FXRGB(0, 0, 0)),
58 myHorizontalSegmentLength(8),
59 myVerticalSegmentLength(8),
60 mySegmentThickness(3),
82 if (FXString(val, 1).upper() != FXString(
myValue, 1).upper()) {
156 FXEvent*
event = (FXEvent*) ptr;
157 FXDCWindow dc(
this, event);
158 drawFrame(dc, 0, 0, width, height);
160 dc.fillRectangle(border, border, width - (border << 1), height - (border << 1));
169 FXchar* c = (FXchar*)ptr;
186 sender->handle(
this, FXSEL(SEL_COMMAND, ID_SETINTVALUE), (
void*)&i);
193 FXint i = *((FXint*)ptr);
208 sender->handle(
this, FXSEL(SEL_COMMAND, ID_SETSTRINGVALUE), (
void*)&s);
215 FXString* s = (FXString*)ptr;
225 FXFrame::save(store);
238 FXFrame::load(store);
252 return getParent()->handle(sender, sel, ptr);
261 return getParent()->handle(sender, sel, ptr);
278 dc.fillPolygon(points, 4);
293 dc.fillPolygon(points, 4);
308 dc.fillPolygon(points, 4);
327 dc.fillPolygon(points, 6);
342 dc.fillPolygon(points, 4);
357 dc.fillPolygon(points, 4);
372 dc.fillPolygon(points, 4);
378 FXshort sx = (FXshort)(border + padleft), sy = (FXshort)(border + padtop);
380 if (options & LAYOUT_FILL) {
381 if (options & LAYOUT_FILL_X) {
387 if (options & LAYOUT_FILL_Y) {
401 if (options & LAYOUT_FILL_X) {
404 if (options & LAYOUT_FILL_Y) {
450 drawSegments(dc, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE);
453 drawSegments(dc, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE);
456 drawSegments(dc, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, TRUE);
459 drawSegments(dc, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE);
462 drawSegments(dc, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, TRUE);
465 drawSegments(dc, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE);
470 drawSegments(dc, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE);
475 drawSegments(dc, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE);
478 drawSegments(dc, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE);
481 drawSegments(dc, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE);
484 drawSegments(dc, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE);
487 drawSegments(dc, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE);
490 drawSegments(dc, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE);
493 drawSegments(dc, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE, TRUE);
496 drawSegments(dc, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE);
499 drawSegments(dc, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE);
502 drawSegments(dc, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE);
505 drawSegments(dc, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE);
509 drawSegments(dc, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE);
513 drawSegments(dc, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE);
517 drawSegments(dc, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE);
521 drawSegments(dc, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE);
525 drawSegments(dc, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE);
529 drawSegments(dc, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE);
533 drawSegments(dc, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE);
537 drawSegments(dc, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE);
541 drawSegments(dc, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE);
545 drawSegments(dc, FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE);
551 drawSegments(dc, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE);
557 drawSegments(dc, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE);
561 drawSegments(dc, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE);
565 drawSegments(dc, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE);
569 drawSegments(dc, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE);
573 drawSegments(dc, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE);
577 drawSegments(dc, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE, TRUE);
581 drawSegments(dc, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE);
585 drawSegments(dc, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE);
593 drawSegments(dc, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE);
597 drawSegments(dc, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE);
602 fxerror(
"MFXSevenSegment doesn't support: %c\n", figure);
FXDEFMAP(MFXSevenSegment) MFXSevenSegmentMap[]
#define ASCII_ZERO
note: this class may change into FXLCDsegment, so as to support 7 or 14 segment display
Seven-segment (eg LCD/watch style) widget.
FXshort myVerticalSegmentLength
This is pixel length of a vertical segment.
long onCmdSetStringValue(FXObject *, FXSelector, void *)
set from string value
void setText(const FXchar val)
set the text on the display
FXshort myGroove
Groove between segments.
void drawLeftBottomSegment(FXDCWindow &dc, FXshort x, FXshort y)
void drawLeftTopSegment(FXDCWindow &dc, FXshort x, FXshort y)
void drawTopSegment(FXDCWindow &dc, FXshort x, FXshort y)
FOX constructor.
void setThickness(const FXint w)
get/set segment thickness
void checkSize()
validates the sizes of the segment dimensions
long onCmdSetIntValue(FXObject *, FXSelector, void *)
set from int value
virtual FXint getDefaultHeight()
Return minimum height.
long onCmdGetStringValue(FXObject *, FXSelector, void *)
get from string value
virtual void save(FXStream &store) const
save resources
void setHorizontal(const FXint len)
get/set horizontal segment length
void drawRightBottomSegment(FXDCWindow &dc, FXshort x, FXshort y)
FXshort myHorizontalSegmentLength
This is pixel length of a horizontal segment.
virtual void drawFigure(FXDCWindow &dc, FXchar figure)
Draw an alphanumeric figure (consisting of seven segments)
void setVertical(const FXint len)
get/set vertical segment length
long onPaint(FXObject *, FXSelector, void *)
draw/redraw object
long onQueryTip(FXObject *, FXSelector, void *)
let parent show tip if appropriate
void drawMiddleSegment(FXDCWindow &dc, FXshort x, FXshort y)
FXshort mySegmentThickness
This is segment thickness, in pixels.
void setBgColor(const FXColor clr)
get/set background color
virtual FXint getDefaultWidth()
Return minimum width.
FXColor myBackGroundColor
The color of the LCD background.
FXColor myLCDTextColor
The color of the LCD text.
void drawBottomSegment(FXDCWindow &dc, FXshort x, FXshort y)
void setFgColor(const FXColor clr)
get/set foreground color
long onQueryHelp(FXObject *, FXSelector, void *)
let parent show help if appropriate
void drawSegments(FXDCWindow &dc, FXbool s1, FXbool s2, FXbool s3, FXbool s4, FXbool s5, FXbool s6, FXbool s7)
Draw a seven-segment unit (each segment can be set indepentantly)
long onCmdSetValue(FXObject *, FXSelector, void *)
set from value
void setGroove(const FXint w)
get/set myGroove thickness
long onCmdGetIntValue(FXObject *, FXSelector, void *)
get from int value
void drawRightTopSegment(FXDCWindow &dc, FXshort x, FXshort y)
FXchar myValue
The currently shown character.
virtual void load(FXStream &store)
load resources