Display system colors #COLOR_????

Share your advanced PureBasic knowledge/code with the community.
sverson
Enthusiast
Enthusiast
Posts: 284
Joined: Sun Jul 04, 2004 12:15 pm
Location: Germany

Display system colors #COLOR_????

Post by sverson »

Maybe someone else needs to know, what's behind the #COLOR_???? constants...

Code: Select all

;/ Display system colors
;/ sverson 02/2005

Structure SYSCOLORS
  ColorConst.s
  ColorNumber.l
EndStructure
NewList ColorList.SYSCOLORS()

Procedure InitColorList()
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DDKSHADOW" : ColorList()\ColorNumber = 21
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DFACE = #COLOR_BTNFACE" : ColorList()\ColorNumber = 15
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DHILIGHT = #COLOR_BTNHIGHLIGHT" : ColorList()\ColorNumber = 20
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DHIGHLIGHT = #COLOR_BTNHIGHLIGHT" : ColorList()\ColorNumber = 20
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DLIGHT" : ColorList()\ColorNumber = 22
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DSHADOW = #COLOR_BTNSHADOW" : ColorList()\ColorNumber = 16
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_ACTIVEBORDER" : ColorList()\ColorNumber = 10
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_ACTIVECAPTION" : ColorList()\ColorNumber = 2
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_APPWORKSPACE" : ColorList()\ColorNumber = 12
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BACKGROUND" : ColorList()\ColorNumber = 1
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNFACE" : ColorList()\ColorNumber = 15
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNHIGHLIGHT" : ColorList()\ColorNumber = 20
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNHILIGHT = #COLOR_BTNHIGHLIGHT" : ColorList()\ColorNumber = 20
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNSHADOW" : ColorList()\ColorNumber = 16
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNTEXT" : ColorList()\ColorNumber = 18
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_CAPTIONTEXT" : ColorList()\ColorNumber = 9
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_DESKTOP = #COLOR_BACKGROUND" : ColorList()\ColorNumber = 1
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_GRADIENTACTIVECAPTION" : ColorList()\ColorNumber = 27
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_GRADIENTINACTIVECAPTION" : ColorList()\ColorNumber = 28 
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_GRAYTEXT" : ColorList()\ColorNumber = 17
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_HIGHLIGHT" : ColorList()\ColorNumber = 13
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_HIGHLIGHTTEXT" : ColorList()\ColorNumber = 14
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_HOTLIGHT" : ColorList()\ColorNumber = 26
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INACTIVEBORDER" : ColorList()\ColorNumber = 11
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INACTIVECAPTION" : ColorList()\ColorNumber = 3
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INACTIVECAPTIONTEXT" : ColorList()\ColorNumber = 19
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INFOBK" : ColorList()\ColorNumber = 24
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INFOTEXT" : ColorList()\ColorNumber = 23
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_MENU" : ColorList()\ColorNumber = 4
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_MENUTEXT" : ColorList()\ColorNumber = 7
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_SCROLLBAR" : ColorList()\ColorNumber = 0
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_WINDOW" : ColorList()\ColorNumber = 5
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_WINDOWFRAME" : ColorList()\ColorNumber = 6
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_WINDOWTEXT" : ColorList()\ColorNumber = 8
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLORMATCHTOTARGET_EMBEDED" : ColorList()\ColorNumber = 1
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLORONCOLOR" : ColorList()\ColorNumber = 3
EndProcedure

