Seite 1 von 1

Tileset Creator

Verfasst: 13.02.2008 23:30
von Scarabol
Hi Leute,

da ichs gerade selber brauchte hier mal ein kleiner Tileset Creator:

Code: Alles auswählen

UsePNGImageDecoder()
UsePNGImageEncoder()
UseJPEGImageDecoder()
UseJPEGImageEncoder()

OpenWindow(1, 0, 0, 400, 300, "Tileset Creator", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)
CreateGadgetList(WindowID(1))
  ListIconGadget(1, 0, 0, 400, 260, "File", 395, #PB_ListIcon_MultiSelect)
  
  ButtonGadget(10, 10, 270, 40, 20, "ADD")
  ButtonGadget(11, 60, 270, 40, 20, "DEL")
  ButtonGadget(12, 350, 270, 40, 20, "SAVE")
  
  Repeat
    Event = WaitWindowEvent()
    
    If CountGadgetItems(1) = 0
      DisableGadget(12, 1)
    Else
      DisableGadget(12, 0)
    EndIf
    
    Select Event
    Case #PB_Event_Gadget
      GadgetID = EventGadget()
      Select GadgetID
      Case 10
        AddFile$ = OpenFileRequester("Add File....", "", "BMP- JPEG- PNG- Datei|*.bmp;*.png;*.jpeg;*.jpg", 0, #PB_Requester_MultiSelection)
        While AddFile$
          AddGadgetItem(1, -1, AddFile$)
          AddFile$ = NextSelectedFileName()
        Wend
      Case 11
        For i = 1 To CountGadgetItems(1)
          If GetGadgetItemState(1, i)
            RemoveGadgetItem(1,i)
            i-1
          EndIf
        Next
      Case 12
        If LoadImage(1, GetGadgetItemText(1, 0))
          w = ImageWidth(1)
          h = ImageHeight(1)
          FreeImage(1)
          nw = Round(Sqr(CountGadgetItems(1)), 1)
          nh = CountGadgetItems(1)/nw
          nw*w
          nh*h
          If Not CreateImage(0, nw, nh) = 0
            x = 0
            y = 0
            savefile$ = SaveFileRequester("Save Tileset...", "", "*.png", 0)
            If Not savefile$ = ""
              If Not GetExtensionPart(savefile$) = "png"
                savefile$+".png"
              EndIf
              For i = 0 To CountGadgetItems(1)-1
                If LoadImage(1, GetGadgetItemText(1, i))
                  StartDrawing(ImageOutput(0))
                    DrawImage(ImageID(1), x, y)
                    x+w
                    If x >= nw
                      y+h
                      x = 0
                    EndIf
                  StopDrawing()
                  FreeImage(1)
                EndIf
              Next
              SaveImage(0, savefile$, #PB_ImagePlugin_PNG)
            EndIf
          EndIf
        EndIf
        End
      EndSelect
    EndSelect
  Until Event = #PB_Event_CloseWindow
End
Gruß
Scarabol

Verfasst: 14.02.2008 13:48
von #NULL
in dem openfilerequester musst du '|' durch ';' ersetzen.

Verfasst: 14.02.2008 14:51
von Modder
Bei mir steht in Zeile 42

Code: Alles auswählen

If LoadImage(1, GetGadgetItemText(1, 0))
Incorrect Number of Parameters.[/code]

Verfasst: 14.02.2008 14:55
von Kiffi
Modder hat geschrieben:Incorrect Number of Parameters.
Unter PB4.1 alle OK.
Höchste Zeit, mal Deine PB-Version in Deine Signatur zu schreiben.
Ansonsten kann man wenig dazu sagen.

Grüße ... Kiffi

Verfasst: 14.02.2008 16:20
von Modder
Kiffi hat geschrieben:
Modder hat geschrieben:Incorrect Number of Parameters.
Unter PB4.1 alle OK.
Höchste Zeit, mal Deine PB-Version in Deine Signatur zu schreiben.
Ansonsten kann man wenig dazu sagen.

Grüße ... Kiffi
Ja sir, gesagt getan. :roll:
Jetzt schlauer?

Verfasst: 14.02.2008 16:36
von Scarabol
Hi,

hab den Code noch verbessert unter anderem:
- Tileset Größe optimiert
- OpenFileRequester korrigiert
- SaveFileRequester integriert

Gruß
Scarabol

Verfasst: 14.02.2008 18:54
von Kiffi
Modder hat geschrieben:Ja sir, gesagt getan. :roll:
Jetzt schlauer?
brauchst nicht gleich so angefressen zu sein :|

Die 4.02 gibt's nicht mehr zum Download, so dass ich auf eine 3.94 ausweichen
musste, um die Parameteranzahl zu ermitteln. Hier ist es zumindest so, dass
GetGadgetItemText() 3 Parameter erwartet:

Code: Alles auswählen

GetGadgetItemText(#Gadget, Eintrag, Spalte)
Unter PB4.1 ist der dritte Parameter optional, deswegen hat Scarabol ihn
weggelassen. Versuch mal dort eine 0 einzutragen:

Code: Alles auswählen

If LoadImage(1, GetGadgetItemText(1, 0, 0))
(hättest Du aber auch eigentlich ganz gut selber rausfinden können, oder)

Grüße ... Kiffi

Verfasst: 14.02.2008 20:51
von Kaeru Gaman
da geb ich Kiffi recht...

wer eine andere Version als die "last stable" benutzt,
sollte das explizit angeben, sonst kommt es fortgesetzt zu irrtümern.

..und auch damit, dass du die fehlerursache selber hättest ermitteln können, geb ich ihm recht.

und das ganze bedeutet nicht, dass wir "blöder hund sagen",
sondern nur ganz freundlich "hey, kollege, arbeite ein wenig mit" ;)

Verfasst: 15.02.2008 13:50
von Modder
Kiffi hat geschrieben:
Modder hat geschrieben:Ja sir, gesagt getan. :roll:
Jetzt schlauer?
brauchst nicht gleich so angefressen zu sein :|

Die 4.02 gibt's nicht mehr zum Download, so dass ich auf eine 3.94 ausweichen
musste, um die Parameteranzahl zu ermitteln. Hier ist es zumindest so, dass
GetGadgetItemText() 3 Parameter erwartet:

Code: Alles auswählen

GetGadgetItemText(#Gadget, Eintrag, Spalte)
Unter PB4.1 ist der dritte Parameter optional, deswegen hat Scarabol ihn
weggelassen. Versuch mal dort eine 0 einzutragen:

Code: Alles auswählen

If LoadImage(1, GetGadgetItemText(1, 0, 0))
(hättest Du aber auch eigentlich ganz gut selber rausfinden können, oder)

Grüße ... Kiffi
Jo so geht es, muss man natürlich dementsprechend auch noch in Zeile 59 ne 0 einfügen.
Hätte ich schon rausfinden können bin bisschen faul und hab viel um die Ohren. :mrgreen: (soll nicht heißen, dass es nicht so bei dir wäre)
Kaeru Gaman hat geschrieben:da geb ich Kiffi recht...

wer eine andere Version als die "last stable" benutzt,
sollte das explizit angeben, sonst kommt es fortgesetzt zu irrtümern.

..und auch damit, dass du die fehlerursache selber hättest ermitteln können, geb ich ihm recht.
Habs ja anschließen, wie gesagt, in die Signatur reineditiert und das Problem hat ja Kiffi schon gelöst.

und das ganze bedeutet nicht, dass wir "blöder hund sagen",
sondern nur ganz freundlich "hey, kollege, arbeite ein wenig mit" ;)
Ich weiß, ich weiß :)
Werd mich demnächst mehr anstrengen. :lol: <)