How to draw a line and write the text in the coordinates?

This forum is for eXpress++ general support.
Message
Author
User avatar
Eugene Lutsenko
Posts: 1649
Joined: Sat Feb 04, 2012 2:23 am
Location: Russia, Southern federal district, city of Krasnodar
Contact:

How to draw a line and write the text in the coordinates?

#1 Post by Eugene Lutsenko »

How to draw a straight line segment of a given thickness and color of the coordinates of start and end points of the segment?

How to write text to a graphical object at the specified position of the specified type font, size and color and determine its length in pixels?

User avatar
rdonnay
Site Admin
Posts: 4813
Joined: Wed Jan 27, 2010 6:58 pm
Location: Boise, Idaho USA
Contact:

Re: How to draw a line and write the text in the coordinates

#2 Post by rdonnay »

Look at DCGRA* commands, Gra*() functions, and DC_GraQueryTextBox().
The eXpress train is coming - and it has more cars.

User avatar
Eugene Lutsenko
Posts: 1649
Joined: Sat Feb 04, 2012 2:23 am
Location: Russia, Southern federal district, city of Krasnodar
Contact:

Re: How to draw a line and write the text in the coordinates

#3 Post by Eugene Lutsenko »

What library's ch-file to connect to use DRAWTEXTBOX?

Image

User avatar
Eugene Lutsenko
Posts: 1649
Joined: Sat Feb 04, 2012 2:23 am
Location: Russia, Southern federal district, city of Krasnodar
Contact:

Re: How to draw a line and write the text in the coordinates

#4 Post by Eugene Lutsenko »

It seems to work, then what I wanted:

Image

But the program itself I do not like the fact that it is run from one function and other functions a lot. Would like to see something like that worked right out of the main challenges certain functions without the other.

Code: Select all

*************************************
PROCEDURE AppSys
// Рабочий стол остается окном приложения
RETURN
*************************************
PROCEDURE Main()
   
   LOCAL GetList := {}, oStatic
   LOCAL oPS, oDevice

   DC_IconDefault(1000)

   PRIVATE aAttr                             // Массив атрибутов отображаемых линий
   PRIVATE nEvent, mp1, mp2, oXbp            // Переменные анализа событий

   N_Graf  = 15                              // Кол-во графиков
   N_Znach = 30                              // Кол-во значений в графиках
   PRIVATE aValues[N_Graf, N_Znach]          // Матрица значений

   *** Присвоить значения отображаемой матрице
   FOR g=1 TO N_Graf
       FOR x=1 TO N_Znach
           aValues[g, x] = ( g - 1 ) + SQRT(x)
       NEXT
   NEXT

   @0, 10 DCSAY "ТИПОВОЕ РЕШЕНИЕ ДЛЯ ПОСТРОЕНИЯ СЕМЕЙСТВА ГРАФИКОВ ФУНКЦИЙ РАЗНОЙ ТОЛЩИНЫ И ЦВЕТА"

   @ 2,1 DCSTATIC TYPE XBPSTATIC_TYPE_RECESSEDBOX SIZE 148,39 ;      // Размер окна для отображения графика
         OBJECT oStatic;
         EVAL {|| _PresSpace(oStatic, N_Graf, N_Znach, aValues) }

   DCREAD GUI ;
      TITLE "Типовое решение по отображению семейства графиков";     // Надпись на окне графика
      FIT ;
      BUTTONS DCGUI_BUTTON_EXIT

RETURN
*************************************************
STATIC FUNCTION _PresSpace( oStatic, N_Graf, N_Znach, aValues )

   LOCAL oPS, oDevice

   PUBLIC X_MaxW := 1024, Y_MaxW := 768               // Размер графического окна в пикселях

   oPS := XbpPresSpace():new()         // Create a PS
   oDevice := oStatic:winDevice()      // Get the device context
   oPS:create( oDevice )               // Link device context to PS
   oPS:SetViewPort( { 0, 0, X_MaxW, Y_MaxW } )
   oStatic:paint := {|mp1,mp2,obj| mp1 := LC_MultiLine( oPS, N_Graf, N_Znach, aValues ) }

RETURN NIL

*******************************************************
STATIC FUNCTION LC_MultiLine(oPS, N_Graf, N_Znach, aValues)

   ****** Поиск макс и мин значений функций
   Y_MinF = +99999999          // Минимальноее значение Y отображаемой функции
   Y_MaxF = -99999999          // Максимальное значение Y отображаемой функции
   FOR g=1 TO N_Graf
       FOR x=1 TO N_Znach
           Y_MinF = MIN(Y_MinF, aValues[g, x])
           Y_MaxF = MAX(Y_MaxF, aValues[g, x])
       NEXT
   NEXT

   PRIVATE LY := 10+15*N_Graf                            // Зона под областью графика для легенды (зависит от N_Graf)
