Tileset Creator

Du brauchst Grafiken, gute Programme oder Leute die dir helfen? Frag hier.
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Tileset Creator

Beitrag 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
Zuletzt geändert von Scarabol am 14.02.2008 16:33, insgesamt 1-mal geändert.
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Benutzeravatar
#NULL
Beiträge: 2239
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

in dem openfilerequester musst du '|' durch ';' ersetzen.
my pb stuff..
Bild..jedenfalls war das mal so.
Modder
Beiträge: 126
Registriert: 20.08.2007 15:14
Kontaktdaten:

Beitrag von Modder »

Bei mir steht in Zeile 42

Code: Alles auswählen

If LoadImage(1, GetGadgetItemText(1, 0))
Incorrect Number of Parameters.[/code]
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Modder
Beiträge: 126
Registriert: 20.08.2007 15:14
Kontaktdaten:

Beitrag 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?
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag von Scarabol »

Hi,

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

Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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" ;)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Modder
Beiträge: 126
Registriert: 20.08.2007 15:14
Kontaktdaten:

Beitrag 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: <)
Antworten