PureBasic 3.92 beta (linux)

Ankündigungen PureBasic oder die Community betreffend.
the one and only
Beiträge: 696
Registriert: 26.09.2004 20:17
Kontaktdaten:

Beitrag von the one and only »

Das hab ich nie behauptet, ich habs ehrlich gesagt noch nicht getestet :oops:

Wegen Fedora bin ich glücklich weil PB im Allgemeinen ganz gut drauf läuft.
MARTIN
Beiträge: 454
Registriert: 08.09.2004 14:03
Wohnort: Kiel

Beitrag von MARTIN »

Könntest du dann mal testen ?

Code: Alles auswählen

#WindowWidth  = 400
#WindowHeight = 345

If OpenWindow(0, 100, 120, #WindowWidth, #WindowHeight, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget, "WebGadget")

   If CreateGadgetList(WindowID())
      WebGadget(1,10,10,#WindowWidth-20,#WindowHeight-20,"www.pure-board.de")
     CloseGadgetList()
  EndIf

  Repeat
    EventID.l = WaitWindowEvent()
  Until EventID = #PB_EventCloseWindow

EndIf

End
Amilo 1667|Suse Linux 10.1_64bit/WinXP |PB 4.00/3.94
the one and only
Beiträge: 696
Registriert: 26.09.2004 20:17
Kontaktdaten:

Beitrag von the one and only »

Frühestens morgen.
MARTIN
Beiträge: 454
Registriert: 08.09.2004 14:03
Wohnort: Kiel

Beitrag von MARTIN »

Also ich habe jetzt gtkmm2.4 installiert und gtkmozembedmm-1.4.2 kompiliert. Die Beispiel-Code in C++ funktionien auch einwandfrei.

In PB funktioniert WebGadged weiterhin nicht, es liegt warscheinlich daran das ich das noch nicht gemacht habe:
A link from /usr/lib/libgtkmozembed.so need to be done
Was muss da getan werden, link auf libgtkmozembed.so ? hmm.....
Verstehe irgendwie nicht.
Amilo 1667|Suse Linux 10.1_64bit/WinXP |PB 4.00/3.94
the one and only
Beiträge: 696
Registriert: 26.09.2004 20:17
Kontaktdaten:

Beitrag von the one and only »

Ich auch nicht /:->
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

MARTIN hat geschrieben:Was muss da getan werden, link auf libgtkmozembed.so ? hmm.....
Verstehe irgendwie nicht.
Der Befehl um einen Link zu erstellen ist 'ln'. Könnte man
mit einem Shortcut unter Windows vergleichen, auch wenn
es anders funktioniert. Es ist aber ein Link zu der wirklichen
Datei.

Hilfe zu dem Befehl bekommt man an der Console mit:

Code: Alles auswählen

man ln
oder besser:

Code: Alles auswählen

info coreutils ln
Um den Link zu erzeugen:

Code: Alles auswählen

cd /usr/share/purebasic/purelibraries
ln -s /usr/lib/libgtkmozembed.so
Also in das Verzeichniss wechseln, wo der Link rein soll (ich
denke mal es müßte in /purelibraries - hab aktuelle Version
noch nicht installiert).
Danach mit 'ln' den Link zu der richtigen Datei erstellen. Die
Option '-s' steht hier für Symbolic Link. Um einen Hardlink
zu erzeugen einfach '-s' weglassen.
Ein Hardlink überprüft ob das Ziel auch vorhanden ist, also
sollte man das vielleicht machen:

Code: Alles auswählen

cd /usr/share/purebasic/purelibraries
ln /usr/lib/libgtkmozembed.so
Danach ist der Link in /usr/share/purebasic/purelibraries

Viele Leuten verwenden ja an der Console 'mc' (GNU Midnight Commander),
und da kann man SymLinks direkt über das Menu 'Datei > Symlink'
erstellen.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
MARTIN
Beiträge: 454
Registriert: 08.09.2004 14:03
Wohnort: Kiel

Beitrag von MARTIN »

Hallo Danilo.
Viellen Dank für (wie immer) ausfühliche und sachkundige Antwort.
Das ganze ist mir auch bekannt, nur ich bin nicht darauf gekommen das man einen Link in purelibraries auf libgtkembed.so machen soll.

Leider ist es mir erst jetzt aufgefallen das ich total auf dem holzweg bin.
Ich habe ja libgtkmozembedmm.so beachte "mm", kein wunder das man gtkmm2.4 braute um sie zu kompilieren.
Jetzt frage ich mich wo kann ich libgtkmozembed.so finden ? Überall findet man nur das Wort "libgtkmozembed.so" aber die Library selbst oder Quellen oder irgendwas brauchbares nicht.

>Oder ist libgtkmozembedmm.so doch das richtige ? *total verwirrt*
Amilo 1667|Suse Linux 10.1_64bit/WinXP |PB 4.00/3.94
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

MARTIN hat geschrieben:Jetzt frage ich mich wo kann ich libgtkmozembed.so finden ? Überall findet man nur das Wort "libgtkmozembed.so" aber die Library selbst oder Quellen oder irgendwas brauchbares nicht.
Keine Ahnung, habe das hier nicht installiert. Da mußt Du mal
bei Fantaisie Software nachfragen.



Der Link zu mc vorhin war falsch - ich verwende eine modifizierte
Version: http://mc.linuxinside.com/
Funktioniert hier besser (z.B. Farben) und habe ich mir so
eingerichtet das .pb-Dateien bei Enter kompiliert werden.



Die PureBasic.xml für Kate muß hier (Suse 9.1 Pro) in:
/opt/kde3/share/apps/katepart/syntax/
...bringt hier aber einen Fehler bei Kate 2.2.1:
"/opt/kde3/share/apps/katepart/syntax/PureBasic.xml: Veraltete Syntax.
Kontext 0 besitzt keinen symbolischen Namen"



Der Sprite-Bug ist immernoch nicht behoben - habe nun
PB/Linux 3.92 gerade ausprobiert.

Der Testcode:

Code: Alles auswählen

#Screen_W = 800
#Screen_H = 600

#Sprite1   = 1
#Sprite1_W = 128
#Sprite1_H = 128

Procedure DrawGradient_Quad(w,h,col1,col2,col3,col4)
  ;
  ; Draw gradient colors for 4 corners
  ;
  ; by Danilo, 29.January 2005
  ;
  sRed1.f   = Red(col1)   : r1.f = (Red  (col1) - Red  (col3))/h
  sGreen1.f = Green(col1) : g1.f = (Green(col1) - Green(col3))/h
  sBlue1.f  = Blue(col1)  : b1.f = (Blue (col1) - Blue (col3))/h
  sRed2.f   = Red(col2)   : r2.f = (Red  (col2) - Red  (col4))/h
  sGreen2.f = Green(col2) : g2.f = (Green(col2) - Green(col4))/h
  sBlue2.f  = Blue(col2)  : b2.f = (Blue (col2) - Blue (col4))/h
  For y = 0 To h-1
    col1      = RGB(sRed1-y*r1,sGreen1-y*g1,sBlue1-y*b1)
    col2      = RGB(sRed2-y*r2,sGreen2-y*g2,sBlue2-y*b2)
    sRed3.f   = Red(col1)   : r3.f = (Red  (col1) - Red  (col2))/w
    sGreen3.f = Green(col1) : g3.f = (Green(col1) - Green(col2))/w
    sBlue3.f  = Blue(col1)  : b3.f = (Blue (col1) - Blue (col2))/w
    For x = 0 To w-1
      r.f = sRed3   - x*r3
      g.f = sGreen3 - x*g3
      b.f = sBlue3  - x*b3
      Plot(x,y,RGB(r,g,b))
    Next x
  Next y
EndProcedure

Procedure Min(val1,val2)
  ; return lower value
  If val1 > val2
     ProcedureReturn val2
  EndIf
  ProcedureReturn val1
EndProcedure


If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
   MessageRequester("ERROR","Cant init Game Engine",0):End
EndIf

If OpenScreen(#Screen_W,#Screen_H,32,"TEST") = 0      ; test 32bit
  If OpenScreen(#Screen_W,#Screen_H,24,"TEST") = 0    ; if 32bit failed, test 24bit
    If OpenScreen(#Screen_W,#Screen_H,16,"TEST") = 0  ; if 32/24 failed, try 16bit screen
      MessageRequester("ERROR","Cant open 16/24/32bit Screen",0):End
    EndIf
  EndIf
EndIf

If CreateSprite(#Sprite1,#Sprite1_W,#Sprite1_H)=0
  CloseScreen()
  MessageRequester("ERROR","Cant create sprite !"):End
Else
  If StartDrawing(SpriteOutput(#Sprite1))
    DrawGradient_Quad(#Sprite1_W,#Sprite1_H,$00FFFF,$FFFF00,$0000FF,$FF0000)
    x = Min(#Sprite1_W,#Sprite1_H)
    For r = 0 To x/6
      Circle(#Sprite1_W/2,#Sprite1_H/2,r,0)
    Next r
    StopDrawing()
  EndIf
EndIf

Repeat
     FlipBuffers()
     ExamineKeyboard()
     ClearScreen($00,$00,$00)

     ;ClipSprite(#Sprite1,0,0,#Sprite1_W/2,#Sprite1_H/2)

     DisplayTransparentSprite(#Sprite1,Sprite1_X,Sprite1_Y)

     ; KEYBOARD CHECK
     ;
     If KeyboardPushed(#PB_KEY_RIGHT)
        Sprite1_X + 4
        If Sprite1_X > #Screen_W   : Sprite1_X = -#Sprite1_W : EndIf
     EndIf
     If KeyboardPushed(#PB_KEY_LEFT)
        Sprite1_X - 4
        If Sprite1_X < -#Sprite1_W : Sprite1_X = #Screen_W   : EndIf
     EndIf
     If KeyboardPushed(#PB_KEY_UP)
        Sprite1_Y - 4
        If Sprite1_Y < -#Sprite1_H : Sprite1_Y = #Screen_H   : EndIf
     EndIf
     If KeyboardPushed(#PB_KEY_DOWN)
        Sprite1_Y + 4
        If Sprite1_Y >  #Screen_H  : Sprite1_Y = -#Sprite1_H : EndIf
     EndIf

Until KeyboardPushed(#PB_KEY_ESCAPE)
End
Dieser Code funktioniert wie er soll. Fügt man die Zeile mit
ClipSprite() wieder ein, dann funktioniert es nicht mehr.

Bei der Verwendung von ClipSprite entsteht ein Fehler wenn
das Sprite auf Koordinaten X/Y kleiner 0 dargestellt wird.

Probiert es selbst aus: ClipSprite wieder reinmachen und
Sprite mit den Cursor-Tasten nach oben und nach links
aus dem Screen bewegen.
Es geht nicht. Das Sprite bleibt bei 0 stehen und das Clipping
kommt total durcheinander.



Das man mit den Drawing-Befehlen wie Circle() noch immer
keine geschlossenen Figuren zeichnen kann (da DrawingMode()
auf Linux nicht unterstützt wird) ist... arfff... "schade".



terrain.pb zeigt kein Terrain, nur eine flache Grundfläche:

Code: Alles auswählen

Creating viewport on target 'PureBasic test', rendering from camera '', relative dimensions L:0.00,T:0.00,W:100.00,H:100.00, Z-Order:0
Viewport for camera '' - actual dimensions L:0,T:0,W:640,H:480
An exception has been thrown!

-----------------------------------
Details:
-----------------------------------
Error #: 4
Function: Image::load
Description: Unable to load image file 'SkyDome' - invalid extension..
File: OgreImage.cpp
Line: 146
Stack unwinding: Image::load(..) <- <<beginning of stack>>
Error loading texture SkyDome. Texture layer will be blank.
SDLTexture: Loading clouds.jpg with 0 mipmaps from Image.
Das lustige ist das im PB/Linux-Archiv schon eine Ogre.log
in compilers/ mitgeliefert wird, die einen Crash geloggt hat.
Da sieht man gleich was einen erwartet, noch ehe man die
Beispiele selbst probiert. :D



Den Rest habe ich jetzt nicht ausprobiert, das reicht mir
schon wieder für den Moment.
Die alten Fehler wurden nicht behoben, sondern lieber
versucht neues Zeugs einzubauen. Wie Schade...
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
MARTIN
Beiträge: 454
Registriert: 08.09.2004 14:03
Wohnort: Kiel

Beitrag von MARTIN »

Was den Spritebug angeht, bei mir scheint es (wenn ich richtig verstehe was der ClipSprite()-Frunktion macht) zu funktionieren:

So seht das aus wenn Clipsprite auskomentiert ist : screenshot
Und so mit ClipSprite() : screenshot
Amilo 1667|Suse Linux 10.1_64bit/WinXP |PB 4.00/3.94
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

MARTIN hat geschrieben:Und so mit ClipSprite() : screenshot
Du hast das Sprite mitten im Screen. Der Fehler kommt aber
nur wenn das Sprite links oder oben zum Screen herausgeschoben wird.

Die interne Clipberechnung von Display(Transparent)Sprite
haut einfach bei -X und -Y nicht mehr hin, wenn der User
selbst geklippt hat.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Antworten