*  PRIVATE LY := 0                                       // Зона под областью графика для легенды (зависит от N_Graf)
   PRIVATE X0 := 70, Y0 := 70 + LY                       // Начало координат по осям X и Y

   PRIVATE W_Wind := X_MaxW - X0                         // Ширина окна для самого графика
   PRIVATE H_Wind := Y_MaxW - Y0                         // Высота окна для самого графика (зависит от N_Graf)

   PRIVATE NX := 10, NY := 10                            // Кол-во меток и надписей по осям X и Y

   PRIVATE Kx := W_Wind / N_Znach                        // Коэффициент масштабирования по оси X: преобразует аргумент функции в номер пикселя по оси X
   PRIVATE Ky := H_Wind / ( Y_MaxF-Y_MinF + 1 )          // Коэффициент масштабирования по оси Y: преобразует значение функции в номер пикселя по оси Y

   ***** Нарисовать оси координат *******************
   aAttr := Array( GRA_AL_COUNT )                        // Массив для атрибутов линии  
   aAttr [ GRA_AL_TYPE  ] := GRA_LINETYPE_DEFAULT
   aAttr [ GRA_AL_COLOR ] := 1                           // Задать цвет    линии
   aAttr [ GRA_AL_WIDTH ] := 2                           // Задать толщину линии
   graSetAttrLine( oPS, aAttr )                          // Установить атрибуты

   GraLine( oPS, {X0       , Y0       }, {X0+W_Wind, Y0       } )    // Нарисовать ось X
   GraLine( oPS, {X0       , Y0       }, {X0       , Y0+H_Wind} )    // Нарисовать ось Y
   GraLine( oPS, {X0       , Y0+H_Wind}, {X0+W_Wind, Y0+H_Wind} )    // Нарисовать границу рамки изображения вверху параллельно оси X 
   GraLine( oPS, {X0+W_Wind, Y0       }, {X0+W_Wind, Y0+H_Wind} )    // Нарисовать границу рамки изображения справа параллельно оси Y

   aAttr := ARRAY( GRA_AM_COUNT )                        // Массив для атрибутов маркеров
   aAttr [ GRA_AM_SYMBOL ] := GRA_MARKSYM_PLUS
   GraSetAttrMarker( oPS, aAttr )

   aAttr := Array( GRA_AL_COUNT )                        // Массив для атрибутов линии  
   aAttr [ GRA_AL_TYPE  ] := GRA_LINETYPE_DOT
   aAttr [ GRA_AL_COLOR ] := 1                           // Задать цвет    линии
   aAttr [ GRA_AL_WIDTH ] := 1                           // Задать толщину линии
   graSetAttrLine( oPS, aAttr )                          // Установить атрибуты

   *** Надписать метки на оси X *********************
   DX = N_Znach/NX                                       // Диапазон значений x, через которое ставить метку
   FOR x=1 TO N_Znach STEP DX
       nX := X0 + x*Kx 
       GraMarker  ( oPS, { nX, Y0    } )
       GraStringAt( oPS, { nX, Y0-25 }, ALLTRIM(STR(x,21,3)) )
       GraLine( oPS,     { nX, Y0    }, {nX, Y0+H_Wind} )   // Нарисовать пунктирную линию уровня x
   NEXT
   *** Надписать метки на оси Y *********************
   DY = (Y_MaxF-Y_MinF+1)/NY                                // Диапазон значений y, через которое ставить метку
   FOR y = Y_MinF TO Y_MaxF STEP DY
       nY := Y0 + y*Ky 
       GraMarker  ( oPS, { X0   , nY } )
       GraStringAt( oPS, { X0-45, nY }, ALLTRIM(STR(y,21,3)) )
       GraLine( oPS,     { X0   , nY }, {X0+W_Wind, nY} )   // Нарисовать пунктирную линию уровня y
   NEXT

   ***** Рисование линий ***************************************************
   aAttr := Array( GRA_AL_COUNT )          // Массив для атрибутов линии  
   aAttr[ GRA_AL_TYPE  ] := GRA_LINETYPE_DEFAULT

   FOR g=1 TO N_Graf

       aAttr[ GRA_AL_COLOR ] := g          // Задать цвет    линии
       aAttr[ GRA_AL_WIDTH ] := g          // Задать толщину линии
       graSetAttrLine( oPS, aAttr )        // установить атрибуты

       FOR x=2 TO N_Znach

           X1 := X0 + (x-1)*Kx
           Y1 := Y0 + aValues[g, x-1]*Ky
           X2 := X0 +  x * Kx 
           Y2 := Y0 + aValues[g, x  ]*Ky

           GraLine( oPS, { X1, Y1 }, { X2, Y2 } )

       NEXT
   NEXT

   ***** Нарисовать оси координат *******************
   aAttr := Array( GRA_AL_COUNT )                        // Массив для атрибутов линии  
   aAttr [ GRA_AL_TYPE  ] := GRA_LINETYPE_DEFAULT
   aAttr [ GRA_AL_COLOR ] := 1                           // Задать цвет    линии
   aAttr [ GRA_AL_WIDTH ] := 2                           // Задать толщину линии
   graSetAttrLine( oPS, aAttr )                          // Установить атрибуты

   GraLine( oPS, {X0       , Y0       }, {X0+W_Wind, Y0       } )    // Нарисовать ось X
   GraLine( oPS, {X0       , Y0       }, {X0       , Y0+H_Wind} )    // Нарисовать ось Y
   GraLine( oPS, {X0       , Y0+H_Wind}, {X0+W_Wind, Y0+H_Wind} )    // Нарисовать границу рамки изображения вверху параллельно оси X 
   GraLine( oPS, {X0+W_Wind, Y0       }, {X0+W_Wind, Y0+H_Wind} )    // Нарисовать границу рамки изображения справа параллельно оси Y

RETURN NIL
[/size]

More will be written on themselves axes, legend, and buttons control recording the image or copy it to the clipboard

User avatar
Eugene Lutsenko
Posts: 1649
Joined: Sat Feb 04, 2012 2:23 am
Location: Russia, Southern federal district, city of Krasnodar
Contact:

Re: How to draw a line and write the text in the coordinates

#5 Post by Eugene Lutsenko »

How to make a label vertically upwards (for the axis label Y)? I tried to do like as described in the documentation, but I did not succeed. And yet, is there any analogue of the LEN (), for graphics functions that specifies the length of the graphic labels in pixels (given the attributes string, font, etc.)

Code: Select all

   oFont := XbpFont():new():create("12.Helvetica")
   GraSetFont( oPS ,oFont )

   AxName = "Name of the axis X"
   aAttr := ARRAY( GRA_AS_COUNT )
   aAttr [ GRA_AS_DIRECTION ] := GRA_CHDIRN_LEFTRIGHT
   GraSetAttrString( oPS, aAttr )

   GraStringAt( oPS, { X0+X0/2-LEN(AxName)/2, Y0-50 }, AxName )             // Надпись оси Х

   AyName = "Name of the axis Y"
   aAttr := ARRAY( GRA_AS_COUNT )
   aAttr [ GRA_AS_DIRECTION ] := GRA_CHDIRN_BOTTOMTOP
   GraSetAttrString( oPS, aAttr )

   GraStringAt( oPS, { X0-65, Y0+Y0/2-LEN(AYName)/2 }, AyName )             // Надпись оси y

User avatar
rdonnay
Site Admin
Posts: 4813
Joined: Wed Jan 27, 2010 6:58 pm
Location: Boise, Idaho USA
Contact:

Re: How to draw a line and write the text in the coordinates

#6 Post by rdonnay »

Look at GraQueryTextBox().
The eXpress train is coming - and it has more cars.

User avatar
Eugene Lutsenko
Posts: 1649
Joined: Sat Feb 04, 2012 2:23 am
Location: Russia, Southern federal district, city of Krasnodar
Contact:

Re: How to draw a line and write the text in the coordinates

#7 Post by Eugene Lutsenko »

It seems almost everyone got what they wanted. What remains is the control button.

Image

Code: Select all

