require 'sdl' require "rexml/document" include REXML SDL.init(SDL::INIT_VIDEO) row = 4 col = 4 filename = "citizen-1.png" image = SDL::Surface.load(filename) w, h = image.w, image.h if filename[/^(.*)?\.(png|jpg|bmp)?/i] p $1, $2 end picname = $1 ext = $2 doc = Document.new("<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">") doc << XMLDecl.new(1.0, "utf-8") root_node = doc.add_element("plist") root_node.attributes["version"] = "1.0" root_dict = root_node.add_element("dict") # frames frame_key = root_dict.add_element("key") frame_key.text = "frames" frame_dict = root_dict.add_element("dict") for i in 0...row for j in 0...col key = Element.new("key") key.text = "#{picname}_#{i * col + j}.#{ext}" dict = Element.new("dict") # dict ek = [] ev = [] ek[0] = Element.new("key") ek[0].text = "width" ev[0] = Element.new("integer") ev[0].text = (w / col).to_s ek[1] = Element.new("key") ek[1].text = "height" ev[1] = Element.new("integer") ev[1].text = (h / row).to_s ek[2] = Element.new("key") ek[2].text = "originalWidth" ev[2] = Element.new("integer") ev[2].text = (w / col).to_s ek[3] = Element.new("key") ek[3].text = "originalHeight" ev[3] = Element.new("integer") ev[3].text = (h / row).to_s ek[4] = Element.new("key") ek[4].text = "x" ev[4] = Element.new("integer") ev[4].text = (j * w / row).to_s ek[5] = Element.new("key") ek[5].text = "y" ev[5] = Element.new("integer") ev[5].text = (i * h / col).to_s ek[6] = Element.new("key") ek[6].text = "offsetX" ev[6] = Element.new("real") ev[6].text = "0" ek[7] = Element.new("key") ek[7].text = "offsetY" ev[7] = Element.new("real") ev[7].text = "0" for t in 0...ek.size dict.elements << ek[t] dict.elements << ev[t] end frame_dict.elements << key frame_dict.elements << dict # end dict end end # end frames # metadata metadata_key = root_dict.add_element("key") metadata_key.text = "metadata" metadatat_dict = root_dict.add_element("dict") ek = [] ev = [] ek[0] = Element.new("key") ek[0].text = "format" ev[0] = Element.new("integer") ev[0].text = "2" ek[1] = Element.new("key") ek[1].text = "textureFileName" ev[1] = Element.new("string") ev[1].text = filename ek[2] = Element.new("key") ek[2].text = "realTextureFileName" ev[2] = Element.new("string") ev[2].text = filename ek[3] = Element.new("key") ek[3].text = "size" ev[3] = Element.new("string") ev[3].text = "{#{w},#{h}}" for t in 0...ek.size metadatat_dict.elements << ek[t] metadatat_dict.elements << ev[t] end #end metadata # texture texture_key = root_dict.add_element("key") texture_key.text = "texture" texture_dict = root_dict.add_element("dict") ek = [] ev = [] ek[0] = Element.new("key") ek[0].text = "width" ev[0] = Element.new("integer") ev[0].text = "#{w}" ek[1] = Element.new("key") ek[1].text = "height" ev[1] = Element.new("integer") ev[1].text = "#{h}" for t in 0...ek.size texture_dict.elements << ek[t] texture_dict.elements << ev[t] end # end texture file = File.open("#{picname}.plist", "w") doc.write(file, 4, false, true) file.close p doc.xml_decl()
bug啥的慢慢修。