Page 1 sur 1

Volontaire pour tester GetWindowBackgroundColor()

Publié : mar. 21/févr./2012 14:52
par Guimauve
Bonjour aux utilisateurs de Mac,

Puisque je n'ai pas de machine Mac, j'ai besoin d'un volontaire pour tester le code ci-dessous pour voir si la commande fonctionne et surtout si elle retourne bien la valeur de la couleur du fond de la fenêtre.

Merci à l'avance.
Guimauve

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Project name : GetWindowBackgroundColor()
; File Name : GetWindowBackgroundColor.pb
; File version: 0.0.4
; Programmation : In Progress
; Programmed by : Guimauve
; Date : 19-02-2012
; Last Update : 22-02-2012
; PureBasic code : 4.60
; Plateform : Windows, Linux, MacOS X
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

CompilerSelect #PB_Compiler_OS
    
  CompilerCase #PB_OS_Linux
    
    ImportC ""
      gtk_style_lookup_color(*style, ColorName.p-utf8, *Color)
    EndImport
    
CompilerEndSelect

Procedure GetWindowBackgroundColor()
  
  CompilerSelect #PB_Compiler_OS
      
    CompilerCase #PB_OS_Windows 
      BackgroundColor.l = GetSysColor_(#COLOR_3DFACE)
      
    CompilerCase #PB_OS_Linux
      
      BtnGadget = ButtonGadget(#PB_Any,0,0,0,0,"") ; Il faut créer un bouton bidon pour récupérer la couleur
      
      If BtnGadget <> #Null
        
        ColorNameAscii.s = Space(Len("bg_color"))
        
        PokeS(@ColorNameAscii, "bg_color", -1, #PB_UTF8)
        
        gtk_widget_realize_(GadgetID(BtnGadget))
        
        *style.GtkStyle = gtk_rc_get_style_(GadgetID(BtnGadget))
        
        If gtk_style_lookup_color(*style, ColorNameAscii, @BGColor.GDKColor)
          Red = (BGColor\red / 255) & $FF 
          Green = (BGColor\green / 255) & $FF 
          Blue = (BGColor\blue / 255) & $FF 
        Else
          Red = 238
          Green = 237
          Blue = 236
        EndIf
        
        FreeGadget(BtnGadget) ; On se débarasse du bouton bidon
        
      EndIf
      
      BackgroundColor.l = RGB(Red, Green, Blue)
      
    CompilerCase #PB_OS_MacOS
      
        BackgroundColor.l = $EBEBEB
      
  CompilerEndSelect
  
  ProcedureReturn BackgroundColor
EndProcedure

; <<<<<<<<<<<<<<<<<<<<<<<
; <<<<< END OF FILE <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<

Re: Volontaire pour tester GetWindowBackgroundColor()

Publié : mar. 21/févr./2012 21:10
par GallyHC
Je na'ai pas trop de temps ce soir mais je ferais le test sur les 3 OS au plus vite.

Cordialement,
GallyHC

Re: Volontaire pour tester GetWindowBackgroundColor()

Publié : mer. 22/févr./2012 3:51
par Guimauve
Bonjour à tous,

Je confirme que le code fonctionne sous Windows et sous Linux sans problème. Il reste seulement le test sous Mac OSX que je ne peux pas faire.

A+
Guimauve

Re: Volontaire pour tester GetWindowBackgroundColor()

Publié : mer. 22/févr./2012 15:50
par Good07
Bonjour Guimauve,

Bon, je ne suis pas un spécialiste du Mac, et j'ai donc lancé ta procédure sous windows avec parallels et sous Mac pour voir si les résultat étaient identiques.

Je fais sous les deus OS : Debug GetWindowBackgroundColor()

sur Mac j'obtient 10724259
et sur Windows 14215660

J'espère que cela peut t'aider.

A+

André.

Re: Volontaire pour tester GetWindowBackgroundColor()

Publié : mer. 22/févr./2012 19:12
par Guimauve
Good07 a écrit :Bonjour Guimauve,

Bon, je ne suis pas un spécialiste du Mac, et j'ai donc lancé ta procédure sous windows avec parallels et sous Mac pour voir si les résultat étaient identiques.

Je fais sous les deus OS : Debug GetWindowBackgroundColor()

sur Mac j'obtient 10724259
et sur Windows 14215660

J'espère que cela peut t'aider.

A+

André.
Pas vraiment, ce qu'il faut faire serait d'ouvrir une fenêtre vide, prendre une capture du tout le bureau avec la touche "PrintScreen" (ou juste la fenêtre active avec "Alt" + "PrintScreen"), copier l'image dans un logiciel d'édition d'image, prélever la couleur quelque par dans le milieu de la fenêtre et la comparer avec celle retournée par la commande Debug GetWindowBackgroundColor() sous Mac.

Là ça pourrait m'aider.

A+
Guimauve

Re: Volontaire pour tester GetWindowBackgroundColor()

Publié : mer. 22/févr./2012 21:46
par Good07
Bonsoir Guimauve,

Bon en ouvrant une fenêtre vide sur tout l'écran (1920, 1200) et en faisant ce que tu me dis, j'obtiens avec un logiciel d'édition d'image:
R=237
V=237
B=237
dans PureBasic si je fais:

Code : Tout sélectionner

red=237
green=237
blue=237
BackgroundColor.l = RGB(Red, Green, Blue)
Debug BackgroundColor
J'obtiens : 15592941
si à la fin de ton programme je rajoute:

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 1920, 1200, "",#PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) = 0 
  End
EndIf
Repeat
  Event = WaitWindowEvent()
Debug GetWindowBackgroundColor()
Until Event = #PB_Event_CloseWindow
j'obtiens toujours le même chiffre: 10724259

J'espère que cette fois-ci cela répond à ta question ...

A+
André.

Re: Volontaire pour tester GetWindowBackgroundColor()

Publié : jeu. 23/févr./2012 0:10
par Guimauve
Bonjour Good7,

Effectivement, sans voir ce qui se passe c'est difficile de comprendre. Cependant, quelqu'un sur le forum anglais m'a fait remarquer que sous MacOS c'est toujours la valeur de $EBEBEB ou RGB(235, 235, 235) pour toute les fenêtres standards créées par PureBasic. Donc on cesse de se casser le pompon pour rien.

Merci pour tes efforts et désoler de t'avoir fait travailler pour rien.

A+
Guimauve