OpenWindowedScreen()

Linux specific forum
Anonymous

OpenWindowedScreen()

Post by Anonymous »

Now , with the 4.3 Final , Openwindowed screen work fine.

Now, i wan't to make an app with panel gadget , and i want to put the sdl surface on my PanelItem

Like this :

Code: Select all

  Structure APPLICATION
  	
  	DesktopWidth.i
  	DesktopHeight.i
  	
  	WindowMain.i
  	WindowMainID.i
  	
  	WindowNewGame.i
    WindowNewGameID.i
    
  EndStructure
  

; Parametre de l'application
Global App.APPLICATION
 
 InitSprite()
 ExamineDesktops()
		App\DesktopWidth  = DesktopWidth(0)
		App\DesktopHeight = DesktopHeight(0)

SizeX = App\DesktopWidth - (App\DesktopWidth/4)
SizeY = App\DesktopHeight - (App\DesktopHeight/4)

		App\WindowMain     = OpenWindow(#PB_Any,0,0,SizeX,SizeY,"Game Builder",#PB_Window_SystemMenu)
		App\WindowMainID = WindowID(App\WindowMain)
		
		
    PanelGadget(0, 10,10, SizeX-20,SizeY-20)
			
		AddGadgetItem (0, -1, "Project")
		
			TextGadget(#PB_Any,10,10,130,30," Name of project :") : StringGadget(#PB_Any,140,10,140,30,"")
		
		
		
		AddGadgetItem (0, -1, "Scene manager")
		AddGadgetItem (0, -1, "Object manager")
		
		AddGadgetItem (0, -1, "Scene Editor")
		ScrollAreaGadget(8,10,10,SizeX-60,SizeY-60,1680,1050,#PB_ScrollArea_Single)
		CreateImage(100,1680,1050)	:	ImageGadget(255,0,0,1680,1024,ImageID(100)) ; I WANT TO PUT MY SDL_GTK_NEW HERE !
		CloseGadgetList()
		
		

		
		
		;-LAUNCH
		Repeat
		Event  = WindowEvent()
				Delay(10)
		Until Event = #PB_Event_CloseWindow
		
		

The best would be to have an
ScreenGadget(x,y,sizex,sizey,bbp)
Anonymous

Post by Anonymous »

I try to put an GtkSdl Widget under an container , it's work fine , but ,

How to cast GtkWidget to GtkSdl ?

Code :

ps : Lib GtkSdl must be installed. http://gtksdl.developpez.com/telechargement.php

Code: Select all

Structure GtkSDL
   widget.GtkWidget
  *surface.SDL_Surface
  width.i : height.i :  bpp.i
  flags.w
EndStructure

Structure GtkSDLClass
   parent_class.GtkWidgetClass
EndStructure

; Librairie : http://gtksdl.developpez.com/telechargement.php
ImportC "-lgtksdl"
 		gtk_sdl_get_type_.i() ; Return GtkType
 		gtk_sdl_new.i(width.i , height.i , bpp.i , flags.i ) ; Return GtkWidget *
 		gtk_sdl_size(*sdl.GtkSDL, width.i , height.i )
 		gtk_sdl_display_update(*sdl.GtkSDL)
EndImport

ImportC "-lSDL"
SDL_MapRGB(a.i,r,g,b)
EndImport


Procedure.i CastToGtkSDL(*A)
*B.GtkSDL = AllocateMemory(SizeOf(GtkSDL))
*B=*A
ProcedureReturn *B
EndProcedure




SDL_Init_ (#SDL_INIT_VIDEO)
gtk_init_(0,0) : gdk_init_(0,0)
InitSprite()

OpenWindow(0,0,0,800,600,"GtkSDL",#PB_Window_ScreenCentered)
*Container = ContainerGadget(0,10,10,640,480,#PB_Container_Double)
gtk_widget_show_(*Container)

Global *SdlGadget.GtkWidget = gtk_sdl_new(640,480,24,#SDL_HWSURFACE | #SDL_OPENGL)
Global *GtkSDL.GtkSDL = CastToGtkSDL(*SdlGadget)
gtk_widget_show_(*SdlGadget)
gtk_container_add_(*Container,*SdlGadget)



Procedure DrawSdlGadget()

; Debug *GtkSDL\Surface
; SDL_MapRGB(*GtkSDL\Surface\format, 17, 206, 112);
; 
; SDL_FillRect_(*GtkSDL\Surface, #Null, 255)
; 

 If *GTKSDL<>#Null
 		gtk_sdl_display_update(*GTKSDL)
 EndIf 		
EndProcedure

Repeat
Event =  WindowEvent()
DrawSdlGadget()
Until Event = #PB_Event_CloseWindow

Post Reply