Le concept de 'ScreenGadget'

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Le concept de 'ScreenGadget'

Message par Ollivier »

Bonjour, je fais suite à une remarque de Patrick88

Il y évoque le concept de 'ScreenGadget'.

Je pense qu'il est possible de faire quelquechose, mais, à la condition de comprendre ce que c'est. Et ça commence par des mots. Alors, qu'est-ce que l'expression 'ScreenGadget' vous inspire, en quelques mots?
Brayane
Messages : 54
Inscription : jeu. 27/août/2015 14:08

Re: Le concept de 'ScreenGadget'

Message par Brayane »

Moi ScreenGadget me fais penser à un écran comme un Sreen quoi sauf que la tu peu en mètre ou tu veux, 1, 10, 100...
C'est un Gadget écran quoi en gros, l'utilité ?

Aucune idée !
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Le concept de 'ScreenGadget'

Message par Ollivier »

Avant d'imaginer quelque chose l'on veut, autant voir grand quand on le veut, et, notamment, sous toute contrainte inopinée de l'OS, et cela sur n'importe quel OS.

Deux procédures pour se simplifier grandement la vie avec le plein écran:

Code : Tout sélectionner

 ;______________________________________________________


; Plein ecran : Gerer le changement de tache

;______________________________________________________
Declare OnFullScreen(ScreenTitle.S,
                     ScreenFlipMode.I = #PB_Screen_WaitSynchronization)
;______________________________________________________
Declare FullScreenResume(ScreenTitle.S,
                         ScreenFlipMode.I = #PB_Screen_WaitSynchronization, 
                         *StandBy = 0,
                         DelayDuration.I = 16)
;______________________________________________________

;______________________________________________________
; TEST

InitSprite()
OnFullScreen("test") ; <<<< ICI
InitKeyboard()




Repeat
	ClearScreen(0)
	Delay(16)
	FlipBuffers()
	If IsScreenActive() = 0
		FullScreenResume("TEST") ; <<<< ICI
	EndIf
	ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape) 

End
;______________________________________________________