*************************************
PROCEDURE AppSys
// Рабочий стол остается окном приложения
RETURN
*************************************
PROCEDURE Main()
   
   LOCAL GetList := {}, oStatic
   LOCAL oPS, oDevice

   DC_IconDefault(1000)

   SET COLLATION TO SYSTEM   // Руссификация

   PRIVATE aAttr                             // Массив атрибутов отображаемых линий
   PRIVATE nEvent, mp1, mp2, oXbp            // Переменные анализа событий

   N_Graf  = 5                               // Кол-во графиков
   N_Znach = 30                              // Кол-во значений в графиках
   PRIVATE aValues[N_Graf, N_Znach]          // Матрица значений
   PRIVATE aGraName[N_Graf]                  // Массив наименований функций

   *** Присвоить значения отображаемой матрице
   FOR g=1 TO N_Graf
       aGraName[g] = "Name of schedule N°"+ALLTRIM(STR(g))
       FOR x=1 TO N_Znach
           aValues[g, x] = ( g - 1 ) + SQRT(x)
       NEXT
   NEXT

   @0, 0 DCSAY "TYPICAL SOLUTIONS FOR CONSTRUCTING A FAMILY OF GRAPHS OF FUNCTIONS OF DIFFERENT THICKNESS AND COLORS" FONT ("22.ArialBold") SIZE 0

   @ 2,1 DCSTATIC TYPE XBPSTATIC_TYPE_RECESSEDBOX SIZE 148,39 ;      // Размер окна для отображения графика
         OBJECT oStatic;
         EVAL {|| _PresSpace(oStatic, N_Graf, N_Znach, aValues) }

   DCREAD GUI ;
      TITLE "Типовое решение по отображению семейства графиков";     // Надпись на окне графика
      FIT ;
      BUTTONS DCGUI_BUTTON_EXIT

RETURN
*************************************************
STATIC FUNCTION _PresSpace( oStatic, N_Graf, N_Znach, aValues )

   LOCAL oPS, oDevice

   PUBLIC X_MaxW := 1024, Y_MaxW := 768               // Размер графического окна в пикселях

   oPS := XbpPresSpace():new()         // Create a PS
   oDevice := oStatic:winDevice()      // Get the device context
   oPS:create( oDevice )               // Link device context to PS
   oPS:SetViewPort( { 0, 0, X_MaxW, Y_MaxW } )
   oStatic:paint := {|mp1,mp2,obj| mp1 := LC_MultiLine( oPS, N_Graf, N_Znach, aValues ) }

RETURN NIL

*******************************************************
STATIC FUNCTION LC_MultiLine(oPS, N_Graf, N_Znach, aValues)

   ****** Поиск макс и мин значений функций
   Y_MinF = +99999999          // Минимальноее значение Y отображаемой функции
   Y_MaxF = -99999999          // Максимальное значение Y отображаемой функции
   FOR g=1 TO N_Graf
       FOR x=1 TO N_Znach
           Y_MinF = MIN(Y_MinF, aValues[g, x])
           Y_MaxF = MAX(Y_MaxF, aValues[g, x])
       NEXT
   NEXT

   PRIVATE LY := 10+15*N_Graf                            // Зона под областью графика для легенды (зависит от N_Graf)
   PRIVATE X0 := 75, Y0 := 75 + LY                       // Начало координат по осям X и Y

   PRIVATE W_Wind := X_MaxW - X0                         // Ширина окна для самого графика
   PRIVATE H_Wind := Y_MaxW - Y0                         // Высота окна для самого графика (зависит от N_Graf)

   PRIVATE NX := 10, NY := 10                            // Кол-во меток и надписей по осям X и Y

   PRIVATE Kx := W_Wind / N_Znach                        // Коэффициент масштабирования по оси X: преобразует аргумент функции в номер пикселя по оси X
   PRIVATE Ky := H_Wind / ( Y_MaxF-Y_MinF + 1 )          // Коэффициент масштабирования по оси Y: преобразует значение функции в номер пикселя по оси Y

   ***** Нарисовать оси координат *******************
   aAttr := Array( GRA_AL_COUNT )                        // Массив для атрибутов линии  
   aAttr [ GRA_AL_TYPE  ] := GRA_LINETYPE_DEFAULT
   aAttr [ GRA_AL_COLOR ] := 1                           // Задать цвет    линии
   aAttr [ GRA_AL_WIDTH ] := 2                           // Задать толщину линии
   graSetAttrLine( oPS, aAttr )                          // Установить атрибуты

   GraLine( oPS, {X0       , Y0       }, {X0+W_Wind, Y0       } )    // Нарисовать ось X
   GraLine( oPS, {X0       , Y0       }, {X0       , Y0+H_Wind} )    // Нарисовать ось Y
   GraLine( oPS, {X0       , Y0+H_Wind}, {X0+W_Wind, Y0+H_Wind} )    // Нарисовать границу рамки изображения вверху параллельно оси X 
   GraLine( oPS, {X0+W_Wind, Y0       }, {X0+W_Wind, Y0+H_Wind} )    // Нарисовать границу рамки изображения справа параллельно оси Y

   aAttr := ARRAY( GRA_AM_COUNT )                        // Массив для атрибутов маркеров
   aAttr [ GRA_AM_SYMBOL ] := GRA_MARKSYM_PLUS
   GraSetAttrMarker( oPS, aAttr )

   aAttr := Array( GRA_AL_COUNT )                        // Массив для атрибутов линии  
   aAttr [ GRA_AL_TYPE  ] := GRA_LINETYPE_DOT
   aAttr [ GRA_AL_COLOR ] := 1                           // Задать цвет    линии
   aAttr [ GRA_AL_WIDTH ] := 1                           // Задать толщину линии
   graSetAttrLine( oPS, aAttr )                          // Установить атрибуты

   *** Надписать метки на оси X *********************
   DX = N_Znach/NX                                       // Диапазон значений x, через которое ставить метку
   FOR x=1 TO N_Znach STEP DX
       nX := X0 + x*Kx 
       GraMarker  ( oPS, { nX, Y0    } )
       GraStringAt( oPS, { nX, Y0-25 }, ALLTRIM(STR(x,21,3)) )
       GraLine( oPS,     { nX, Y0    }, {nX, Y0+H_Wind} )   // Нарисовать пунктирную линию уровня x
   NEXT
   *** Надписать метки на оси Y *********************
   DY = (Y_MaxF-Y_MinF+1)/NY                                // Диапазон значений y, через которое ставить метку
   FOR y = Y_MinF TO Y_MaxF STEP DY
       nY := Y0 + y*Ky 
       GraMarker  ( oPS, { X0   , nY } )
       GraStringAt( oPS, { X0-45, nY }, ALLTRIM(STR(y,21,3)) )
       GraLine( oPS,     { X0   , nY }, {X0+W_Wind, nY} )   // Нарисовать пунктирную линию уровня y
   NEXT

   ***** Рисование линий ***************************************************
   aAttr := Array( GRA_AL_COUNT )          // Массив для атрибутов линии  
   aAttr[ GRA_AL_TYPE  ] := GRA_LINETYPE_DEFAULT

   FOR g=1 TO N_Graf

       aAttr[ GRA_AL_COLOR ] := g          // Задать цвет    линии
       aAttr[ GRA_AL_WIDTH ] := g          // Задать толщину линии
       graSetAttrLine( oPS, aAttr )        // установить атрибуты

       FOR x=2 TO N_Znach

           X1 := X0 + (x-1)*Kx
           Y1 := Y0 + aValues[g, x-1]*Ky
           X2 := X0 +  x * Kx 
           Y2 := Y0 + aValues[g, x  ]*Ky

           GraLine( oPS, { X1, Y1 }, { X2, Y2 } )

       NEXT
   NEXT

   ***** Нарисовать оси координат **********************************

   aAttr := Array( GRA_AL_COUNT )                                    // Массив для атрибутов линии  
   aAttr [ GRA_AL_TYPE  ] := GRA_LINETYPE_DEFAULT
   aAttr [ GRA_AL_COLOR ] := 1                                       // Задать цвет    линии
   aAttr [ GRA_AL_WIDTH ] := 2                                       // Задать толщину линии
   graSetAttrLine( oPS, aAttr )                                      // Установить атрибуты графической линии

   GraLine( oPS, {X0       , Y0       }, {X0+W_Wind, Y0       } )    // Нарисовать ось X
   GraLine( oPS, {X0       , Y0       }, {X0       , Y0+H_Wind} )    // Нарисовать ось Y
   GraLine( oPS, {X0       , Y0+H_Wind}, {X0+W_Wind, Y0+H_Wind} )    // Нарисовать границу рамки изображения вверху параллельно оси X 
   GraLine( oPS, {X0+W_Wind, Y0       }, {X0+W_Wind, Y0+H_Wind} )    // Нарисовать границу рамки изображения справа параллельно оси Y

   ****** Легенда ***************************************************

   Offset   = -60
   Interval =  15

   ***** Нарисовать рамку легенды

   aAttr := Array( GRA_AL_COUNT )                                    // Массив для атрибутов линии  
   aAttr [ GRA_AL_TYPE  ] := GRA_LINETYPE_DEFAULT
   aAttr [ GRA_AL_COLOR ] := 1                                       // Задать цвет    линии
   aAttr [ GRA_AL_WIDTH ] := 1                                       // Задать толщину линии
   graSetAttrLine( oPS, aAttr )                                      // Установить атрибуты графической линии

   X1 := X0
   Y1 := Y0 + Offset
   X2 := X0 + W_Wind
   Y2 := Y0 + Offset - N_Graf * Interval - 15

   GraLine( oPS, {X1, Y1 }, {X2, Y1 } )    // Нарисовать ось X
   GraLine( oPS, {X1, Y1 }, {X1, Y2 } )    // Нарисовать ось Y
   GraLine( oPS, {X1, Y2 }, {X2, Y2 } )    // Нарисовать границу рамки изображения вверху параллельно оси X 
   GraLine( oPS, {X2, Y1 }, {X2, Y2 } )    // Нарисовать границу рамки изображения справа параллельно оси Y

   FOR g=1 TO N_Graf
       aAttr[ GRA_AL_COLOR ] := g          // Задать цвет    линии
       aAttr[ GRA_AL_WIDTH ] := g          // Задать толщину линии
       graSetAttrLine( oPS, aAttr )        // Установить атрибуты
       FOR x=2 TO N_Znach
           X1 := X0 + 20
           Y1 := Y0 + Offset - g * Interval
           X2 := X0 + 300
           Y2 := Y0 + Offset - g * Interval
           GraLine( oPS, { X1, Y1 }, { X2, Y2 } )
       NEXT
       GraStringAt( oPS, { X2+20, Y2-4 }, aGraName[g] )
   NEXT

   ****** Надписи координатных осей *********************************

   oFont := XbpFont():new():create("13.ArialBold")
   GraSetFont( oPS ,oFont )

   AxName = "Name of the axis X"
   GraStringAt( oPS, { X0+W_Wind/2-8*LEN(AxName)/2, Y0-45 }, AxName )             // Надпись оси Х

   AyName = "Name of the axis Y"
   aMatrix := GraInitMatrix()
   GraRotate( oPS, aMatrix, 90, { X0-53, Y0+H_Wind/2-8*LEN(AyName)/2 }, GRA_TRANSFORM_ADD )
   oPS:setGraTransform( aMatrix, GRA_TRANSFORM_REPLACE )
   GraStringAt( oPS, { X0-53, Y0+H_Wind/2-8*LEN(AyName)/2 }, AyName )             // Надпись оси Y

