Volontaire pour tester GetWindowBackgroundColor()

Codes specifiques à MacOS X
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Volontaire pour tester GetWindowBackgroundColor()

Message 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 <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<
Dernière modification par Guimauve le jeu. 23/févr./2012 0:25, modifié 4 fois.
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: Volontaire pour tester GetWindowBackgroundColor()

Message 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
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Re: Volontaire pour tester GetWindowBackgroundColor()

Message 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
Good07
Messages : 308
Inscription : ven. 23/avr./2004 18:08
Localisation : Hérault 34190 Laroque

Re: Volontaire pour tester GetWindowBackgroundColor()

Message 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é.
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Re: Volontaire pour tester GetWindowBackgroundColor()

Message 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
Good07
Messages : 308
Inscription : ven. 23/avr./2004 18:08
Localisation : Hérault 34190 Laroque

Re: Volontaire pour tester GetWindowBackgroundColor()

Message 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é.
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Re: Volontaire pour tester GetWindowBackgroundColor()

Message 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
Répondre