;______________________________________________________
Procedure OnFullScreen(ScreenTitle.S,
                       ScreenFlipMode.I = #PB_Screen_WaitSynchronization)
	
	ExamineDesktops()
	OpenScreen(DesktopWidth(0),
	           DesktopHeight(0),
	           DesktopDepth(0),
	           ScreenTitle,
	           ScreenFlipMode,
	           DesktopFrequency(0) )
	
EndProcedure
;______________________________________________________
Procedure FullScreenResume(ScreenTitle.S,
                           ScreenFlipMode.I = #PB_Screen_WaitSynchronization, 
                           *StandBy = 0,
                           DelayDuration.I = 16)
	
	Protected BackgroundWindow.I
	
	CloseScreen()
	BackgroundWindow = OpenWindow(#PB_Any, 
	                              0, 
	                              0, 
	                              0, 
	                              0, 
	                              ScreenTitle, 
	                              #PB_Window_BorderLess | 
	                              #PB_Window_NoActivate)
	Repeat
		Delay(DelayDuration)
		If *StandBy
			CallFunctionFast(*StandBy)
		EndIf
	Until WindowEvent() = #PB_Event_ActivateWindow
	
	CloseWindow(BackgroundWindow)
	OnFullScreen(ScreenTitle, ScreenFlipMode)
	
EndProcedure
;______________________________________________________
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Le concept de 'ScreenGadget'

Message par Kwai chang caine »

Moi j'ai un ecran noir en 5.23 et 5.31 X86 :|
J'appellerais ça un "BlackGadget" si je peux me permettre d'émmetre un nom qui lui colle bien :oops: :lol:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: Le concept de 'ScreenGadget'

Message par blendman »

Je ne sais pas si un screengadget est possible, même si ce serait une chouette idée.
ça permettrait d'avoir des eventtype() comme le canvasgadget(), sans passer par initmouse() ou initkeyboard() ?
Et on pourrait afficher des sprites avec (comme le screen), ce serait ça l'idée ?
Avatar de l’utilisateur
microdevweb
Messages : 1798
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Le concept de 'ScreenGadget'

Message par microdevweb »

Vous pouvez gérer un screen comme un gadget, comme suit.
Windows only (pas testé sur d'autre os)

Code : Tout sélectionner

CanvasGadget(#Canvas,X,Y,W,H,#PB_Canvas_Keyboard)
OpenWindowedScreen(GadgetID(#Canvas),0,0,W,H)
Tous les événements du canvas peuvent être traités, par contre les événements mouse ne sont plus actif, mais ils sont facilement remplacé par GetGadgetAttribute(#Canvas,#PB_Canvas_MouseX) etc...
Dernière modification par microdevweb le mer. 02/sept./2015 9:49, modifié 1 fois.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
microdevweb
Messages : 1798
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Le concept de 'ScreenGadget'

Message par microdevweb »

@Kwai chang caine,

Tu peux changer la couleur comme tu le désire

Code : Tout sélectionner

clearscreeen(Rgb(50,60,80))
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
TazNormand
Messages : 1294
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: Le concept de 'ScreenGadget'

Message par TazNormand »

Salut

Ce qui serait pratique, ce serait d'avoir plusieurs "WindowedScreen" côte à côte, je verrai bien ça pour le "screenGadget".
Image
Image
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Le concept de 'ScreenGadget'

Message par Ollivier »

Ce que je cherche à savoir, en tout 1er lieu, c'est si ce code plante. Et sous quel OS?

Ne pas hésiter à éprouver les changements de tâche, les ouvertures du gestionnaire de tâche, les démarrages automatiques qui vous ouvrent une fenêtre, etc...

Sous Windows XP, Vista, 2000, 7, 8, 8.1 et 10.
Sous Linux et MacOSX aussi, ce serait bien de connaître la stabilité de ces procédures.

Tant que vous arrivez toujours à atteindre cet écran noir (ça représente votre jeu!) de manière conventionnelle et conviviale, c'est déjà une belle marche d'escalier à ne pas zaper...

Code copié ici:
Tip n' Tick - Forum EN
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Re: Le concept de 'ScreenGadget'

Message par Patrick88 »

microdevweb a écrit :Vous pouvez gérer un screen comme un gadget, comme suit.
Windows only (pas testé sur d'autre os)

Code : Tout sélectionner

CanvasGadget(#Canvas,X,Y,W,H,#PB_Canvas_Keyboard)
OpenWindowedScreen(GadgetID(#Canvas),0,0,W,H)
Tous les événements du canvas peuvent être traités, par contre les événements mouse ne sont plus actif, mais ils sont facilement remplacé par GetGadgetAttribute(#Canvas,#PB_Canvas_MouseX) etc...
peut on également utiliser cette combine pour Ogre ?

Pat
Avatar de l’utilisateur
microdevweb
Messages : 1798
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Le concept de 'ScreenGadget'

Message par microdevweb »

@Patrick88,

Je ne peux pas le confirmer, mais à mon sens le moteur 3d doit également fonctionné.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Le concept de 'ScreenGadget'

Message par Ollivier »

TazNormand a écrit :Salut

Ce qui serait pratique, ce serait d'avoir plusieurs "WindowedScreen" côte à côte, je verrai bien ça pour le "screenGadget".
Par rapport au titre du sujet effectivement, c'est légitime de demander ça, mais, d'une part, c'est actuellement impossible: la solution est avec OpenGLGadget().

Là, on a un plein écran, c'est fait pour décoiffer avant tout. Donc, il faut être prudent sur ses souhaits pour ne pas entraver la 'mise en pli' du joueur!

C'est un mode à part! J'attends des retours de bugs, au cas où, et après, je poste une version 'windowed' en rappelant pourquoi l'on n'a besoin du mode graphique fenêtré aussi.

On se rend compte que le ScreenGadget existe déjà, mais que le matériel impose ses conditions. J'insiste vraiment sur ce fait: si vous souhaitez plusieurs rectangles graphiques avec accélération matérielle fonctionnant sur tous les OS, seul OpenGL assure ça actuellement.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Le concept de 'ScreenGadget'

Message par falsam »

Ollivier a écrit :Là, on a un plein écran, c'est fait pour décoiffer avant tout.
J'ai tellement eu peur de se noir intense qu'effectivement ça décoiffe. Black Panthers, Septembre noir. Nous reste-t-il un peu d'espoir ?

Je reviens sur ton code
Ollivier a écrit :Deux procédures pour se simplifier grandement la vie avec le plein écran:
(/me enfile ses gants blanc.) Sans nullement chercher à vous offenser mon cher Ollivier, en quoi ces deux procédures simplifient grandement la vie avec le plein écran ?

J'ai failli oublier de répondre à la question
Ollivier a écrit :Ce que je cherche à savoir, en tout 1er lieu, c'est si ce code plante. Et sous quel OS?
Windows 10 Pro - PB5.31 (x86) - pas de plantage.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Le concept de 'ScreenGadget'

Message par Ollivier »

Falsam a écrit :(/me enfile ses gants blanc.)
Même si je n'en décèle ni les tenants, ni les aboutissants, je suis surpris par une telle minutie...

Merci pour ta précision concernant W10.

Autant y aller direct, as-tu plus simple? (nouvelle fonctionnalité présente sur une version ultérieure à la 5.22)?
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Le concept de 'ScreenGadget'

Message par falsam »

Je n'ai pas plus simple. Je cherche à comprendre ou tu veux en venir avec ton code.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre