Can now switch between paint brush modes

This commit is contained in:
Skyler Lehmkuhl 2012-01-11 15:47:29 -05:00
parent d2f01601ce
commit b2d86b8181
4 changed files with 76 additions and 7 deletions

View File

@ -87,7 +87,7 @@ def onMouseUpGroup(self, x, y):
self.cshape = None self.cshape = None
elif svlgui.MODE=="p": elif svlgui.MODE=="p":
print len(self.cshape.shapedata) print len(self.cshape.shapedata)
self.cshape.shapedata = misc_funcs.simplify_shape(self.cshape.shapedata, "curve",1) self.cshape.shapedata = misc_funcs.simplify_shape(self.cshape.shapedata, svlgui.PMODE.split()[-1],1)
print len(self.cshape.shapedata) print len(self.cshape.shapedata)
self.cshape = None self.cshape = None
MainWindow.stage.draw() MainWindow.stage.draw()

View File

@ -218,11 +218,27 @@ class MainWindowOSX:
self.toolbox.buttons[4][0].onPress = pen self.toolbox.buttons[4][0].onPress = pen
self.toolbox.buttons[4][1].onPress = paint_bucket self.toolbox.buttons[4][1].onPress = paint_bucket
self.scriptwindow = svlgui.TextView() self.scriptwindow = svlgui.TextView()
self.frame.layout_self( [self.toolbox,0,None,0,0,"nws",""], self.paintgroup = svlgui.RadioGroup("Draw straight", "Draw smooth", "Draw as inked")
def setmode(self):
svlgui.PMODE = self.value
self.paintgroup.action = setmode
self.paintbox = svlgui.Frame()
self.pboptions = svlgui.Label("Paintbrush Options")
self.paintbox.layout_self([self.pboptions,0,0,0,None,"news",""],
[self.paintgroup[0],0,0,self.pboptions._int(),None,"new",""],
[self.paintgroup[1],0,0,self.paintgroup[0]._int(),None,"new",""],
[self.paintgroup[2],0,0,self.paintgroup[1]._int(),None,"new",""])
#)
self.frame.layout_self( [self.toolbox,0,None,0,None,"nw",""],
#[self.paintbox,0,245,0,0,"nws","v"],
[self.timelinebox,self.toolbox._int()+148,-500,0,None,"new","hv"], [self.timelinebox,self.toolbox._int()+148,-500,0,None,"new","hv"],
#[self.timelinebox,self.paintbox._int()+148,-500,0,None,"new","hv"],
[self.layerbox,self.toolbox._int(),self.toolbox._int().width+150,0,None,"n","v"], [self.layerbox,self.toolbox._int(),self.toolbox._int().width+150,0,None,"n","v"],
#[self.layerbox,self.paintbox._int(),self.toolbox._int().width+150,0,None,"n","v"],
[self.scriptwindow,self.timelinebox._int(),0,0,0,"nse", "hv"], [self.scriptwindow,self.timelinebox._int(),0,0,0,"nse", "hv"],
[self.stage,self.toolbox._int(),self.scriptwindow._int(),self.timelinebox._int()+2,0,"nsew", "hv"] ) [self.stage,self.toolbox._int(),self.scriptwindow._int(),self.timelinebox._int()+2,0,"nsew", "hv"],
[self.paintbox,0,self.stage._int(),self.toolbox._int(),0,"nws","v"] )
#[self.stage,self.paintbox._int(),self.scriptwindow._int(),self.timelinebox._int()+2,0,"nsew", "hv"] )
self.window.add(self.frame) self.window.add(self.frame)
# use mainwindowosx, this is just to comment things out # use mainwindowosx, this is just to comment things out
@ -261,7 +277,10 @@ class MainWindowHTML:
self.toolbox.buttons[4][0].onPress = pen self.toolbox.buttons[4][0].onPress = pen
self.toolbox.buttons[4][1].onPress = paint_bucket self.toolbox.buttons[4][1].onPress = paint_bucket
self.scriptwindow = svlgui.TextView() self.scriptwindow = svlgui.TextView()
self.frame.layout_self( [self.toolbox,0,None,0,0,"nws",""], self.paintgroup = svlgui.RadioGroup("Draw straight", "Draw smooth", "Draw as inked")
self.paintbox = svlgui.VBox([[svlgui.Label("Paintbrush Options")._int()],[self.paintgroup]])
self.frame.layout_self( [self.toolbox,0,None,0,None,"nw",""],
[self.paintbox,0,None,self.toolbox._int(),0,"nws","v"],
[self.timelinebox,self.toolbox._int()+148,-500,0,None,"new","hv"], [self.timelinebox,self.toolbox._int()+148,-500,0,None,"new","hv"],
[self.layerbox,self.toolbox._int(),self.toolbox._int().width+150,0,None,"n","v"], [self.layerbox,self.toolbox._int(),self.toolbox._int().width+150,0,None,"n","v"],
[self.scriptwindow,self.timelinebox._int(),0,0,0,"nse", "hv"], [self.scriptwindow,self.timelinebox._int(),0,0,0,"nse", "hv"],

View File

@ -105,7 +105,7 @@ def catmullRom2bezier( points ) :
return d; return d;
def simplify_shape(shape,mode,iterations): def simplify_shape(shape,mode,iterations):
if mode in ("straight","curve"): if mode in ("straight","smooth"):
for i in xrange(iterations): for i in xrange(iterations):
for j in reversed(range(len(shape))): for j in reversed(range(len(shape))):
if j>0 and j<len(shape)-1: if j>0 and j<len(shape)-1:
@ -132,7 +132,7 @@ def simplify_shape(shape,mode,iterations):
acosB=0 acosB=0
if acosB>(165-500/(ab+bc)): # at least 15 degrees away from straight angle if acosB>(165-500/(ab+bc)): # at least 15 degrees away from straight angle
del shape[j] del shape[j]
if mode=="curve": if mode=="smooth":
shape = catmullRom2bezier([shape[0]]*2+shape+[shape[-1]]) shape = catmullRom2bezier([shape[0]]*2+shape+[shape[-1]])
print shape print shape

View File

@ -25,6 +25,10 @@ import re
# "b": paint bucket tool # "b": paint bucket tool
''' '''
MODE="e" MODE="e"
#Painbrush mode
PMODE = "Draw straight"
SITER=0 SITER=0
#Currentframe - the frame selected on the timeline. Not necessarily the frame being shown. #Currentframe - the frame selected on the timeline. Not necessarily the frame being shown.
@ -139,6 +143,7 @@ if sys.platform=="linux2":
import GUI # Using PyGUI. Experimental. import GUI # Using PyGUI. Experimental.
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 Column, Row, ScrollableView, TextEditor, Colors from GUI import Column, Row, ScrollableView, TextEditor, Colors
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
@ -159,6 +164,7 @@ elif sys.platform=="win32":
import GUI # Using PyGUI. Experimental. import GUI # Using PyGUI. Experimental.
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 Column, Row, ScrollableView, TextEditor, Colors from GUI import Column, Row, ScrollableView, TextEditor, Colors
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
@ -180,6 +186,7 @@ elif sys.platform=="darwin":
import GUI # Using PyGUI. Experimental. import GUI # Using PyGUI. Experimental.
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 Column, Row, ScrollableView, TextEditor, Colors from GUI import Column, Row, ScrollableView, TextEditor, Colors
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
@ -467,6 +474,49 @@ class HBox(Widget):
td = htmlobj("td") td = htmlobj("td")
td.add(objint) td.add(objint)
self.tr.add(td) self.tr.add(td)
class Label(Widget):
def _gettext(self):
if SYSTEM=="osx":
return self.label.text
def _settext(self,text):
if SYSTEM=="osx":
self.label.text=text
text = property(_gettext,_settext)
def __init__(self, text=""):
if SYSTEM=="osx":
self.label = OSXLabel()
self.label.text = text
def _int(self):
if SYSTEM=="osx":
return self.label
class RadioGroup(Widget):
def __getitem__(self,num):
return self.buttons[num]
def __init__(self,*args):
self.buttons = []
for i in args:
self.buttons.append(RadioButton(i))
self.group = OSXRadioGroup([j._int() for j in self.buttons])
self.group.value = args[0]
self.group.action = self._action
def _int(self):
return self.group
def _getvalue(self):
return self.group.value
def _setvalue(self,value):
self.group.value = value
value = property(_getvalue, _setvalue)
def _action(self):
self.action(self)
def action(self,self1=None):
pass
class RadioButton(Widget):
def __init__(self,title):
if SYSTEM=="osx":
self.button = OSXRadioButton(title=title,value=title)
def _int(self):
return self.button
class Grid(Widget): class Grid(Widget):
def __init__(self,*args): def __init__(self,*args):