LCOV - code coverage report
Current view: top level - src/utils/foxtools - MFXSevenSegment.cpp (source / functions) Coverage Total Hit
Test: lcov.info Lines: 57.7 % 392 226
Test Date: 2024-11-22 15:46:21 Functions: 62.5 % 32 20

            Line data    Source code
       1              : /****************************************************************************/
       2              : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
       3              : // Copyright (C) 2004-2024 German Aerospace Center (DLR) and others.
       4              : // This program and the accompanying materials are made available under the
       5              : // terms of the Eclipse Public License 2.0 which is available at
       6              : // https://www.eclipse.org/legal/epl-2.0/
       7              : // This Source Code may also be made available under the following Secondary
       8              : // Licenses when the conditions for such availability set forth in the Eclipse
       9              : // Public License 2.0 are satisfied: GNU General Public License, version 2
      10              : // or later which is available at
      11              : // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
      12              : // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
      13              : /****************************************************************************/
      14              : /// @file    MFXSevenSegment.cpp
      15              : /// @author  Mathew Robertson
      16              : /// @author  Daniel Krajzewicz
      17              : /// @author  Michael Behrisch
      18              : /// @date    2004-03-19
      19              : ///
      20              : //
      21              : /****************************************************************************/
      22              : #include <config.h>
      23              : 
      24              : #include "MFXSevenSegment.h"
      25              : 
      26              : 
      27              : /// @brief note: this class may change into FXLCDsegment, so as to support 7 or 14 segment display
      28              : #define ASCII_ZERO 48
      29              : 
      30              : // ===========================================================================
      31              : // FOX callback mapping
      32              : // ===========================================================================
      33              : 
      34              : FXDEFMAP(MFXSevenSegment) MFXSevenSegmentMap[] = {
      35              :     FXMAPFUNC(SEL_PAINT,    0,                              MFXSevenSegment::onPaint),
      36              :     FXMAPFUNC(SEL_COMMAND,  FXWindow::ID_SETVALUE,          MFXSevenSegment::onCmdSetValue),
      37              :     FXMAPFUNC(SEL_COMMAND,  FXWindow::ID_SETINTVALUE,       MFXSevenSegment::onCmdSetIntValue),
      38              :     FXMAPFUNC(SEL_COMMAND,  FXWindow::ID_GETINTVALUE,       MFXSevenSegment::onCmdGetIntValue),
      39              :     FXMAPFUNC(SEL_COMMAND,  FXWindow::ID_SETSTRINGVALUE,    MFXSevenSegment::onCmdSetStringValue),
      40              :     FXMAPFUNC(SEL_COMMAND,  FXWindow::ID_GETSTRINGVALUE,    MFXSevenSegment::onCmdGetStringValue),
      41              :     //FXMAPFUNC(SEL_UPDATE, FXWindow::ID_QUERY_TIP,         MFXSevenSegment::onQueryTip),
      42              :     //FXMAPFUNC(SEL_UPDATE, FXWindow::ID_QUERY_HELP,        MFXSevenSegment::onQueryHelp),
      43              : };
      44              : 
      45              : // Object implementation
      46    118821111 : FXIMPLEMENT(MFXSevenSegment, FXFrame, MFXSevenSegmentMap, ARRAYNUMBER(MFXSevenSegmentMap))
      47              : 
      48              : 
      49              : // ===========================================================================
      50              : // method definitions
      51              : // ===========================================================================
      52              : 
      53       513468 : MFXSevenSegment::MFXSevenSegment(FXComposite* p, FXObject* tgt, FXSelector sel, FXuint opts, FXint pl, FXint pr, FXint pt, FXint pb) :
      54              :     FXFrame(p, opts, 0, 0, 0, 0, pl, pr, pt, pb),
      55       513468 :     myValue(' '),
      56       513468 :     myLCDTextColor(FXRGB(0, 255, 0)),
      57       513468 :     myBackGroundColor(FXRGB(0, 0, 0)),
      58       513468 :     myHorizontalSegmentLength(8),
      59       513468 :     myVerticalSegmentLength(8),
      60       513468 :     mySegmentThickness(3),
      61       513468 :     myGroove(1) {
      62              :     setTarget(tgt);
      63              :     setSelector(sel);
      64       513468 :     enable();
      65       513468 : }
      66              : 
      67              : 
      68              : FXint
      69      4282322 : MFXSevenSegment::getDefaultWidth() {
      70      4282322 :     return padleft + (myGroove << 1) + myHorizontalSegmentLength + padright + (border << 1);
      71              : }
      72              : 
      73              : 
      74              : FXint
      75      4079512 : MFXSevenSegment::getDefaultHeight() {
      76      4079512 :     return padtop + (myGroove << 2) + (myVerticalSegmentLength << 1) + padbottom + (border << 1);
      77              : }
      78              : 
      79              : 
      80              : void
      81     11558720 : MFXSevenSegment::setText(FXchar val) {
      82     11558720 :     if (FXString(val, 1).upper() != FXString(myValue, 1).upper()) {
      83      1011760 :         myValue = val;
      84      1011760 :         recalc();
      85      1011760 :         update();
      86              :     }
      87     11558720 : }
      88              : 
      89              : 
      90              : void
      91            0 : MFXSevenSegment::setFgColor(const FXColor clr) {
      92            0 :     if (myLCDTextColor != clr) {
      93            0 :         myLCDTextColor = clr;
      94            0 :         recalc();
      95            0 :         update();
      96              :     }
      97            0 : }
      98              : 
      99              : 
     100              : void
     101            0 : MFXSevenSegment::setBgColor(const FXColor clr) {
     102            0 :     if (myBackGroundColor != clr) {
     103            0 :         myBackGroundColor = clr;
     104            0 :         recalc();
     105            0 :         update();
     106              :     }
     107            0 : }
     108              : 
     109              : 
     110              : void
     111       513468 : MFXSevenSegment::setHorizontal(const FXint len) {
     112       513468 :     if (len != myHorizontalSegmentLength) {
     113       513468 :         myHorizontalSegmentLength = (FXshort)len;
     114       513468 :         checkSize();
     115       513468 :         recalc();
     116       513468 :         update();
     117              :     }
     118       513468 : }
     119              : 
     120              : 
     121              : void
     122       513468 : MFXSevenSegment::setVertical(const FXint len) {
     123       513468 :     if (len != myVerticalSegmentLength) {
     124       513468 :         myVerticalSegmentLength = (FXshort)len;
     125       513468 :         checkSize();
     126       513468 :         recalc();
     127       513468 :         update();
     128              :     }
     129       513468 : }
     130              : 
     131              : 
     132              : void
     133       513468 : MFXSevenSegment::setThickness(const FXint w) {
     134       513468 :     if (w != mySegmentThickness) {
     135       513468 :         mySegmentThickness = (FXshort)w;
     136       513468 :         checkSize();
     137       513468 :         recalc();
     138       513468 :         update();
     139              :     }
     140       513468 : }
     141              : 
     142              : 
     143              : void
     144       513468 : MFXSevenSegment::setGroove(const FXint w) {
     145       513468 :     if (w != myGroove) {
     146       513468 :         myGroove = (FXshort)w;
     147       513468 :         checkSize();
     148       513468 :         recalc();
     149       513468 :         update();
     150              :     }
     151       513468 : }
     152              : 
     153              : 
     154              : long
     155      1001986 : MFXSevenSegment::onPaint(FXObject*, FXSelector, void* ptr) {
     156              :     FXEvent* event = (FXEvent*) ptr;
     157      1001986 :     FXDCWindow dc(this, event);
     158      1001986 :     drawFrame(dc, 0, 0, width, height);
     159      1001986 :     dc.setForeground(myBackGroundColor);
     160      1001986 :     dc.fillRectangle(border, border, width - (border << 1), height - (border << 1));
     161      1001986 :     dc.setForeground(myLCDTextColor);
     162      1001986 :     drawFigure(dc, myValue);
     163      1001986 :     return 1;
     164      1001986 : }
     165              : 
     166              : 
     167              : long
     168            0 : MFXSevenSegment::onCmdSetValue(FXObject*, FXSelector, void* ptr) {
     169              :     FXchar* c = (FXchar*)ptr;
     170            0 :     if (c[0] != '\0') {
     171            0 :         setText(c[0]);
     172              :     }
     173            0 :     return 1;
     174              : }
     175              : 
     176              : 
     177              : long
     178            0 : MFXSevenSegment::onCmdGetIntValue(FXObject* sender, FXSelector, void*) {
     179            0 :     FXint i = myValue - ASCII_ZERO;
     180            0 :     if (i < 0) {
     181            0 :         i = 0;
     182              :     }
     183            0 :     if (i > 9) {
     184            0 :         i = 9;
     185              :     }
     186            0 :     sender->handle(this, FXSEL(SEL_COMMAND, ID_SETINTVALUE), (void*)&i);
     187            0 :     return 1;
     188              : }
     189              : 
     190              : 
     191              : long
     192            0 : MFXSevenSegment::onCmdSetIntValue(FXObject*, FXSelector, void* ptr) {
     193            0 :     FXint i = *((FXint*)ptr);
     194              :     if (i < 0) {
     195              :         i = 0;
     196              :     }
     197            0 :     if (i > 9) {
     198              :         i = 9;
     199              :     }
     200            0 :     setText((FXchar)(i + ASCII_ZERO));
     201            0 :     return 1;
     202              : }
     203              : 
     204              : 
     205              : long
     206            0 : MFXSevenSegment::onCmdGetStringValue(FXObject* sender, FXSelector, void*) {
     207            0 :     FXString s(myValue, 1);
     208            0 :     sender->handle(this, FXSEL(SEL_COMMAND, ID_SETSTRINGVALUE), (void*)&s);
     209            0 :     return 1;
     210            0 : }
     211              : 
     212              : 
     213              : long
     214            0 : MFXSevenSegment::onCmdSetStringValue(FXObject*, FXSelector, void* ptr) {
     215              :     FXString* s = (FXString*)ptr;
     216            0 :     if (s->length()) {
     217            0 :         setText(s->at(0));
     218              :     }
     219            0 :     return 1;
     220              : }
     221              : 
     222              : 
     223              : void
     224            0 : MFXSevenSegment::save(FXStream& store) const {
     225            0 :     FXFrame::save(store);
     226            0 :     store << myValue;
     227            0 :     store << myLCDTextColor;
     228            0 :     store << myBackGroundColor;
     229            0 :     store << myHorizontalSegmentLength;
     230            0 :     store << myVerticalSegmentLength;
     231            0 :     store << mySegmentThickness;
     232            0 :     store << myGroove;
     233            0 : }
     234              : 
     235              : 
     236              : void
     237            0 : MFXSevenSegment::load(FXStream& store) {
     238            0 :     FXFrame::load(store);
     239            0 :     store >> myValue;
     240            0 :     store >> myLCDTextColor;
     241            0 :     store >> myBackGroundColor;
     242            0 :     store >> myHorizontalSegmentLength;
     243            0 :     store >> myVerticalSegmentLength;
     244            0 :     store >> mySegmentThickness;
     245            0 :     store >> myGroove;
     246            0 : }
     247              : 
     248              : 
     249              : long
     250            0 : MFXSevenSegment::onQueryTip(FXObject* sender, FXSelector sel, void* ptr) {
     251            0 :     if (getParent()) {
     252            0 :         return getParent()->handle(sender, sel, ptr);
     253              :     }
     254              :     return 0;
     255              : }
     256              : 
     257              : 
     258              : long
     259            0 : MFXSevenSegment::onQueryHelp(FXObject* sender, FXSelector sel, void* ptr) {
     260            0 :     if (getParent()) {
     261            0 :         return getParent()->handle(sender, sel, ptr);
     262              :     }
     263              :     return 0;
     264              : }
     265              : 
     266              : 
     267              : void
     268       646390 : MFXSevenSegment::drawTopSegment(FXDCWindow& dc, FXshort x, FXshort y) {
     269              :     FXPoint points[4];
     270       646390 :     points[0].x = x;
     271       646390 :     points[0].y = y;
     272       646390 :     points[1].x = x + myHorizontalSegmentLength;
     273       646390 :     points[1].y = y;
     274       646390 :     points[2].x = x + myHorizontalSegmentLength - mySegmentThickness;
     275       646390 :     points[2].y = y + mySegmentThickness;
     276       646390 :     points[3].x = x + mySegmentThickness;
     277       646390 :     points[3].y = y + mySegmentThickness;
     278       646390 :     dc.fillPolygon(points, 4);
     279       646390 : }
     280              : 
     281              : 
     282              : void
     283       494744 : MFXSevenSegment::drawLeftTopSegment(FXDCWindow& dc, FXshort x, FXshort y) {
     284              :     FXPoint points[4];
     285       494744 :     points[0].x = x;
     286       494744 :     points[0].y = y;
     287       494744 :     points[1].x = x + mySegmentThickness;
     288       494744 :     points[1].y = y + mySegmentThickness;
     289       494744 :     points[2].x = x + mySegmentThickness;
     290       494744 :     points[2].y = y + myVerticalSegmentLength - (mySegmentThickness >> 1);
     291       494744 :     points[3].x = x;
     292       494744 :     points[3].y = y + myVerticalSegmentLength;
     293       494744 :     dc.fillPolygon(points, 4);
     294       494744 : }
     295              : 
     296              : 
     297              : void
     298       635623 : MFXSevenSegment::drawRightTopSegment(FXDCWindow& dc, FXshort x, FXshort y) {
     299              :     FXPoint points[4];
     300       635623 :     points[0].x = x + mySegmentThickness;
     301       635623 :     points[0].y = y;
     302       635623 :     points[1].x = x + mySegmentThickness;
     303       635623 :     points[1].y = y + myVerticalSegmentLength;
     304       635623 :     points[2].x = x;
     305       635623 :     points[2].y = y + myVerticalSegmentLength - (mySegmentThickness >> 1);
     306       635623 :     points[3].x = x;
     307       635623 :     points[3].y = y + mySegmentThickness;
     308       635623 :     dc.fillPolygon(points, 4);
     309       635623 : }
     310              : 
     311              : 
     312              : void
     313       659953 : MFXSevenSegment::drawMiddleSegment(FXDCWindow& dc, FXshort x, FXshort y) {
     314              :     FXPoint points[6];
     315       659953 :     points[0].x = x + mySegmentThickness;
     316       659953 :     points[0].y = y;
     317       659953 :     points[1].x = x + myHorizontalSegmentLength - mySegmentThickness;
     318       659953 :     points[1].y = y;
     319       659953 :     points[2].x = x + myHorizontalSegmentLength;
     320       659953 :     points[2].y = y + (mySegmentThickness >> 1);
     321       659953 :     points[3].x = x + myHorizontalSegmentLength - mySegmentThickness;
     322       659953 :     points[3].y = y + mySegmentThickness;
     323       659953 :     points[4].x = x + mySegmentThickness;
     324       659953 :     points[4].y = y + mySegmentThickness;
     325       659953 :     points[5].x = x;
     326       659953 :     points[5].y = y + (mySegmentThickness >> 1);
     327       659953 :     dc.fillPolygon(points, 6);
     328       659953 : }
     329              : 
     330              : 
     331              : void
     332       339581 : MFXSevenSegment::drawLeftBottomSegment(FXDCWindow& dc, FXshort x, FXshort y) {
     333              :     FXPoint points[4];
     334       339581 :     points[0].x = x;
     335       339581 :     points[0].y = y;
     336       339581 :     points[1].x = x + mySegmentThickness;
     337       339581 :     points[1].y = y + (mySegmentThickness >> 1);
     338       339581 :     points[2].x = x + mySegmentThickness;
     339       339581 :     points[2].y = y + myVerticalSegmentLength - mySegmentThickness;
     340       339581 :     points[3].x = x;
     341       339581 :     points[3].y = y + myVerticalSegmentLength;
     342       339581 :     dc.fillPolygon(points, 4);
     343       339581 : }
     344              : 
     345              : 
     346              : void
     347       716774 : MFXSevenSegment::drawRightBottomSegment(FXDCWindow& dc, FXshort x, FXshort y) {
     348              :     FXPoint points[4];
     349       716774 :     points[0].x = x + mySegmentThickness;
     350       716774 :     points[0].y = y;
     351       716774 :     points[1].x = x + mySegmentThickness;
     352       716774 :     points[1].y = y + myVerticalSegmentLength;
     353       716774 :     points[2].x = x;
     354       716774 :     points[2].y = y + myVerticalSegmentLength - mySegmentThickness;
     355       716774 :     points[3].x = x;
     356       716774 :     points[3].y = y + (mySegmentThickness >> 1);
     357       716774 :     dc.fillPolygon(points, 4);
     358       716774 : }
     359              : 
     360              : 
     361              : void
     362       571810 : MFXSevenSegment::drawBottomSegment(FXDCWindow& dc, FXshort x, FXshort y) {
     363              :     FXPoint points[4];
     364       571810 :     points[0].x = x + mySegmentThickness;
     365       571810 :     points[0].y = y;
     366       571810 :     points[1].x = x + myHorizontalSegmentLength - mySegmentThickness;
     367       571810 :     points[1].y = y;
     368       571810 :     points[2].x = x + myHorizontalSegmentLength;
     369       571810 :     points[2].y = y + mySegmentThickness;
     370       571810 :     points[3].x = x;
     371       571810 :     points[3].y = y + mySegmentThickness;
     372       571810 :     dc.fillPolygon(points, 4);
     373       571810 : }
     374              : 
     375              : 
     376              : void
     377      1001986 : MFXSevenSegment::drawSegments(FXDCWindow& dc, FXbool s1, FXbool s2, FXbool s3, FXbool s4, FXbool s5, FXbool s6, FXbool s7) {
     378      1001986 :     FXshort sx = (FXshort)(border + padleft), sy = (FXshort)(border + padtop);
     379              :     FXshort x, y;
     380      1001986 :     if (options & LAYOUT_FILL) {
     381            0 :         if (options & LAYOUT_FILL_X) {
     382            0 :             myHorizontalSegmentLength = (FXshort)(width - padleft - padright - (border << 1));
     383            0 :             if (myHorizontalSegmentLength < 4) {
     384            0 :                 myHorizontalSegmentLength = 4;
     385              :             }
     386              :         }
     387            0 :         if (options & LAYOUT_FILL_Y) {
     388            0 :             myVerticalSegmentLength = (FXshort)(height - padtop - padbottom - (border << 1)) >> 1;
     389            0 :             if (myVerticalSegmentLength < 4) {
     390            0 :                 myVerticalSegmentLength = 4;
     391              :             }
     392              :         }
     393            0 :         mySegmentThickness = FXMIN(myHorizontalSegmentLength, myVerticalSegmentLength) / 4;
     394            0 :         myGroove = mySegmentThickness / 4;
     395            0 :         if (mySegmentThickness < 1) {
     396            0 :             mySegmentThickness = 1;
     397              :         }
     398            0 :         if (myGroove < 1) {
     399            0 :             myGroove = 1;
     400              :         }
     401            0 :         if (options & LAYOUT_FILL_X) {
     402            0 :             myHorizontalSegmentLength -= myGroove << 1;
     403              :         }
     404            0 :         if (options & LAYOUT_FILL_Y) {
     405            0 :             myVerticalSegmentLength -= myGroove << 1;
     406              :         }
     407              :     }
     408      1001986 :     if (s1) {
     409       646390 :         x = sx + myGroove;
     410              :         y = sy;
     411       646390 :         drawTopSegment(dc, x, y);
     412              :     }
     413      1001986 :     if (s2) {
     414              :         x = sx;
     415       494744 :         y = sy + myGroove;
     416       494744 :         drawLeftTopSegment(dc, x, y);
     417              :     }
     418      1001986 :     if (s3) {
     419       635623 :         x = sx + myGroove + myHorizontalSegmentLength - mySegmentThickness + myGroove;
     420       635623 :         y = sy + myGroove;
     421       635623 :         drawRightTopSegment(dc, x, y);
     422              :     }
     423      1001986 :     if (s4) {
     424       659953 :         x = sx + myGroove;
     425       659953 :         y = sy + myGroove + myVerticalSegmentLength - (mySegmentThickness >> 1) + myGroove;
     426       659953 :         drawMiddleSegment(dc, x, y);
     427              :     }
     428      1001986 :     if (s5) {
     429              :         x = sx;
     430       339581 :         y = sy + (myGroove << 1) + myVerticalSegmentLength + myGroove;
     431       339581 :         drawLeftBottomSegment(dc, x, y);
     432              :     }
     433      1001986 :     if (s6) {
     434       716774 :         x = sx + myGroove + myHorizontalSegmentLength - mySegmentThickness + myGroove;
     435       716774 :         y = sy + (myGroove << 1) + myVerticalSegmentLength + myGroove;
     436       716774 :         drawRightBottomSegment(dc, x, y);
     437              :     }
     438      1001986 :     if (s7) {
     439       571810 :         x = sx + myGroove;
     440       571810 :         y = sy + (myGroove << 1) + myVerticalSegmentLength + myGroove + myVerticalSegmentLength + myGroove - mySegmentThickness;
     441       571810 :         drawBottomSegment(dc, x, y);
     442              :     }
     443      1001986 : }
     444              : 
     445              : 
     446              : void
     447      1001986 : MFXSevenSegment::drawFigure(FXDCWindow& dc, FXchar figure) {
     448      1001986 :     switch (figure) {
     449        85429 :         case ' ' :
     450        85429 :             drawSegments(dc, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE);
     451        85429 :             break;
     452            0 :         case '(' :
     453            0 :             drawSegments(dc, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE);
     454            0 :             break;
     455            0 :         case ')' :
     456            0 :             drawSegments(dc, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, TRUE);
     457            0 :             break;
     458            0 :         case '[' :
     459            0 :             drawSegments(dc, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE);
     460            0 :             break;
     461            0 :         case ']' :
     462            0 :             drawSegments(dc, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, TRUE);
     463            0 :             break;
     464            0 :         case '=' :
     465            0 :             drawSegments(dc, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE);
     466            0 :             break;
     467              : //    case '+' : drawSegments (dc, FALSE,FALSE,FALSE,TRUE ,FALSE,FALSE,FALSE); break;
     468       117474 :         case '-' :
     469              :         case ':' :
     470       117474 :             drawSegments(dc, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE);
     471       117474 :             break;
     472          688 :         case '_' :
     473              :         case '.' :
     474              :         case ',' :
     475          688 :             drawSegments(dc, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE);
     476          688 :             break;
     477       105728 :         case '0' :
     478       105728 :             drawSegments(dc, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE);
     479       105728 :             break;
     480        74920 :         case '1' :
     481        74920 :             drawSegments(dc, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE);
     482        74920 :             break;
     483        81621 :         case '2' :
     484        81621 :             drawSegments(dc, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE);
     485        81621 :             break;
     486        71842 :         case '3' :
     487        71842 :             drawSegments(dc, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE);
     488        71842 :             break;
     489        77085 :         case '4' :
     490        77085 :             drawSegments(dc, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE);
     491        77085 :             break;
     492        86744 :         case '5' :
     493        86744 :             drawSegments(dc, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE, TRUE);
     494        86744 :             break;
     495        76028 :         case '6' :
     496        76028 :             drawSegments(dc, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE);
     497        76028 :             break;
     498        75268 :         case '7' :
     499        75268 :             drawSegments(dc, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE);
     500        75268 :             break;
     501        76204 :         case '8' :
     502        76204 :             drawSegments(dc, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE);
     503        76204 :             break;
     504        72955 :         case '9' :
     505        72955 :             drawSegments(dc, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE);
     506        72955 :             break;
     507            0 :         case 'a' :
     508              :         case 'A' :
     509            0 :             drawSegments(dc, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE);
     510            0 :             break;
     511            0 :         case 'b' :
     512              :         case 'B' :
     513            0 :             drawSegments(dc, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE);
     514            0 :             break;
     515            0 :         case 'c' :
     516              :         case 'C' :
     517            0 :             drawSegments(dc, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE);
     518            0 :             break;
     519            0 :         case 'd' :
     520              :         case 'D' :
     521            0 :             drawSegments(dc, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE);
     522            0 :             break;
     523            0 :         case 'e' :
     524              :         case 'E' :
     525            0 :             drawSegments(dc, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE);
     526            0 :             break;
     527            0 :         case 'f' :
     528              :         case 'F' :
     529            0 :             drawSegments(dc, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE);
     530            0 :             break;
     531            0 :         case 'g' :
     532              :         case 'G' :
     533            0 :             drawSegments(dc, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE);
     534            0 :             break;
     535            0 :         case 'h' :
     536              :         case 'H' :
     537            0 :             drawSegments(dc, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE);
     538            0 :             break;
     539            0 :         case 'i' :
     540              :         case 'I' :
     541            0 :             drawSegments(dc, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE);
     542            0 :             break;
     543            0 :         case 'j' :
     544              :         case 'J' :
     545            0 :             drawSegments(dc, FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE);
     546            0 :             break;
     547              : //    case 'k' :
     548              : //    case 'k' : drawSegments (dc, FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE); break;
     549            0 :         case 'l' :
     550              :         case 'L' :
     551            0 :             drawSegments(dc, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE);
     552            0 :             break;
     553              : //    case 'm' :
     554              : //    case 'M' : drawSegments (dc, FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE); break;
     555            0 :         case 'n' :
     556              :         case 'N' :
     557            0 :             drawSegments(dc, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE);
     558            0 :             break;
     559            0 :         case 'o' :
     560              :         case 'O' :
     561            0 :             drawSegments(dc, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE);
     562            0 :             break;
     563            0 :         case 'p' :
     564              :         case 'P' :
     565            0 :             drawSegments(dc, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE);
     566            0 :             break;
     567            0 :         case 'q' :
     568              :         case 'Q' :
     569            0 :             drawSegments(dc, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE);
     570            0 :             break;
     571            0 :         case 'r' :
     572              :         case 'R' :
     573            0 :             drawSegments(dc, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE);
     574            0 :             break;
     575            0 :         case 's' :
     576              :         case 'S' :
     577            0 :             drawSegments(dc, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE, TRUE);
     578            0 :             break;
     579            0 :         case 't' :
     580              :         case 'T' :
     581            0 :             drawSegments(dc, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE);
     582            0 :             break;
     583            0 :         case 'u' :
     584              :         case 'U' :
     585            0 :             drawSegments(dc, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE);
     586            0 :             break;
     587              : //    case 'v' :
     588              : //    case 'V' : drawSegments (dc, FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE); break;
     589              : //    case 'w' :
     590              : //    case 'W' : drawSegments (dc, FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE); break;
     591            0 :         case 'x' :
     592              :         case 'X' :
     593            0 :             drawSegments(dc, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE);
     594            0 :             break;
     595            0 :         case 'y' :
     596              :         case 'Y' :
     597            0 :             drawSegments(dc, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE);
     598            0 :             break;
     599              : //    case 'z' :
     600              : //    case 'Z' :
     601            0 :         default  :
     602            0 :             fxerror("MFXSevenSegment doesn't support: %c\n", figure);
     603              :     }
     604      1001986 : }
     605              : 
     606              : 
     607              : void
     608      2053872 : MFXSevenSegment::checkSize() {
     609      2053872 :     if (myHorizontalSegmentLength < 3) {
     610       513468 :         myHorizontalSegmentLength = 3;
     611       513468 :         mySegmentThickness = 1;
     612              :     }
     613      2053872 :     if (myVerticalSegmentLength < 3) {
     614            0 :         myVerticalSegmentLength = 3;
     615            0 :         mySegmentThickness = 1;
     616              :     }
     617      2053872 :     if (mySegmentThickness < 1) {
     618            0 :         mySegmentThickness = 1;
     619              :     }
     620      2053872 :     if (myHorizontalSegmentLength < (mySegmentThickness << 1)) {
     621       513468 :         myHorizontalSegmentLength = (mySegmentThickness << 1) + 1;
     622              :     }
     623      2053872 :     if (myVerticalSegmentLength < (mySegmentThickness << 1)) {
     624            0 :         myVerticalSegmentLength = (mySegmentThickness << 1) + 1;
     625              :     }
     626      2053872 :     if (myHorizontalSegmentLength < 8 || myVerticalSegmentLength < 8) {
     627      2053872 :         myGroove = 2;
     628              :     }
     629      2053872 :     if (myHorizontalSegmentLength < 1 || myVerticalSegmentLength < 3 || mySegmentThickness < 3) {
     630      2053872 :         myGroove = 1;
     631              :     }
     632      2053872 :     if (myGroove >= mySegmentThickness) {
     633      1026936 :         myGroove = mySegmentThickness - 1;
     634              :     }
     635      2053872 : }
        

Generated by: LCOV version 2.0-1