Added colors to HTML5 export

This commit is contained in:
Skyler Lehmkuhl 2012-01-12 15:42:46 -05:00
parent 06d8d18618
commit 81126a9fb5
3 changed files with 74 additions and 10 deletions

52
base.js
View File

@ -62,6 +62,17 @@ function ave(x, y, fac) {
return y - fac*(y-x) return y - fac*(y-x)
} }
function decimalToHex(d, padding) {
var hex = Number(d).toString(16);
padding = typeof (padding) === "undefined" || padding === null ? padding = 2 : padding;
while (hex.length < padding) {
hex = "0" + hex;
}
return hex;
}
function getObjectClass(obj) { function getObjectClass(obj) {
/* Returns the class name of the argument or undefined if /* Returns the class name of the argument or undefined if
@ -310,7 +321,8 @@ function Layer (parent) {
function Shape() { function Shape() {
// Not part of the ActionScript spec, but necessary. // Not part of the ActionScript spec, but necessary.
this._shapedata = [] this._shapedata = []
this.fill = "#000000" this.fill = "#123456"
this.line = "#FEDCBAFF".substr(0,7)
this._draw = function (frame,frame2,r) { this._draw = function (frame,frame2,r) {
if (!frame2) { if (!frame2) {
this._x = frame._x this._x = frame._x
@ -318,19 +330,54 @@ function Shape() {
this._xscale = frame._xscale this._xscale = frame._xscale
this._yscale = frame._yscale this._yscale = frame._yscale
this._rotation = frame._rotation this._rotation = frame._rotation
if (frame.fill) {
this.filr = parseInt(parseInt(frame.fill.replace("#",""),16)/65536)
this.filg = parseInt(parseInt(frame.fill.replace("#",""),16)/256)%256
this.filb = parseInt(parseInt(frame.fill.replace("#",""),16))%256
this.linr = parseInt(parseInt(frame.line.replace("#",""),16)/65536)
this.ling = parseInt(parseInt(frame.line.replace("#",""),16)/256)%256
this.linb = parseInt(parseInt(frame.line.replace("#",""),16))%256
this.fill = "#"+decimalToHex(this.filr,2)+decimalToHex(this.filg,2)+decimalToHex(this.filb,2)
this.line = "#"+decimalToHex(this.linr,2)+decimalToHex(this.ling,2)+decimalToHex(this.linb,2)
}
} else { } else {
this._x = ave(frame2._x, frame._x, r) this._x = ave(frame2._x, frame._x, r)
this._y = ave(frame2._y, frame._y, r) this._y = ave(frame2._y, frame._y, r)
this._xscale = ave(frame2._xscale, frame._xscale, r) this._xscale = ave(frame2._xscale, frame._xscale, r)
this._yscale = ave(frame2._yscale, frame._yscale, r) this._yscale = ave(frame2._yscale, frame._yscale, r)
this._rotation = ave(frame2._rotation ,frame._rotation, r) this._rotation = ave(frame2._rotation ,frame._rotation, r)
if (frame2.fill) {
this.filr2 = parseInt(parseInt(frame2.fill.replace("#",""),16)/65536)
this.filg2 = parseInt(parseInt(frame2.fill.replace("#",""),16)/256)%256
this.filb2 = parseInt(parseInt(frame2.fill.replace("#",""),16))%256
this.filra = parseInt(parseInt(frame.fill.replace("#",""),16)/65536)
this.filga = parseInt(parseInt(frame.fill.replace("#",""),16)/256)%256
this.filba = parseInt(parseInt(frame.fill.replace("#",""),16))%256
this.filr = parseInt(ave(this.filr2, this.filra, r))
this.filg = parseInt(ave(this.filg2, this.filga, r))
this.filb = parseInt(ave(this.filb2, this.filba, r))
this.fill = "#"+decimalToHex(this.filr,2)+decimalToHex(this.filg,2)+decimalToHex(this.filb,2)
}
if (frame2.line) {
this.linr2 = parseInt(parseInt(frame2.line.replace("#",""),16)/65536)
this.ling2 = parseInt(parseInt(frame2.line.replace("#",""),16)/256)%256
this.linb2 = parseInt(parseInt(frame2.line.replace("#",""),16))%256
this.linra = parseInt(parseInt(frame.line.replace("#",""),16)/65536)
this.linga = parseInt(parseInt(frame.line.replace("#",""),16)/256)%256
this.linba = parseInt(parseInt(frame.line.replace("#",""),16))%256
this.linr = parseInt(ave(this.linr2, this.linra, r))
this.ling = parseInt(ave(this.ling2, this.linga, r))
this.linb = parseInt(ave(this.linb2, this.linba, r))
this.line = "#"+decimalToHex(this.linr,2)+decimalToHex(this.ling,2)+decimalToHex(this.linb,2)
}
} }
//log(this._x) //log(this._x)
cr.save() cr.save()
cr.translate(this._x,this._y) cr.translate(this._x,this._y)
cr.rotate(this._rotation*Math.PI/180) cr.rotate(this._rotation*Math.PI/180)
cr.scale(this._xscale*1.0, this._yscale*1.0) cr.scale(this._xscale*1.0, this._yscale*1.0)
cr.fillStyle = this.fill; cr.fillStyle = this.fill.substr(0,7);
cr.strokeStyle = this.line.substr(0,7);
for (i in this._shapedata) { for (i in this._shapedata) {
if (this._shapedata[i][0]=="M") { if (this._shapedata[i][0]=="M") {
cr.moveTo(this._shapedata[i][1],this._shapedata[i][2]) cr.moveTo(this._shapedata[i][1],this._shapedata[i][2])
@ -347,6 +394,7 @@ function Shape() {
cr.stroke() cr.stroke()
} }
cr.restore() cr.restore()
cr.beginPath()
} }
} }

View File

@ -228,7 +228,7 @@ def shape(x, y, fill=None):
shape.shapedata = [["M",0,0]] shape.shapedata = [["M",0,0]]
return shape return shape
root = svlgui.Group() root = svlgui.Group(skipl=True)
root.name = "_root" root.name = "_root"
root.level = True root.level = True
root.onMouseDown = onMouseDownGroup root.onMouseDown = onMouseDownGroup
@ -368,6 +368,9 @@ def about(widget=None):
svlgui.alert("Lightningbeam v1.0-alpha1\nLast Updated: "+update_date()+ svlgui.alert("Lightningbeam v1.0-alpha1\nLast Updated: "+update_date()+
"\nCreated by: Skyler Lehmkuhl\nBased on SWIFT") "\nCreated by: Skyler Lehmkuhl\nBased on SWIFT")
def preferences(widget=None):
prefwin = svlgui.PreferencesWindow()
svlgui.menufuncs([["File", svlgui.menufuncs([["File",
("New...", new_file,"<Control>N"), ("New...", new_file,"<Control>N"),
@ -384,7 +387,7 @@ svlgui.menufuncs([["File",
"Copy", "Copy",
"Paste", "Paste",
"Delete", "Delete",
"Preferences"], ("Preferences",preferences,"")],
["Timeline", ["Timeline",
("Add Keyframe",add_keyframe,"F5"), ("Add Keyframe",add_keyframe,"F5"),
"Add Blank Keyframe", "Add Blank Keyframe",

View File

@ -146,7 +146,7 @@ if sys.platform=="linux2":
from GUI import Window as OSXWindow, Button as OSXButton, Image as OSXImage from GUI import Window as OSXWindow, Button as OSXButton, Image as OSXImage
from GUI import Frame as OSXFrame, Color as OSXColor, Grid as OSXGrid from GUI import Frame as OSXFrame, Color as OSXColor, Grid as OSXGrid
from GUI import Label as OSXLabel, RadioGroup as OSXRadioGroup, RadioButton as OSXRadioButton from GUI import Label as OSXLabel, RadioGroup as OSXRadioGroup, RadioButton as OSXRadioButton
from GUI import Column, Row, ScrollableView, TextEditor, Colors from GUI import Column, Row, ScrollableView, TextEditor, Colors, ModalDialog
from GUI import StdCursors, Alerts, FileDialogs, Font from GUI import StdCursors, Alerts, FileDialogs, Font
from GUI.StdMenus import basic_menus, file_cmds, print_cmds from GUI.StdMenus import basic_menus, file_cmds, print_cmds
from GUI.Files import FileType from GUI.Files import FileType
@ -167,7 +167,7 @@ elif sys.platform=="win32":
from GUI import Window as OSXWindow, Button as OSXButton, Image as OSXImage from GUI import Window as OSXWindow, Button as OSXButton, Image as OSXImage
from GUI import Frame as OSXFrame, Color as OSXColor, Grid as OSXGrid from GUI import Frame as OSXFrame, Color as OSXColor, Grid as OSXGrid
from GUI import Label as OSXLabel, RadioGroup as OSXRadioGroup, RadioButton as OSXRadioButton from GUI import Label as OSXLabel, RadioGroup as OSXRadioGroup, RadioButton as OSXRadioButton
from GUI import Column, Row, ScrollableView, TextEditor, Colors from GUI import Column, Row, ScrollableView, TextEditor, Colors, ModalDialog
from GUI import StdCursors, Alerts, FileDialogs, Font from GUI import StdCursors, Alerts, FileDialogs, Font
from GUI.StdMenus import basic_menus, file_cmds, print_cmds from GUI.StdMenus import basic_menus, file_cmds, print_cmds
from GUI.Files import FileType from GUI.Files import FileType
@ -189,7 +189,7 @@ elif sys.platform=="darwin":
from GUI import Window as OSXWindow, Button as OSXButton, Image as OSXImage from GUI import Window as OSXWindow, Button as OSXButton, Image as OSXImage
from GUI import Frame as OSXFrame, Color as OSXColor, Grid as OSXGrid from GUI import Frame as OSXFrame, Color as OSXColor, Grid as OSXGrid
from GUI import Label as OSXLabel, RadioGroup as OSXRadioGroup, RadioButton as OSXRadioButton from GUI import Label as OSXLabel, RadioGroup as OSXRadioGroup, RadioButton as OSXRadioButton
from GUI import Column, Row, ScrollableView, TextEditor, Colors from GUI import Column, Row, ScrollableView, TextEditor, Colors, ModalDialog
from GUI import StdCursors, Alerts, FileDialogs, Font from GUI import StdCursors, Alerts, FileDialogs, Font
from GUI.StdMenus import basic_menus, file_cmds, print_cmds from GUI.StdMenus import basic_menus, file_cmds, print_cmds
from GUI.Files import FileType from GUI.Files import FileType
@ -223,6 +223,7 @@ if SYSTEM=="osx":
m.send_to_back.enabled = 1 m.send_to_back.enabled = 1
m.import_to_stage.enabled = 1 m.import_to_stage.enabled = 1
m.import_to_library.enabled = 1 m.import_to_library.enabled = 1
m.preferences_cmd.enabled = 1
#def create_sc(self): #def create_sc(self):
# pass # pass
@ -422,7 +423,8 @@ def menufuncs(j):
#menu = GUI.Menu("Test", [("Run", 'run_file')]) #menu = GUI.Menu("Test", [("Run", 'run_file')])
menus.append(menu) menus.append(menu)
else: else:
cmds={"Save":"save_cmd", "Open":"open_cmd","About Lightningbeam...":"about_cmd"} cmds={"Save":"save_cmd", "Open":"open_cmd","About Lightningbeam...":"about_cmd",\
"Preferences":"preferences_cmd"}
[setattr(app,cmds[k[0]],k[1]) for k in i if (k[0] in cmds)] [setattr(app,cmds[k[0]],k[1]) for k in i if (k[0] in cmds)]
class VBox(Widget): class VBox(Widget):
@ -1174,6 +1176,7 @@ class Shape (object):
maxy = property(getmaxy) maxy = property(getmaxy)
def print_html(self): def print_html(self):
retval = "var "+self.name+" = new Shape();\n"+self.name+"._shapedata = "+str(self.shapedata)+";\n" retval = "var "+self.name+" = new Shape();\n"+self.name+"._shapedata = "+str(self.shapedata)+";\n"
retval += self.name+".fill = \""+self.fillcolor.rgb+"\";\n"+self.name+".line = \""+self.linecolor.rgb+"\";\n"
return retval return retval
class framewrapper (object): class framewrapper (object):
@ -1927,12 +1930,12 @@ class ColorSelectionWindow:
self.window.destroy() self.window.destroy()
raise ObjectDeletedError raise ObjectDeletedError
canvas = Canvas(336,208) canvas = Canvas(336,208)
group = Group() group = Group(skipl=True)
def dummy(*args): def dummy(*args):
pass pass
group._onMouseMove = dummy group._onMouseMove = dummy
canvas.add(group,0,0) canvas.add(group,0,0)
im = Image("media/colors.png") im = Image("media/colors.png",skipl=True)
group.add(im) group.add(im)
group.window = win group.window = win
group.canvas = canvas group.canvas = canvas
@ -1943,6 +1946,16 @@ class ColorSelectionWindow:
win.place(canvas._int(),left=0,top=0,right=0,bottom=0,sticky="news",scrolling="") win.place(canvas._int(),left=0,top=0,right=0,bottom=0,sticky="news",scrolling="")
win.show() win.show()
class PreferencesWindow:
def __init__(self):
if SYSTEM=="osx":
win = ModalDialog(closable=True,width=500,height=500)
frame = Frame()
win.place(frame._int(), left=0, top=0, right=0, bottom=0, sticky="nsew")
label = Label("Path to Flash Debugger: ")
frame.layout_self([label,0,None,0,None,"nw",""])
win.present()
def main(): def main():
#Executes the main loop for whatever GUI is running #Executes the main loop for whatever GUI is running
if SYSTEM=="gtk": if SYSTEM=="gtk":