RETURN NIL
[/size]

User avatar
Eugene Lutsenko
Posts: 1649
Joined: Sat Feb 04, 2012 2:23 am
Location: Russia, Southern federal district, city of Krasnodar
Contact:

Re: How to draw a line and write the text in the coordinates

#8 Post by Eugene Lutsenko »

Program to display the standard color display:

Code: Select all

*************************************
PROCEDURE AppSys
// Рабочий стол остается окном приложения
RETURN
*************************************
PROCEDURE Main()
   
   LOCAL GetList := {}, oStatic
   LOCAL oPS, oDevice

   DC_IconDefault(1000)

   SET COLLATION TO SYSTEM   // Руссификация

PUBLIC aColor := {}                                  // Цвета

AADD(aColor, BD_BLUEMIST)         // GraMakeRGBColor({195,238,255})  // BLUE       001
AADD(aColor, BD_PALETURQUOISE)    // GraMakeRGBColor({175,238,238})  // BLUE       002
AADD(aColor, BD_PALEBLUE)         // GraMakeRGBColor({140,223,255})  // BLUE       003
AADD(aColor, BD_FADEDBLUE)        // GraMakeRGBColor({127,222,255})  // BLUE       004
AADD(aColor, BD_LIGHTBLUESKY)     // GraMakeRGBColor({135,206,235})  // BLUE       005
AADD(aColor, BD_ISLANDBLUE)       // GraMakeRGBColor({053,179,255})  // BLUE       006
AADD(aColor, BD_DODGERBLUE)       // GraMakeRGBColor({030,144,255})  // BLUE       007
AADD(aColor, BD_PASTELBLUE)       // GraMakeRGBColor({002,131,254})  // BLUE       008
AADD(aColor, BD_AZURE)            // GraMakeRGBColor({000,127,255})  // BLUE       009
AADD(aColor, BD_ROYALBLUE)        // GraMakeRGBColor({065,105,225})  // BLUE       010
AADD(aColor, BD_XBP_BLUE)         // 2                               // BLUE       011
AADD(aColor, BD_RICHBLUE)         // GraMakeRGBColor({000,000,255})  // BLUE       012
AADD(aColor, BD_TLCDEEPBLUE)      // GraMakeRGBColor({000,030,144})  // BLUE       013
AADD(aColor, BD_NAVYBLUE)         // GraMakeRGBColor({000,000,128})  // BLUE       014
AADD(aColor, BD_DARKBLUE)         // GraMakeRGBColor({000,000,087})  // BLUE       015
AADD(aColor, BD_MIDNIGHTBLUE)     // GraMakeRGBColor({025,025,112})  // BLUE       016
AADD(aColor, BD_NIGHT)            // GraMakeRGBColor({036,026,068})  // OTHER      017
AADD(aColor, BD_SKYBLUE)          // GraMakeRGBColor({209,241,255})  // BLUE       018
AADD(aColor, BD_ICEBLUE)          // GraMakeRGBColor({209,253,255})  // BLUE       019
AADD(aColor, BD_TLCLIGHTBLUE)     // GraMakeRGBColor({198,255,255})  // BLUE       020
AADD(aColor, BD_WISPBLUE)         // GraMakeRGBColor({221,226,255})  // BLUE       021
AADD(aColor, BD_BLUEHINT)         // GraMakeRGBColor({208,216,255})  // BLUE       022
AADD(aColor, BD_LIGHTSTEELBLUE)   // GraMakeRGBColor({202,225,255})  // BLUE       023
AADD(aColor, BD_ROCKGREY)         // GraMakeRGBColor({185,211,238})  // GREY       024
AADD(aColor, BD_CLEARBLUE)        // GraMakeRGBColor({156,210,255})  // BLUE       025
AADD(aColor, BD_BLUESTEEL)        // GraMakeRGBColor({117,186,229})  // BLUE       026
AADD(aColor, BD_CORNFLOWERBLUE)   // GraMakeRGBColor({100,149,237})  // BLUE       127
AADD(aColor, BD_TLCDARKBLUE)      // GraMakeRGBColor({075,116,171})  // BLUE       028
AADD(aColor, BD_TURQUOISE)        // GraMakeRGBColor({064,244,208})  // BLUE       029
AADD(aColor, BD_TLCBLUE)          // GraMakeRGBColor({075,268,200})  // BLUE       030
AADD(aColor, BD_TEAL)             // GraMakeRGBColor({014,255,212})  // TEAL       031
AADD(aColor, BD_AQUAMARINE)       // GraMakeRGBColor({000,255,232})  // BLUE       032
AADD(aColor, BD_XBP_CYAN)         // 6                               // CYAN       033
AADD(aColor, BD_LIGHTBLUE)        // GraMakeRGBColor({014,240,255})  // BLUE       034
AADD(aColor, BD_ICEGREEN)         // GraMakeRGBColor({222,255,189})  // GREEN      035
AADD(aColor, BD_GREENFROSTING)    // GraMakeRGBColor({217,255,179})  // GREEN      036
AADD(aColor, BD_GREENHINT)        // GraMakeRGBColor({204,255,191})  // GREEN      137
AADD(aColor, BD_PALETEAL)         // GraMakeRGBColor({188,255,211})  // TEAL       038
AADD(aColor, BD_LIGHTTEAL)        // GraMakeRGBColor({165,255,210})  // TEAL       039
AADD(aColor, BD_SEAFOAM)          // GraMakeRGBColor({135,255,169})  // OTHER      040
AADD(aColor, BD_PALEGREEN)        // GraMakeRGBColor({118,255,171})  // GREEN      041
AADD(aColor, BD_LEDGER)           // GraMakeRGBColor({152,255,153})  // GREEN      042
AADD(aColor, BD_COLDGREEN)        // GraMakeRGBColor({175,255,127})  // GREEN      043
AADD(aColor, BD_WISPGREEN)        // GraMakeRGBColor({175,255,118})  // GREEN      044
AADD(aColor, BD_ISLANDGREEN)      // GraMakeRGBColor({135,255,101})  // GREEN      045
AADD(aColor, BD_PASTELGREEN)      // GraMakeRGBColor({135,255,000})  // GREEN      046
AADD(aColor, BD_LAWNGREEN)        // GraMakeRGBColor({124,252,000})  // GREEN      147
AADD(aColor, BD_RICHGREEN)        // GraMakeRGBColor({151,246,096})  // GREEN      048
AADD(aColor, BD_XBP_GREEN)        // 5                               // GREEN      049
AADD(aColor, BD_LIGHTGREEN)       // GraMakeRGBColor({054,255,134})  // GREEN      050
AADD(aColor, BD_FADEDTEAL)        // GraMakeRGBColor({103,214,171})  // TEAL       051
AADD(aColor, BD_BLUEGREY)         // GraMakeRGBColor({135,183,169})  // BLUE       052
AADD(aColor, BD_LIGHTSEAGREEN)    // GraMakeRGBColor({032,178,170})  // GREEN      053
AADD(aColor, BD_XBP_DARKCYAN)     // 13                              // CYAN       054
AADD(aColor, BD_CLEARGREEN)       // GraMakeRGBColor({171,212,159})  // GREEN      055
AADD(aColor, BD_EARTHGREEN)       // GraMakeRGBColor({153,173,092})  // GREEN      056
AADD(aColor, BD_MUDGREEN)         // GraMakeRGBColor({153,173,000})  // GREEN      157
AADD(aColor, BD_LEAFYGREEN)       // GraMakeRGBColor({129,153,040})  // GREEN      058
AADD(aColor, BD_MONEYLIGHTGREY)   // GraMakeRGBColor({146,163,127})  // GREEN      059
AADD(aColor, BD_MONEYLIGHTGREEN)  // GraMakeRGBColor({126,152,117})  // GREEN      060
AADD(aColor, BD_ASPARAGUS)        // GraMakeRGBColor({123,160,091})  // OTHER      061
AADD(aColor, BD_DANKGREEN)        // GraMakeRGBColor({077,123,084})  // GREEN      062
AADD(aColor, BD_MONEYGREENGREY)   // GraMakeRGBColor({054,084,056})  // GREEN      063
AADD(aColor, BD_MONEYGREEN)       // GraMakeRGBColor({024,050,021})  // GREEN      064
AADD(aColor, BD_CHARTREUSE)       // GraMakeRGBColor({113,198,113})  // TEAL       065
AADD(aColor, BD_EMERALDGREEN)     // GraMakeRGBColor({081,200,120})  // GREEN      066
AADD(aColor, BD_DEEPGREEN)        // GraMakeRGBColor({054,194,114})  // GREEN      167
AADD(aColor, BD_FORESTGREEN)      // GraMakeRGBColor({034,139,034})  // GREEN      068
AADD(aColor, BD_SEAGREEN)         // GraMakeRGBColor({046,139,087})  // GREEN      069
AADD(aColor, BD_DARKGREEN)        // GraMakeRGBColor({000,100,000})  // GREEN      070
AADD(aColor, BD_BISQUE)           // GraMakeRGBColor({255,228,196})  // OTHER      071
AADD(aColor, BD_ANTIQUEWHITE)     // GraMakeRGBColor({250,235,215})  // OTHER      072
AADD(aColor, BD_BONE)             // GraMakeRGBColor({249,246,210})  // OTHER      073
AADD(aColor, BD_PEACH)            // GraMakeRGBColor({255,230,188})  // OTHER      074
AADD(aColor, BD_PALEGOLDENROD)    // GraMakeRGBColor({238,232,170})  // OTHER      075
AADD(aColor, BD_LIGHTGOLDENROD)   // GraMakeRGBColor({238,221,130})  // OTHER      076
AADD(aColor, BD_BANANA)           // GraMakeRGBColor({227,207,087})  // OTHER      177
AADD(aColor, BD_BURLYWOOD)        // GraMakeRGBColor({222,184,135})  // OTHER      078
AADD(aColor, BD_PERU)             // GraMakeRGBColor({205,133,063})  // OTHER      079
AADD(aColor, BD_COPPER)           // GraMakeRGBColor({184,115,051})  // OTHER      080
AADD(aColor, BD_BROWN)            // GraMakeRGBColor({150,075,000})  // OTHER      081
AADD(aColor, BD_MILKCHOCOLATE)    // GraMakeRGBColor({112,046,000})  // OTHER      082
AADD(aColor, BD_AUBURN)           // GraMakeRGBColor({113,047,044})  // OTHER      083
AADD(aColor, BD_CHOCOLATE)        // GraMakeRGBColor({068,000,000})  // OTHER      084
AADD(aColor, BD_DARKWHEAT)        // GraMakeRGBColor({205,186,150})  // OTHER      085
AADD(aColor, BD_DARKERWHEAT)      // GraMakeRGBColor({194,182,133})  // OTHER      086
AADD(aColor, BD_LAZYGREEN)        // GraMakeRGBColor({204,210,158})  // GREEN      187
AADD(aColor, BD_ECRU)             // GraMakeRGBColor({178,188,121})  // OTHER      088
AADD(aColor, BD_FATIGUES)         // GraMakeRGBColor({153,173,109})  // OTHER      089
AADD(aColor, BD_BRASS)            // GraMakeRGBColor({181,166,066})  // OTHER      090
AADD(aColor, BD_GOLDENROD)        // GraMakeRGBColor({218,165,032})  // OTHER      091
AADD(aColor, BD_DARKGOLDENROD)    // GraMakeRGBColor({184,134,011})  // OTHER      092
AADD(aColor, BD_LIGHTCORAL)       // GraMakeRGBColor({240,128,128})  // OTHER      093
AADD(aColor, BD_LIGHTSALMON)      // GraMakeRGBColor({255,160,122})  // OTHER      094
AADD(aColor, BD_KHAKI)            // GraMakeRGBColor({189,183,107})  // OTHER      095
AADD(aColor, BD_DARKKHAKI)        // GraMakeRGBColor({197,185,115})  // OTHER      096
AADD(aColor, BD_CLOUD)            // GraMakeRGBColor({245,245,240})  // OTHER      197
AADD(aColor, BD_IVORY)            // GraMakeRGBColor({252,246,229})  // OTHER      098
AADD(aColor, BD_LINEN)            // GraMakeRGBColor({253,240,230})  // OTHER      099
AADD(aColor, BD_LEMONCREME)       // GraMakeRGBColor({255,250,205})  // OTHER      100
AADD(aColor, BD_CREME)            // GraMakeRGBColor({249,246,189})  // TAN        101
AADD(aColor, BD_EGGSHELL)         // GraMakeRGBColor({252,230,201})  // OTHER      102
AADD(aColor, BD_CORNSILK)         // GraMakeRGBColor({238,232,205})  // OTHER      103
AADD(aColor, BD_SAND)             // GraMakeRGBColor({232,228,216})  // OTHER      104
AADD(aColor, BD_KEYLIME)          // GraMakeRGBColor({175,246,084})  // OTHER      105
AADD(aColor, BD_LIME)             // GraMakeRGBColor({153,235,000})  // OTHER      106
AADD(aColor, BD_RICHLIME)         // GraMakeRGBColor({087,255,000})  // OTHER      107
AADD(aColor, BD_MAGENTA)          // GraMakeRGBColor({205,000,205})  // OTHER      108
AADD(aColor, BD_EGGPLANT)         // GraMakeRGBColor({153,000,102})  // OTHER      109
AADD(aColor, BD_MAROON)           // GraMakeRGBColor({139,028,098})  // OTHER      110
AADD(aColor, BD_MANGO)            // GraMakeRGBColor({255,091,039})  // OTHER      111
AADD(aColor, BD_SANDYBROWN)       // GraMakeRGBColor({244,164,096})  // OTHER      112
AADD(aColor, BD_SUNSET)           // GraMakeRGBColor({245,160,014})  // OTHER      113
AADD(aColor, BD_MANGOCREME)       // GraMakeRGBColor({255,129,063})  // OTHER      114
AADD(aColor, BD_SALMON)           // GraMakeRGBColor({250,128,114})  // OTHER      115
AADD(aColor, BD_MISTYROSE)        // GraMakeRGBColor({255,228,225})  // OTHER      116
AADD(aColor, BD_MOSS)             // GraMakeRGBColor({200,201,001})  // OTHER      117
AADD(aColor, BD_OFFWHITE)         // GraMakeRGBColor({255,255,235})  // OTHER      118
AADD(aColor, BD_PINKSAND)         // GraMakeRGBColor({255,204,220})  // OTHER      119
AADD(aColor, BD_PINKROSE)         // GraMakeRGBColor({255,184,255})  // OTHER      120
AADD(aColor, BD_ORCHID)           // GraMakeRGBColor({218,112,214})  // OTHER      121
AADD(aColor, BD_FUSHIA)           // GraMakeRGBColor({193,084,193})  // OTHER      122
AADD(aColor, BD_INDIGO)           // GraMakeRGBColor({075,000,130})  // OTHER      123
AADD(aColor, BD_PINEBARK)         // GraMakeRGBColor({167,158,125})  // OTHER      124
AADD(aColor, BD_SANDSTONE)        // GraMakeRGBColor({204,204,153})  // OTHER      125
AADD(aColor, BD_SANDYCORAL)       // GraMakeRGBColor({214,213,189})  // OTHER      126
AADD(aColor, BD_JOURNALGREEN)     // GraMakeRGBColor({220,232,210})  // GREEN      127
AADD(aColor, BD_SEASHELL)         // GraMakeRGBColor({255,245,238})  // OTHER      128
AADD(aColor, BD_SNOW)             // GraMakeRGBColor({255,250,255})  // OTHER      129
AADD(aColor, BD_WHEAT)            // GraMakeRGBColor({245,222,179})  // OTHER      130
AADD(aColor, BD_PALEDESSERT)      // GraMakeRGBColor({223,211,183})  // TAN        131
AADD(aColor, BD_LIGHTDESSERT)     // GraMakeRGBColor({211,202,170})  // TAN        132
AADD(aColor, BD_DESSERT)          // GraMakeRGBColor({211,202,183})  // TAN        133
AADD(aColor, BD_FADEDDESSERT)     // GraMakeRGBColor({211,202,193})  // TAN        134
AADD(aColor, BD_XBP_PALEGRAY)     // 15                              // GREY       135
AADD(aColor, BD_SILVER)           // GraMakeRGBColor({192,192,192})  // OTHER      136
AADD(aColor, BD_BRIGHTGREY)       // GraMakeRGBColor({197,193,170})  // GREY       137
AADD(aColor, BD_GREY)             // GraMakeRGBColor({188,188,176})  // GREY       138
AADD(aColor, BD_LIGHTGREY)        // GraMakeRGBColor({230,231,232})  // GREY       139
AADD(aColor, BD_ICEGREY)          // GraMakeRGBColor({236,242,234})  // GREY       140
AADD(aColor, BD_MICROSOFTGREY)    // GraMakeRGBColor({224,223,227})  // GREY       141
AADD(aColor, BD_DEFAULTGREY)      // GraMakeRGBColor({212,208,200})  // GREY       142
AADD(aColor, BD_WASHGREY)         // GraMakeRGBColor({210,210,210})  // GREY       143
AADD(aColor, BD_SLATEGREY)        // GraMakeRGBColor({158,182,205})  // GREY       144
AADD(aColor, BD_SILVERBLUE)       // GraMakeRGBColor({131,156,165})  // OTHER      145
AADD(aColor, BD_GREYGREEN)        // GraMakeRGBColor({153,173,174})  // GREY       146
AADD(aColor, BD_DARKGREY)         // GraMakeRGBColor({090,091,080})  // GREY       147
AADD(aColor, BD_DULLGREY)         // GraMakeRGBColor({087,091,090})  // GREY       148
AADD(aColor, BD_FRAMEGREY)        // GraMakeRGBColor({148,148,148})  // GREY       149
AADD(aColor, BD_LINEGREY)         // GraMakeRGBColor({128,128,128})  // GREY       150
AADD(aColor, BD_CREMESICLE)       // GraMakeRGBColor({239,246,121})  // TAN        151
AADD(aColor, BD_FADEDGOLD)        // GraMakeRGBColor({255,227,109})  // GOLD       152
AADD(aColor, BD_LIGHTGOLD)        // GraMakeRGBColor({255,227,000})  // GOLD       153
AADD(aColor, BD_GOLD)             // GraMakeRGBColor({255,217,000})  // GOLD       154
AADD(aColor, BD_TLCGOLD)          // GraMakeRGBColor({255,197,000})  // GOLD       155
AADD(aColor, BD_ORANGE)           // GraMakeRGBColor({255,160,000})  // ORANGE     156
AADD(aColor, BD_ORANGEPEEL)       // GraMakeRGBColor({255,126,003})  // ORANGE     157
AADD(aColor, BD_BURNTORANGE)      // GraMakeRGBColor({204,085,000})  // ORANGE     158
AADD(aColor, BD_LIGHTORANGE)      // GraMakeRGBColor({255,180,000})  // ORANGE     159
AADD(aColor, BD_PALEORANGE)       // GraMakeRGBColor({255,156,000})  // ORANGE     160
AADD(aColor, BD_TAN)              // GraMakeRGBColor({244,226,171})  // TAN        161
AADD(aColor, BD_LIGHTTAN)         // GraMakeRGBColor({244,225,199})  // TAN        162
AADD(aColor, BD_PALEYELLOW)       // GraMakeRGBColor({255,255,210})  // YELLOW     163
AADD(aColor, BD_FLATYELLOW)       // GraMakeRGBColor({255,255,193})  // YELLOW     164
AADD(aColor, BD_FADEDYELLOW)      // GraMakeRGBColor({255,255,185})  // YELLOW     165
AADD(aColor, BD_HINTYELLOW)       // GraMakeRGBColor({255,255,153})  // YELLOW     166
AADD(aColor, BD_LIGHTYELLOW)      // GraMakeRGBColor({255,255,130})  // YELLOW     167
AADD(aColor, BD_YELLOW)           // GraMakeRGBColor({255,229,053})  // YELLOW     168
AADD(aColor, BD_SUNNYYELLOW)      // GraMakeRGBColor({255,255,000})  // YELLOW     169
AADD(aColor, BD_DEEPYELLOW)       // GraMakeRGBColor({216,189,000})  // YELLOW     170
AADD(aColor, BD_DARKYELLOW)       // GraMakeRGBColor({196,179,000})  // YELLOW     171
AADD(aColor, BD_OLIVEDRAB)        // GraMakeRGBColor({142,142,056})  // GREEN      172
AADD(aColor, BD_XBP_BROWN)        // 14                              // TAN        173
AADD(aColor, BD_PINKCOTTON)       // GraMakeRGBColor({255,215,255})  // PINK       174
AADD(aColor, BD_PUFFINK)          // GraMakeRGBColor({241,185,213})  // PINK       175
AADD(aColor, BD_PALEPURPLE)       // GraMakeRGBColor({231,160,226})  // PURPLE     176
AADD(aColor, BD_LIGHTPURPLE)      // GraMakeRGBColor({210,152,206})  // PURPLE     177
AADD(aColor, BD_FUCHSIA)          // GraMakeRGBColor({229,070,183})  // PINK       178
AADD(aColor, BD_HOTPINK)          // GraMakeRGBColor({229,070,129})  // PINK       179
AADD(aColor, BD_XBP_PINK)         // 4                               // PINK       180
AADD(aColor, BD_XBP_DARKPINK)     // 11                              // PINK       181
AADD(aColor, BD_REDHINT)          // GraMakeRGBColor({255,213,231})  // RED        182
AADD(aColor, BD_LAZYPURPLE)       // GraMakeRGBColor({248,201,245})  // PURPLE     183
AADD(aColor, BD_WISPRED)          // GraMakeRGBColor({239,195,228})  // RED        184
AADD(aColor, BD_FADEDPURPLE)      // GraMakeRGBColor({241,187,241})  // PURPLE     185
AADD(aColor, BD_COTTONCANDYRED)   // GraMakeRGBColor({255,147,156})  // RED        186
AADD(aColor, BD_PALERED)          // GraMakeRGBColor({255,147,156})  // RED        187
AADD(aColor, BD_DEEPRED)          // GraMakeRGBColor({229,070,097})  // RED        188
AADD(aColor, BD_RED)              // 3                               // RED        189
AADD(aColor, BD_CANDYRED)         // GraMakeRGBColor({255,000,000})  // RED        190
AADD(aColor, BD_LIGHTRED)         // GraMakeRGBColor({255,050,039})  // RED        191
AADD(aColor, BD_DARKRED)          // GraMakeRGBColor({168,000,000})  // RED        192
AADD(aColor, BD_CRIMSON)          // GraMakeRGBColor({220,020,060})  // RED        193
AADD(aColor, BD_INDIANRED)        // GraMakeRGBColor({176,023,031})  // RED        194
AADD(aColor, BD_LAVENDER)         // GraMakeRGBColor({230,230,250})  // OTHER      195
AADD(aColor, BD_PURPLEHINT)       // GraMakeRGBColor({207,211,255})  // PURPLE     196
AADD(aColor, BD_COOLPURPLE)       // GraMakeRGBColor({209,198,255})  // PURPLE     197
AADD(aColor, BD_PURPLE)           // GraMakeRGBColor({188,151,255})  // PURPLE     198
AADD(aColor, BD_GRAPE)            // GraMakeRGBColor({135,116,169})  // OTHER      199
AADD(aColor, BD_SLATEBLUE)        // GraMakeRGBColor({113,113,198})  // BLUE       200
AADD(aColor, BD_FLATPURPLE)       // GraMakeRGBColor({135,097,169})  // PURPLE     201
AADD(aColor, BD_AMETHYST)         // GraMakeRGBColor({153,102,204})  // OTHER      202
AADD(aColor, BD_SIENNA)           // GraMakeRGBColor({160,082,452})  // OTHER      203
AADD(aColor, BD_BLUEVIOLET)       // GraMakeRGBColor({138,043,226})  // BLUE       204
AADD(aColor, BD_BRIGHTPURPLE)     // GraMakeRGBColor({112,046,253})  // PURPLE     205
AADD(aColor, BD_DEEPPURPLE)       // GraMakeRGBColor({117,007,229})  // PURPLE     206
AADD(aColor, BD_BEET)             // GraMakeRGBColor({142,056,142})  // PURPLE     207
AADD(aColor, BD_TINTEDPURPLE)     // GraMakeRGBColor({112,045,107})  // PURPLE     208
AADD(aColor, BD_RICHPURPLE)       // GraMakeRGBColor({168,045,119})  // PURPLE     209
AADD(aColor, BD_OUTLOOKBUTT)      // GraMakeRGBColor({236,233,216})  // OTHER      210
AADD(aColor, BD_OUTLOOKBGD)       // GraMakeRGBColor({227,239,255})  // OTHER      211
AADD(aColor, BD_OUTLOOKRIBDARK)   // GraMakeRGBColor({166,188,217})  // OTHER      212
AADD(aColor, BD_OUTLOOKRIBLIGHT)  // GraMakeRGBColor({191,219,255})  // OTHER      213
AADD(aColor, BD_OUTLOOKMARGIN)    // GraMakeRGBColor({101,147,207})  // OTHER      214
AADD(aColor, BD_SMSBGD)           // GraMakeRGBColor({197,231,183})  // OTHER      215
AADD(aColor, BD_SMSRIBDARK)       // GraMakeRGBColor({103,195,071})  // OTHER      216
AADD(aColor, BD_SMSRIBLIGHT)      // GraMakeRGBColor({174,224,159})  // OTHER      217
AADD(aColor, BD_SMSRIBMARGIN)     // GraMakeRGBColor({062,147,104})  // OTHER      218
AADD(aColor, BD_TRUE)             // -4                              // AAA        219
AADD(aColor, BD_WHITE)            // 0                               // AAA        220
AADD(aColor, BD_BACKGROUND)       // -2                              // AAA        221
AADD(aColor, BD_BLACK)            // 1                               // AAA        222
AADD(aColor, BD_NEUTRAL)          // -1                              // AAA        223
AADD(aColor, BD_FALSE)            // -5                              // AAA        224

   PRIVATE aAttr                             // Массив атрибутов отображаемых линий
   PRIVATE nEvent, mp1, mp2, oXbp            // Переменные анализа событий

   N_Graf  = 224                             // Кол-во графиков

   @0, 0 DCSAY "COLOR DISPLAY" FONT ("22.HelveticalBold") SIZE 0

   @ 2,1 DCSTATIC TYPE XBPSTATIC_TYPE_RECESSEDBOX SIZE 103,35 ;       // Размер окна для отображения графика
         OBJECT oStatic;
         EVAL {|| _PresSpace(oStatic, N_Graf ) }

   DCREAD GUI ;
      TITLE "Типовое решение по отображению семейства графиков";     // Надпись на окне графика
      FIT ;
      BUTTONS DCGUI_BUTTON_EXIT

