Seite 1 von 2

Was ist der UseJTAImageDecoder() und wie entfernt man den?

Verfasst: 22.06.2020 00:47
von The_Dark_Zim-.-
Hey,
ich habe seit einiger Zeit das Problem, dass bei einem meiner Fenster/Forms folgende Zeile ergänzt wird "UseJTAImageDecoder()". Das Teil gibt es scheinbar aber gar nicht und entsprechend kann ich nicht Compilieren, bis ich das wieder entferne. Hat das mal einer gehabt und weiß wie ich das verhindern kann? Ich nutze den Fensterdesigner von PureBasic.

Ich benutze zur Zeit PureBasic in der Version 5.72 x64 unter Linux. Ich habe gerade nicht mehr im Kopf ob es auch unter Windows auftritt.

Mit freundlichen Grüßen
Zim

Re: Was ist der UseJTAImageDecoder() und wie entfernt man de

Verfasst: 22.06.2020 21:33
von The_Dark_Zim-.-
Hey,

ich habe den Grund ausfindig machen können. Aber ich verstehe nicht warum es so ist. Ich habe bei mir die Grafik "vd_textgadget.png" eingebunden und das verursacht dieses verhalten bei mir. Ich habe es aus dem "SilkTheme.zip" Archiv, welches PureBasic mitbringt. Kann das einer von euch reproduzieren?

Einfach ein neues Fenster mit ImageGadget erstellen und hier diese Grafik einbinden, wenn man jetzt von dem Grafischen in die Code Ansicht wechselt müsste die Zeile "UseJTAImageDecoder()" vorhanden sein.

Mit freundlichen Grüßen
Zim

Re: Was ist der UseJTAImageDecoder() und wie entfernt man de

Verfasst: 22.06.2020 22:26
von NicTheQuick
Ich arbeite mit dem Formdesigner nicht. Aber falls das dein einziges PNG-Bild ist, das du benutzt, vermute ich einfach einen Bug in der Codegenerierung oder gar einfach nur einen Tippfehler. Vermutlich sollte einfach nur UsePNGImageDecoder() eingebunden werden. Von einem UseJTAImageDecoder() habe ich jedenfalls auch noch nie gehört.

Re: Was ist der UseJTAImageDecoder() und wie entfernt man de

Verfasst: 22.06.2020 22:35
von The_Dark_Zim-.-
Ich habe noch mal ein wenig experimentiert. Unter Windows 10 gleiches Problem. Wenn ich das Bild nachbaue, Ist ja einfach ein 16x16 Bild mit einem "A" und transparenten Hintergrund, bekomme ich das gleiche Resultat. Nutze ich eine andere Grafik ist alles okay. Z. B. das für Hyperlinks.

@NicTheQuick Ich habe mehrere png's in Verwendung die alle keine Probleme machen. Er setzt UsePNGImageDecoder() und darunter direkt UseJTAImageDecoder().

Beispiel:

Code: Alles auswählen

Global Window_3

Global Image_0

Global Img_Window_3_0

UsePNGImageDecoder()
UseJTAImageDecoder()

Img_Window_3_0 = LoadImage(#PB_Any,"/<pfad>/vd_textgadget.png")


Procedure OpenWindow_3(x = 0, y = 0, width = 600, height = 400)
  Window_3 = OpenWindow(#PB_Any, x, y, width, height, "", #PB_Window_SystemMenu)
  Image_0 = ImageGadget(#PB_Any, 80, 80, 16, 16, ImageID(Img_Window_3_0))
EndProcedure

Procedure Window_3_Events(event)
  Select event
    Case #PB_Event_CloseWindow
      ProcedureReturn #False

    Case #PB_Event_Menu
      Select EventMenu()
      EndSelect

    Case #PB_Event_Gadget
      Select EventGadget()
      EndSelect
  EndSelect
  ProcedureReturn #True
EndProcedure
<pfad> ist für das Beispiel nur eingesetzt, weil wegen Geheim und so :D

Re: Was ist der UseJTAImageDecoder() und wie entfernt man de

Verfasst: 22.06.2020 23:01
von helpy
NicTheQuick hat geschrieben:... Bug in der Codegenerierung ...
Das wird es wohl sein! Der FormDesigner der PureBasic IDE generiert diesen Code!

Re: Was ist der UseJTAImageDecoder() und wie entfernt man de

Verfasst: 22.06.2020 23:10
von The_Dark_Zim-.-
Ja, schon klar das die Codegenerierung das ist... Aber warum bei dem Bild bzw. dieser Art von Bild, wenn es bei den anderen kein Problem gibt.

Re: Was ist der UseJTAImageDecoder() und wie entfernt man de

Verfasst: 22.06.2020 23:25
von helpy
Das liegt an der IDE! Siehe folgenden Code im Github-Repo:
==> https://github.com/fantaisie-software/p ... #L218-L234

Im Quellcode des FormDesigners sind gleich zwei Fehler enthalten.
(1) Wenn der Dateiname (nicht nur die Extension) den String "tga" enthält, wird die boolsche Variable "tgadecoder" gesetzt (siehe Zeile 218).
(2) Wenn "tgadecoder" gesetzt ist, dann wird im Code der Befehl "UseJTAImageDecoder()" hinzugefügt (siehe Zeile 233).

Korrektur des PureBasic-Quellcodes:
(1) Statt den gesamten Dateinamen auf den String "tga" zu prüfen, dürfte nur die Extension geprüft werden. Dies gilt auch für die Strings "jpg", "jpeg", "tiff" und "png"!
(2) Statt UseJTAImageDecoder() müsste UseTGAImageDecoder() hinzugefügt werden!

Gruß aus Niederbayern!

Re: Was ist der UseJTAImageDecoder() und wie entfernt man de

Verfasst: 22.06.2020 23:25
von helpy
Vorläufiger Workaround für Dein PNG-Bild: Den Dateinamen umbenennen :-D

Re: Was ist der UseJTAImageDecoder() und wie entfernt man de

Verfasst: 22.06.2020 23:29
von mk-soft
Habe es mal bei mir un der Linux mit World.png Bild probiert und es tritt nicht auf.
Gehe mal im FormDesigner in den Bildmanager. Vielleicht ist dort Müll drin.

Ah ja, ich verwende meinen eigenen PB-IDE Build mit den Bug-Fixes ...

P.S.
@helpy,
wenn ich Zeit habe, korregiere ich es in meinen PB-IDE Build ...

Re: Was ist der UseJTAImageDecoder() und wie entfernt man de

Verfasst: 23.06.2020 05:06
von helpy
mk-soft hat geschrieben:Habe es mal bei mir un der Linux mit World.png Bild probiert und es tritt nicht auf.
Gehe mal im FormDesigner in den Bildmanager. Vielleicht ist dort Müll drin.
Das png von World.png in tga_world.png umbenennen, dann wird wohl Fehler mit der Standard-IDE/FormDesigner auftreten.