InitColorList()
If OpenWindow(0,10,10,640,CountList(ColorList())*15+1,#PB_Window_ScreenCentered|#PB_Window_SystemMenu,"Display system colors")
  background = GetSysColor_(#COLOR_WINDOW)
  If StartDrawing(WindowOutput())
    DrawingFont(LoadFont(0, "Arial", 8))
    FirstElement(ColorList())
    For a = 0 To CountList(ColorList())-1
      SysColor = GetSysColor_(ColorList()\ColorNumber)
      Box(0,15*a,640,16,RGB(0,0,0))
      Box(1,15*a+1,638,14,RGB(255,255,255))
      Box(300,15*a+2,200,12,SysColor)
      FrontColor(0,0,0)
      BackColor(255,255,255)
      Locate(12,15*a+1)
      DrawText(RSet(Str(ColorList()\ColorNumber),3,"0")+"  "+ColorList()\ColorConst)
      Locate(510,15*a+1) 
      DrawText(RSet(Str(SysColor),8,"0")+"  "+RSet(Str(Red(SysColor)),3,"0")+"/"+RSet(Str(Green(SysColor)),3,"0")+"/"+RSet(Str(Blue(SysColor)),3,"0"))
      NextElement(ColorList())
    Next
    StopDrawing()
  EndIf
  Repeat
      EventID.l = WaitWindowEvent()
  Until EventID = #PB_EventCloseWindow
  CloseWindow(0)
EndIf
End
:wink: sverson
User avatar
Flype
Addict
Addict
Posts: 1542
Joined: Tue Jul 22, 2003 5:02 pm
Location: In a long distant galaxy

Post by Flype »

thanx for this one :wink:
No programming language is perfect. There is not even a single best language.
There are only languages well suited or perhaps poorly suited for particular purposes. Herbert Mayer
PB
PureBasic Expert
PureBasic Expert
Posts: 7581
Joined: Fri Apr 25, 2003 5:24 pm

Post by PB »

Agreed -- thanks for this! :)
I compile using 5.31 (x86) on Win 7 Ultimate (64-bit).
"PureBasic won't be object oriented, period" - Fred.
gnozal
PureBasic Expert
PureBasic Expert
Posts: 4229
Joined: Sat Apr 26, 2003 8:27 am
Location: Strasbourg / France
Contact:

Post by gnozal »

Yes, good idea.
I have added a callback to refresh the window.

Code: Select all

Structure SYSCOLORS
  ColorConst.s
  ColorNumber.l
EndStructure
NewList ColorList.SYSCOLORS()

Procedure InitColorList()
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DDKSHADOW" : ColorList()\ColorNumber = 21
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DFACE = #COLOR_BTNFACE" : ColorList()\ColorNumber = 15
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DHILIGHT = #COLOR_BTNHIGHLIGHT" : ColorList()\ColorNumber = 20
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DHIGHLIGHT = #COLOR_BTNHIGHLIGHT" : ColorList()\ColorNumber = 20
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DLIGHT" : ColorList()\ColorNumber = 22
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DSHADOW = #COLOR_BTNSHADOW" : ColorList()\ColorNumber = 16
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_ACTIVEBORDER" : ColorList()\ColorNumber = 10
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_ACTIVECAPTION" : ColorList()\ColorNumber = 2
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_APPWORKSPACE" : ColorList()\ColorNumber = 12
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BACKGROUND" : ColorList()\ColorNumber = 1
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNFACE" : ColorList()\ColorNumber = 15
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNHIGHLIGHT" : ColorList()\ColorNumber = 20
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNHILIGHT = #COLOR_BTNHIGHLIGHT" : ColorList()\ColorNumber = 20
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNSHADOW" : ColorList()\ColorNumber = 16
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNTEXT" : ColorList()\ColorNumber = 18
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_CAPTIONTEXT" : ColorList()\ColorNumber = 9
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_DESKTOP = #COLOR_BACKGROUND" : ColorList()\ColorNumber = 1
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_GRADIENTACTIVECAPTION" : ColorList()\ColorNumber = 27
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_GRADIENTINACTIVECAPTION" : ColorList()\ColorNumber = 28
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_GRAYTEXT" : ColorList()\ColorNumber = 17
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_HIGHLIGHT" : ColorList()\ColorNumber = 13
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_HIGHLIGHTTEXT" : ColorList()\ColorNumber = 14
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_HOTLIGHT" : ColorList()\ColorNumber = 26
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INACTIVEBORDER" : ColorList()\ColorNumber = 11
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INACTIVECAPTION" : ColorList()\ColorNumber = 3
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INACTIVECAPTIONTEXT" : ColorList()\ColorNumber = 19
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INFOBK" : ColorList()\ColorNumber = 24
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INFOTEXT" : ColorList()\ColorNumber = 23
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_MENU" : ColorList()\ColorNumber = 4
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_MENUTEXT" : ColorList()\ColorNumber = 7
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_SCROLLBAR" : ColorList()\ColorNumber = 0
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_WINDOW" : ColorList()\ColorNumber = 5
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_WINDOWFRAME" : ColorList()\ColorNumber = 6
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_WINDOWTEXT" : ColorList()\ColorNumber = 8
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLORMATCHTOTARGET_EMBEDED" : ColorList()\ColorNumber = 1
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLORONCOLOR" : ColorList()\ColorNumber = 3
EndProcedure

Procedure DrawColors()
  If StartDrawing(WindowOutput())
    DrawingFont(LoadFont(0, "Arial", 8))
    FirstElement(ColorList())
    For a = 0 To CountList(ColorList())-1
      SysColor = GetSysColor_(ColorList()\ColorNumber)
      Box(0,15*a,640,16,RGB(0,0,0))
      Box(1,15*a+1,638,14,RGB(255,255,255))
      Box(300,15*a+2,200,12,SysColor)
      FrontColor(0,0,0)
      BackColor(255,255,255)
      Locate(12,15*a+1)
      DrawText(RSet(Str(ColorList()\ColorNumber),3,"0")+"  "+ColorList()\ColorConst)
      Locate(510,15*a+1)
      DrawText(RSet(Str(SysColor),8,"0")+"  "+RSet(Str(Red(SysColor)),3,"0")+"/"+RSet(Str(Green(SysColor)),3,"0")+"/"+RSet(Str(Blue(SysColor)),3,"0"))
      NextElement(ColorList())
    Next
    StopDrawing()
  EndIf
EndProcedure

Procedure Callback(WindowId, Message, wParam, lParam)
  ReturnValue = #PB_ProcessPureBasicEvents
  If Message = #WM_ERASEBKGND
    DrawColors()
    ReturnValue = 0
  EndIf
  ProcedureReturn ReturnValue
EndProcedure

InitColorList()
If OpenWindow(0,10,10,640,CountList(ColorList())*15+1,#PB_Window_ScreenCentered|#PB_Window_SystemMenu,"Display system colors")
  DrawColors()
  SetWindowCallback(@Callback())
  Repeat
    EventID.l = WaitWindowEvent()
  Until EventID = #PB_EventCloseWindow
  CloseWindow(0)
EndIf
End
For free libraries and tools, visit my web site (also home of jaPBe V3 and PureFORM).
sverson
Enthusiast
Enthusiast
Posts: 284
Joined: Sun Jul 04, 2004 12:15 pm
Location: Germany

Post by sverson »

gnozal wrote:Yes, good idea.
I have added a callback to refresh the window.
Thanks gonzal! :wink: - I was to lazy to do this :cry:

Here is another one (in german) using a fast asm BrightnessRGB(RGB_Color.l, Delta.w)

Code: Select all

;/ RGB Farbhelligkeit korrigieren  PB 3.92 / ASM
;/ Eine schnelle ASM-Routine zur "om the fly" Korrektur der RGB Farbhelligkeit
;/ BrightnessRGB(RGB_Color.l, Delta.w) Delta -255...255 - andere Werte sind sinnlos
;/ 02/2005 sverson

Enumeration
  #DemoWindow
  #DemoImage
  #DemoImageGeaget
  #ColorTrackBar
  #BrightnesTrackBar
EndEnumeration

Structure SYSCOLORS
  ColorConst.s
  ColorNumber.l
EndStructure
NewList ColorList.SYSCOLORS()

Procedure InitColorList() ;/ Systemfarben
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DDKSHADOW" : ColorList()\ColorNumber = GetSysColor_(#COLOR_3DDKSHADOW)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DFACE = #COLOR_BTNFACE" : ColorList()\ColorNumber = GetSysColor_(#COLOR_3DFACE)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DHILIGHT = #COLOR_BTNHIGHLIGHT" : ColorList()\ColorNumber = GetSysColor_(#COLOR_3DHILIGHT)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DHIGHLIGHT = #COLOR_BTNHIGHLIGHT" : ColorList()\ColorNumber = GetSysColor_(#COLOR_3DHIGHLIGHT)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DLIGHT" : ColorList()\ColorNumber = GetSysColor_(#COLOR_3DLIGHT)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DSHADOW = #COLOR_BTNSHADOW" : ColorList()\ColorNumber = GetSysColor_(#COLOR_3DSHADOW)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_ACTIVEBORDER" : ColorList()\ColorNumber = GetSysColor_(#COLOR_ACTIVEBORDER)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_ACTIVECAPTION" : ColorList()\ColorNumber = GetSysColor_(#COLOR_ACTIVECAPTION)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_APPWORKSPACE" : ColorList()\ColorNumber = GetSysColor_(#COLOR_APPWORKSPACE)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BACKGROUND" : ColorList()\ColorNumber = GetSysColor_(#COLOR_BACKGROUND)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNFACE" : ColorList()\ColorNumber = GetSysColor_(#COLOR_BTNFACE)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNHIGHLIGHT" : ColorList()\ColorNumber = GetSysColor_(#COLOR_BTNHIGHLIGHT)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNHILIGHT = #COLOR_BTNHIGHLIGHT" : ColorList()\ColorNumber = GetSysColor_(#COLOR_BTNHILIGHT)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNSHADOW" : ColorList()\ColorNumber = GetSysColor_(#COLOR_BTNSHADOW)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNTEXT" : ColorList()\ColorNumber = GetSysColor_(#COLOR_BTNTEXT)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_CAPTIONTEXT" : ColorList()\ColorNumber = GetSysColor_(#COLOR_CAPTIONTEXT)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_DESKTOP = #COLOR_BACKGROUND" : ColorList()\ColorNumber = GetSysColor_(#COLOR_DESKTOP)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_GRAYTEXT" : ColorList()\ColorNumber = GetSysColor_(#COLOR_GRAYTEXT)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_HIGHLIGHT" : ColorList()\ColorNumber = GetSysColor_(#COLOR_HIGHLIGHT)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_HIGHLIGHTTEXT" : ColorList()\ColorNumber = GetSysColor_(#COLOR_HIGHLIGHTTEXT)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INACTIVEBORDER" : ColorList()\ColorNumber = GetSysColor_(#COLOR_INACTIVEBORDER)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INACTIVECAPTION" : ColorList()\ColorNumber = GetSysColor_(#COLOR_INACTIVECAPTION)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INACTIVECAPTIONTEXT" : ColorList()\ColorNumber = GetSysColor_(#COLOR_INACTIVECAPTIONTEXT)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INFOBK" : ColorList()\ColorNumber = GetSysColor_(#COLOR_INFOBK)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INFOTEXT" : ColorList()\ColorNumber = GetSysColor_(#COLOR_INFOTEXT)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_MENU" : ColorList()\ColorNumber = GetSysColor_(#COLOR_MENU)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_MENUTEXT" : ColorList()\ColorNumber = GetSysColor_(#COLOR_MENUTEXT)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_SCROLLBAR" : ColorList()\ColorNumber = GetSysColor_(#COLOR_SCROLLBAR)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_WINDOW" : ColorList()\ColorNumber = GetSysColor_(#COLOR_WINDOW)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_WINDOWFRAME" : ColorList()\ColorNumber = GetSysColor_(#COLOR_WINDOWFRAME)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_WINDOWTEXT" : ColorList()\ColorNumber = GetSysColor_(#COLOR_WINDOWTEXT)
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLORONCOLOR" : ColorList()\ColorNumber = GetSysColor_(#COLORONCOLOR)
  ;/ + 3 Demofarben
  AddElement(ColorList()) : ColorList()\ColorConst = "Demo Blue" : ColorList()\ColorNumber = RGB(0,0,128)
  AddElement(ColorList()) : ColorList()\ColorConst = "Demo Green" : ColorList()\ColorNumber = RGB(0,128,0)
  AddElement(ColorList()) : ColorList()\ColorConst = "Demo Red" : ColorList()\ColorNumber = RGB(128,0,0)
EndProcedure

Procedure BrightnessRGB(RGB_Color.l, Delta.w);- RGB farbhelligkeit korrigieren
  Protected ColorBack.l  
  !XOR Eax, Eax         ;/ EAX-Register löschen
  !XOR Ebx, Ebx         ;/ EBX-Register löschen
  !XOR Ecx, Ecx         ;/ ECX-Register löschen
  !MOV BX, Word [Esp+4] ;/ Delta-Wert in BX einlesen
  !MOV Edx, dWord [Esp] ;/ RGB-Farbwert in EDX einlesen
  !MOV AL, DL           ;/ R-Wert nach AL
  !CALL .adddelta       ;/--> DELTA ZU AL (R) ADDIEREN ++
  !MOV CL, AL           ;/ R-Wert in CL zwischenspeichern
  !MOV AL, DH           ;/ G-Wert nach AL
  !CALL .adddelta       ;/--> DELTA ZU AL (G) ADDIEREN ++
  !MOV ch, AL           ;/ G-Wert in CH zwischenspeichern
  !BSWAP Edx            ;/ B-Wert via BYTESWAP in DH zugänglich machen
  !MOV AL, DH           ;/ G-Wert nach AL
  !CALL .adddelta       ;/--> DELTA ZU AL (B) ADDIEREN ++
  !MOV DH, AL           ;/ G-Wert nach DH zurückschreiben
  !BSWAP Edx            ;/ G-Wert via BYTESWAP wieder an richtige Position bringen
  !MOV dx, cx           ;/ R und G Wert aus Zwischenspeicher CX wieder in DX schreiben
  !JMP .ready           ;/==> FARBKORREKTUR BEENDET ++
  !.adddelta:           ;/ ++ DELTA ZU AL ADDIEREN ++
  !ADD AX, BX           ;/ Delta aus BX zu AX addieren
  !BT AX, 15            ;/ auf Negativwert testen
  !JC .negativ          ;/==> NEUER WERT KLEINER NULL ++
  !CMP AX, $FF          ;/ auf Maximalwert testen
  !JBE .inrange         ;/==> NEUER ZWISCHEN 0 UND 255 ++
  !.bigger:             ;/ ++ NEUER WERT GRÖSSER 255 ++
  !MOV AX, $00FF        ;/ AX auf 255 begrenzen
  !JMP .inrange         ;/==> WERT IN DEN GRENZEN ++
  !.negativ:            ;/ ++ NEUER WERT KLEINER NULL ++
  !XOR Eax, Eax         ;/ AX auf 0 begrenzen
  !.inrange:            ;/ ++ WERT IN DEN GRENZEN ++
  !RET                  ;/ Rücksprung aus Makro
  !.ready:              ;/ ++ FARBKORREKTUR BEENDET ++
  !MOV [Esp+6], Edx     ;/ Korrigierten RGB-Wert über ColorBack ausgeben
  ProcedureReturn ColorBack
EndProcedure

Procedure UpdateImage(ITitle$,IColor.l,iDelta.w);/ Image aktualisieren
  UseImage(#DemoImage)
  StartDrawing(ImageOutput())
  newColor = BrightnessRGB(IColor,iDelta)
  Box(0,0,280,200,IColor)
  Box(78,48,124,104,RGB(255,255,255))
  Box(79,49,122,102,RGB(0,0,0))
  Box(80,50,120,100,newColor)
  DrawingMode(1)
  FrontColor(255,255,255)
  Locate(10, 10)
  DrawText(ITitle$)
  Locate(90, 65)
  DrawText("R"+RSet(Str(Red(newColor)),3,"0")+"G"+RSet(Str(Green(newColor)),3,"0")+"b"+RSet(Str(Blue((newColor))),3,"0"))
  Locate(90, 80)
  DrawText("delta: "+Str(iDelta))
  Locate(90, 100)
  FrontColor(0,0,0)
  DrawText("delta: "+Str(iDelta))
  Locate(90, 115)
  DrawText("R"+RSet(Str(Red(newColor)),3,"0")+"G"+RSet(Str(Green(newColor)),3,"0")+"b"+RSet(Str(Blue((newColor))),3,"0"))
  Locate(10, 175)
  DrawText(ITitle$)
  StopDrawing()
EndProcedure

If OpenWindow(#DemoWindow,0,0,320,240,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Helligkeitsregler") And CreateGadgetList(WindowID(#DemoWindow)) 
  If CreateImage(#DemoImage, 280, 200)
    InitColorList()
    LastElement(ColorList())
    UpdateImage(ColorList()\ColorConst,ColorList()\ColorNumber,0)
    ImageGadget(#DemoImageGeaget,5,5,280,200,UseImage(#DemoImage),#PB_Image_Border)
    TrackBarGadget(#BrightnesTrackBar, 5, 215, 280, 20,0,510) 
    SetGadgetState(#BrightnesTrackBar,255)
    TrackBarGadget(#ColorTrackBar, 295, 5, 20, 200,1,CountList(ColorList()),#PB_TrackBar_Vertical) 
    SetGadgetState(#ColorTrackBar,CountList(ColorList()))
    Repeat :
      WinEvent = WaitWindowEvent()
      Select WinEvent
        Case #PB_EventGadget
          SelectElement(ColorList(),GetGadgetState(#ColorTrackBar)-1)
          UpdateImage(ColorList()\ColorConst,ColorList()\ColorNumber,GetGadgetState(#BrightnesTrackBar)-255)
          SetGadgetState(#DemoImageGeaget,UseImage(#DemoImage))
      EndSelect
    Until WinEvent = #PB_Event_CloseWindow 
  EndIf
EndIf 
End
:wink: sverson
offsides
Enthusiast
Enthusiast
Posts: 103
Joined: Sun May 01, 2011 3:09 am
Location: Northern California

Re: Display system colors #COLOR_????

Post by offsides »

I know this topic is over 8 years old but these look interesting.

Why don't any of them run?

Bill
User avatar
Bisonte
Addict
Addict
Posts: 1233
Joined: Tue Oct 09, 2007 2:15 am

Re: Display system colors #COLOR_????

Post by Bisonte »

this topic is over 8 years old
Thats the answer ...

May you should use PB3.3 or 3.9x to run these codes without changes that fits to the actual PB Version.
PureBasic 6.10 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
English is not my native language... (I often use DeepL to translate my texts.)
normeus
Enthusiast
Enthusiast
Posts: 415
Joined: Fri Apr 20, 2012 8:09 pm
Contact:

Re: Display system colors #COLOR_????

Post by normeus »

older compiler was used, here is a copy with a few comments on the changes:

Code: Select all

Structure SYSCOLORS
  ColorConst.s
  ColorNumber.l
EndStructure
Global NewList ColorList.SYSCOLORS()


Procedure InitColorList()
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DDKSHADOW" : ColorList()\ColorNumber = 21
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DFACE = #COLOR_BTNFACE" : ColorList()\ColorNumber = 15
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DHILIGHT = #COLOR_BTNHIGHLIGHT" : ColorList()\ColorNumber = 20
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DHIGHLIGHT = #COLOR_BTNHIGHLIGHT" : ColorList()\ColorNumber = 20
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DLIGHT" : ColorList()\ColorNumber = 22
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DSHADOW = #COLOR_BTNSHADOW" : ColorList()\ColorNumber = 16
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_ACTIVEBORDER" : ColorList()\ColorNumber = 10
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_ACTIVECAPTION" : ColorList()\ColorNumber = 2
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_APPWORKSPACE" : ColorList()\ColorNumber = 12
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BACKGROUND" : ColorList()\ColorNumber = 1
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNFACE" : ColorList()\ColorNumber = 15
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNHIGHLIGHT" : ColorList()\ColorNumber = 20
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNHILIGHT = #COLOR_BTNHIGHLIGHT" : ColorList()\ColorNumber = 20
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNSHADOW" : ColorList()\ColorNumber = 16
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNTEXT" : ColorList()\ColorNumber = 18
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_CAPTIONTEXT" : ColorList()\ColorNumber = 9
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_DESKTOP = #COLOR_BACKGROUND" : ColorList()\ColorNumber = 1
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_GRADIENTACTIVECAPTION" : ColorList()\ColorNumber = 27
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_GRADIENTINACTIVECAPTION" : ColorList()\ColorNumber = 28
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_GRAYTEXT" : ColorList()\ColorNumber = 17
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_HIGHLIGHT" : ColorList()\ColorNumber = 13
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_HIGHLIGHTTEXT" : ColorList()\ColorNumber = 14
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_HOTLIGHT" : ColorList()\ColorNumber = 26
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INACTIVEBORDER" : ColorList()\ColorNumber = 11
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INACTIVECAPTION" : ColorList()\ColorNumber = 3
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INACTIVECAPTIONTEXT" : ColorList()\ColorNumber = 19
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INFOBK" : ColorList()\ColorNumber = 24
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INFOTEXT" : ColorList()\ColorNumber = 23
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_MENU" : ColorList()\ColorNumber = 4
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_MENUTEXT" : ColorList()\ColorNumber = 7
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_SCROLLBAR" : ColorList()\ColorNumber = 0
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_WINDOW" : ColorList()\ColorNumber = 5
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_WINDOWFRAME" : ColorList()\ColorNumber = 6
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_WINDOWTEXT" : ColorList()\ColorNumber = 8
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLORMATCHTOTARGET_EMBEDED" : ColorList()\ColorNumber = 1
  AddElement(ColorList()) : ColorList()\ColorConst = "#COLORONCOLOR" : ColorList()\ColorNumber = 3
EndProcedure

Procedure DrawColors()
  loadfntid=LoadFont(#PB_Any, "Arial", 8) ; moved this to outside start drawing
  If StartDrawing(WindowOutput(0))
    DrawingFont(loadfntid) ; got the font id out of here
    FirstElement(ColorList())
    For a = 0 To ListSize(ColorList())-1 ; replace countlist
      SysColor = GetSysColor_(ColorList()\ColorNumber)
      Box(0,15*a,640,16,RGB(0,0,0))
      Box(1,15*a+1,638,14,RGB(255,255,255))
      Box(300,15*a+2,200,12,SysColor)
      FrontColor(RGB(0,0,0)) ; add RGB()
      BackColor(RGB(255,255,255)); add RGB()
     ; Locate(12,15*a+1); add this to next line
      DrawText(12,15*a+1,RSet(Str(ColorList()\ColorNumber),3,"0")+"  "+ColorList()\ColorConst)
      ;Locate(510,15*a+1);add this to next line
      DrawText(510,15*a+1,RSet(Str(SysColor),8,"0")+"  "+RSet(Str(Red(SysColor)),3,"0")+"/"+RSet(Str(Green(SysColor)),3,"0")+"/"+RSet(Str(Blue(SysColor)),3,"0"))
      NextElement(ColorList())
    Next
    StopDrawing()
  EndIf
EndProcedure

Procedure Callback(WindowId, Message, wParam, lParam)
  ReturnValue = #PB_ProcessPureBasicEvents
  If Message = #WM_ERASEBKGND
    DrawColors()
    ReturnValue = 0
  EndIf
  ProcedureReturn ReturnValue
EndProcedure

InitColorList()
If OpenWindow(0,10,10,640,ListSize(ColorList())*15+1,"Display system colors",#PB_Window_ScreenCentered|#PB_Window_SystemMenu) ; changed title postion and deleted countilst
  DrawColors()
  SetWindowCallback(@Callback())
  Repeat
    EventID.l = WaitWindowEvent()
  Until EventID = #PB_Event_CloseWindow;#PB_EventCloseWindow
  CloseWindow(0)
EndIf
End
just fixed based on the errors that the compiler was giving me.
User avatar
Thunder93
Addict
Addict
Posts: 1788
Joined: Tue Mar 21, 2006 12:31 am
Location: Canada

Re: Display system colors #COLOR_????

Post by Thunder93 »

I'd replace

LoadFont(#PB_Any, "Arial", 8)

with;

LoadFont(0, "Arial", 8)

or fix up the rows height. :p
ʽʽSuccess is almost totally dependent upon drive and persistence. The extra energy required to make another effort or try another approach is the secret of winning.ʾʾ --Dennis Waitley
offsides
Enthusiast
Enthusiast
Posts: 103
Joined: Sun May 01, 2011 3:09 am
Location: Northern California

Re: Display system colors #COLOR_????

Post by offsides »

Thanks, normeous, Thunder.

The errors thrown by 5.11 were all about "ColorList() [not being] a function, list, map, array, or macro" which made no sense. Didn't occur to me to look further.

Bill
PB 5.72 (32-bit) on Win 10.
User avatar
DeanH
Enthusiast
Enthusiast
Posts: 229
Joined: Wed May 07, 2008 4:57 am
Location: Adelaide, South Australia
Contact:

Re: Display system colors #COLOR_????

Post by DeanH »

I have updated the colour list, adding additional constants as listed in PureBasic's Structure Viewer. The display window is wider and taller. The RGB components of each colour are separated more widely. Font changed to Verdana to improve readability.

Code: Select all

Structure SYSCOLORS
	ColorConst.s
	ColorNumber.l
EndStructure
Global NewList ColorList.SYSCOLORS()

Procedure InitColorList()
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DDKSHADOW" : ColorList()\ColorNumber = 21
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DFACE = #COLOR_BTNFACE" : ColorList()\ColorNumber = 15
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DHILIGHT = #COLOR_BTNHIGHLIGHT" : ColorList()\ColorNumber = 20
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DHIGHLIGHT = #COLOR_BTNHIGHLIGHT" : ColorList()\ColorNumber = 20
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DLIGHT" : ColorList()\ColorNumber = 22
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_3DSHADOW = #COLOR_BTNSHADOW" : ColorList()\ColorNumber = 16
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_ACTIVEBORDER" : ColorList()\ColorNumber = 10
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_ACTIVECAPTION" : ColorList()\ColorNumber = 2
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_ADJ_MAX" : ColorList()\ColorNumber = 100
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_ADJ_MIN" : ColorList()\ColorNumber = -100
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_ALTERNATEBTNFACE" : ColorList()\ColorNumber = 25
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_APPWORKSPACE" : ColorList()\ColorNumber = 12
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BACKGROUND" : ColorList()\ColorNumber = 1
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNFACE" : ColorList()\ColorNumber = 15
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNHIGHLIGHT" : ColorList()\ColorNumber = 20
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNHILIGHT = #COLOR_BTNHIGHLIGHT" : ColorList()\ColorNumber = 20
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNSHADOW" : ColorList()\ColorNumber = 16
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_BTNTEXT" : ColorList()\ColorNumber = 18
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_CAPTIONTEXT" : ColorList()\ColorNumber = 9
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_DESKTOP = #COLOR_BACKGROUND" : ColorList()\ColorNumber = 1
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_GRADIENTACTIVECAPTION" : ColorList()\ColorNumber = 27
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_GRADIENTINACTIVECAPTION" : ColorList()\ColorNumber = 28
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_GRAYTEXT" : ColorList()\ColorNumber = 17
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_HIGHLIGHT" : ColorList()\ColorNumber = 13
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_HIGHLIGHTTEXT" : ColorList()\ColorNumber = 14
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_HOTLIGHT" : ColorList()\ColorNumber = 26
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INACTIVEBORDER" : ColorList()\ColorNumber = 11
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INACTIVECAPTION" : ColorList()\ColorNumber = 3
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INACTIVECAPTIONTEXT" : ColorList()\ColorNumber = 19
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INFOBK" : ColorList()\ColorNumber = 24
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_INFOTEXT" : ColorList()\ColorNumber = 23
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_MENU" : ColorList()\ColorNumber = 4
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_MENUBAR" : ColorList()\ColorNumber = 30
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_MENUHILIGHT" : ColorList()\ColorNumber = 29
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_MENUTEXT" : ColorList()\ColorNumber = 7
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_SCROLLBAR" : ColorList()\ColorNumber = 0
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_WINDOW" : ColorList()\ColorNumber = 5
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_WINDOWFRAME" : ColorList()\ColorNumber = 6
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLOR_WINDOWTEXT" : ColorList()\ColorNumber = 8
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLORMATCHTOTARGET_EMBEDED" : ColorList()\ColorNumber = 1
	AddElement(ColorList()) : ColorList()\ColorConst = "#COLORONCOLOR" : ColorList()\ColorNumber = 3
EndProcedure

Procedure DrawColors()
	fntid=LoadFont(#PB_Any,"Verdana",8) ; moved this to outside start drawing
	If StartDrawing(WindowOutput(0))
		DrawingFont(FontID(fntid)) ; got the font id out of here
		a=0
		w=WindowWidth(0)
		ForEach ColorList()
			SysColor = GetSysColor_(ColorList()\ColorNumber)
			Box(0,15*a,w,16,#Black)
			Box(1,15*a+1,w-2,14,#White)
			Box(360,15*a+2,200,12,SysColor)
			FrontColor(#Black)
			BackColor(#White)
			DrawText(12,15*a+1,RSet(Str(ColorList()\ColorNumber),3,"0")+"  "+ColorList()\ColorConst)
			DrawText(570,15*a+1,RSet(Str(SysColor),10,"0")+"     "+RSet(Str(Red(SysColor)),3,"0")+" / "+RSet(Str(Green(SysColor)),3,"0")+" / "+RSet(Str(Blue(SysColor)),3,"0"))
			a+1
		Next
		StopDrawing()
	EndIf
EndProcedure

Procedure Callback(WindowId, Message, wParam, lParam)
	ReturnValue = #PB_ProcessPureBasicEvents
	If Message = #WM_ERASEBKGND
		DrawColors()
		ReturnValue = 0
	EndIf
	ProcedureReturn ReturnValue
EndProcedure

InitColorList()
If OpenWindow(0,10,10,760,ListSize(ColorList())*15+1,"Display system colors",#PB_Window_ScreenCentered|#PB_Window_SystemMenu) ; changed title postion and deleted countilst
	DrawColors()
	SetWindowCallback(@Callback())
	Repeat
		EventID.l = WaitWindowEvent()
	Until EventID = #PB_Event_CloseWindow;#PB_EventCloseWindow
	CloseWindow(0)
EndIf

End
ebs
Enthusiast
Enthusiast
Posts: 530
Joined: Fri Apr 25, 2003 11:08 pm

Re: Display system colors #COLOR_????

Post by ebs »

@DeanH,

That's very handy- thank you!

Regards,
Eric
Post Reply