RETURN
*************************************************
STATIC FUNCTION _PresSpace( oStatic, N_Graf )

   LOCAL oPS, oDevice

   PUBLIC X_MaxW := 1280, Y_MaxW := 640               // Размер графического окна в пикселях

   oPS := XbpPresSpace():new()         // Create a PS
   oDevice := oStatic:winDevice()      // Get the device context
   oPS:create( oDevice )               // Link device context to PS
   oPS:SetViewPort( { 0, 0, X_MaxW, Y_MaxW } )
   oStatic:paint := {|mp1,mp2,obj| mp1 := LC_MultiLine( oPS, N_Graf ) }

RETURN NIL

*******************************************************
STATIC FUNCTION LC_MultiLine(oPS, N_Graf )

   PRIVATE X0 := 0, Y0 := 0            // Начало координат по осям X и Y

   g=0

   FOR x=1 TO 8
       FOR y=1 TO 28

          ++g

          X1 := X0 + (x-1) * 50
          Y1 := Y0 + (y-1) * 27
          X2 := X1 + 50
          Y2 := Y1 + 27

          GraSetColor( oPS, aColor[g]  , aColor[g]   );GraBox( oPS, { X1, Y1 }, { X2, Y2 }, GRA_FILL ) 
          GraSetColor( oPS, aColor[222], aColor[222] );GraStringAt( oPS, { X1+2, Y1+2 }, ALLTRIM(STR(g)) )

       NEXT
   NEXT

RETURN NIL
[/size]

Image

User avatar
Eugene Lutsenko
Posts: 1649
Joined: Sat Feb 04, 2012 2:23 am
Location: Russia, Southern federal district, city of Krasnodar
Contact:

Re: How to draw a line and write the text in the coordinates

#9 Post by Eugene Lutsenko »

How do I convert the last program to draw a range of RGB?

User avatar
Auge_Ohr
Posts: 1428
Joined: Wed Feb 24, 2010 3:44 pm

Re: How to draw a line and write the text in the coordinates

#10 Post by Auge_Ohr »

Eugene Lutsenko wrote:How do I convert the last program to draw a range of RGB?
did you want to give User choise of Color ?

try to use Xbase++ (undocumented) Class XbpColorDialog(). look into Alaska Newsgroup

public.xbase++.gui
XbpColorDialog()
28. September 2010
greetings by OHR
Jimmy

Post Reply