123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- Object subclass: #CanvasRenderingContext
instanceVariableNames: ''
category: 'Canvas'!
!CanvasRenderingContext methodsFor: 'drawing arcs'!
arcTo: aPoint radius: aNumber startAngle: aNumber2 endAngle: aNumber3 anticlockwise: aBoolean
- {'self.arc(aPoint._x(), aPoint._y(), aNumber, aNumber2, aNumber3, aBoolean)'}
!
arcTo: aPoint radius: aNumber
- self arcTo: aPoint radius: aNumber startAngle: 0 endAngle: Number pi * 2 anticlockwise: false
! !
!CanvasRenderingContext methodsFor: 'drawing paths'!
fillStyle: aString
- {'self.fillStyle = String(aString)'}
!
beginPath
- {'self.beginPath()'}
!
closePath
- {'self.closePath()'}
!
fill
- {'self.fill()'}
!
stroke
- {'self.stroke()'}
!
moveTo: aPoint
- {'self.moveTo(aPoint._x(), aPoint._y())'}
!
lineTo: aPoint
- {'self.lineTo(aPoint._x(), aPoint._y())'}
!
strokeStyle: aString
- {'self.strokeStyle = String(aString)'}
!
lineWidth: aNumber
- {'self.lineWidth = aNumber'}
! !
!CanvasRenderingContext methodsFor: 'drawing rectangles'!
fillRectFrom: aPoint to: anotherPoint
- {'self.fillRect(aPoint._x(), aPoint._y(), anotherPoint._x(), anotherPoint._y())'}
!
strokeRectFrom: aPoint to: anotherPoint
- {'self.strokeRect(aPoint._x(), aPoint._y(), anotherPoint._x(), anotherPoint._y())'}
!
clearRectFrom: aPoint to: anotherPoint
- {'self.fillRect(aPoint._x(), aPoint._y(), anotherPoint._x(), anotherPoint._y())'}
! !
!CanvasRenderingContext class methodsFor: 'instance creation'!
tagBrush: aTagBrush
- {'return aTagBrush._element().getContext(''2d'')'}
! !
Object subclass: #HTMLCanvas
instanceVariableNames: 'root'
category: 'Canvas'!
!HTMLCanvas methodsFor: '*JQuery'!
appendToJQuery: aJQuery
- aJQuery appendElement: root element
-
! !
!HTMLCanvas methodsFor: 'accessing'!
root: aTagBrush
- root := aTagBrush
-
!
root
- ^root
-
! !
!HTMLCanvas methodsFor: 'adding'!
with: anObject
- ^self root with: anObject
-
! !
!HTMLCanvas methodsFor: 'initialization'!
initialize
- super initialize.
- root := TagBrush fromString: 'div' canvas: self
-
! !
!HTMLCanvas methodsFor: 'tags'!
newTag: aString
- ^TagBrush fromString: aString canvas: self
-
!
tag: aString
- ^root addBrush: (self newTag: aString)
-
!
h1
- ^self tag: 'h1'
-
!
h2
- ^self tag: 'h2'
-
!
h3
- ^self tag: 'h3'
-
!
h4
- ^self tag: 'h4'
-
!
h5
- ^self tag: 'h5'
-
!
h6
- ^self tag: 'h6'
-
!
p
- ^self tag: 'p'
-
!
div
- ^self tag: 'div'
-
!
span
- ^self tag: 'span'
-
!
img
- ^self tag: 'img'
-
!
ul
- ^self tag: 'ul'
-
!
ol
- ^self tag: 'ol'
-
!
li
- ^self tag: 'li'
-
!
table
- ^self tag: 'table'
-
!
tr
- ^self tag: 'tr'
-
!
td
- ^self tag: 'td'
-
!
th
- ^self tag: 'th'
-
!
form
- ^self tag: 'form'
-
!
input
- ^self tag: 'input'
-
!
button
- ^self tag: 'button'
-
!
select
- ^self tag: 'select'
-
!
option
- ^self tag: 'option'
-
!
textarea
- ^self tag: 'textarea'
-
!
a
- ^self tag: 'a'
-
!
canvas
- ^self tag: 'canvas'
-
! !
Object subclass: #TagBrush
instanceVariableNames: 'canvas, element'
category: 'Canvas'!
!TagBrush methodsFor: 'accessing'!
element
- ^element
-
! !
!TagBrush methodsFor: 'adding'!
contents: anObject
- self asJQuery empty.
- self append: anObject
-
!
addBrush: aTagBrush
- self appendChild: aTagBrush element.
- ^aTagBrush
-
!
with: anObject
- self append: anObject
-
!
append: anObject
- anObject appendToBrush: self
-
!
appendToBrush: aTagBrush
- aTagBrush addBrush: self
-
!
appendBlock: aBlock
- | root |
- root := canvas root.
- canvas root: self.
- aBlock value: canvas.
- canvas root: root
-
!
appendChild: anElement
- {'self[''@element''].appendChild(anElement)'}
-
!
appendString: aString
- self appendChild: (self createTextNodeFor: aString)
-
! !
!TagBrush methodsFor: 'attributes'!
at: aString put: aValue
- {'self[''@element''].setAttribute(aString, aValue)'}
-
!
removeAt: aString
- {'self[''@element''].removeAttribute(aString)'}
-
!
class: aString
- self at: 'class' put: aString
-
!
id: aString
- self at: 'id' put: aString
-
!
src: aString
- self at: 'src' put: aString
-
!
href: aString
- self at: 'href' put: aString
-
!
title: aString
- self at: 'title' put: aString
-
!
style: aString
- self at: 'style' put: aString
-
! !
!TagBrush methodsFor: 'converting'!
asJQuery
- {'return smalltalk.JQuery._from_(jQuery(self[''@element'']))'}
-
!
asJQueryDo: aBlock
- aBlock value: self asJQuery
-
! !
!TagBrush methodsFor: 'events'!
onKeyDown: aBlock
- self asJQuery on: 'keydown' do: aBlock
-
!
onKeyPress: aBlock
- self asJQuery on: 'keypress' do: aBlock
-
!
onKeyUp: aBlock
- self asJQuery on: 'keyup' do: aBlock
-
!
onFocus: aBlock
- self asJQuery on: 'focus' do: aBlock
-
!
onBlur: aBlock
- self asJQuery on: 'blur' do: aBlock
-
!
onChange: aBlock
- self asJQuery on: 'change' do: aBlock
-
!
onClick: aBlock
- self asJQuery on: 'click' do: aBlock
-
! !
!TagBrush methodsFor: 'initialization'!
initializeFromString: aString canvas: aCanvas
- element := self createElementFor: aString.
- canvas := aCanvas
-
! !
!TagBrush methodsFor: 'private'!
createElementFor: aString
- {'return document.createElement(String(aString))'}
-
!
createTextNodeFor: aString
- {'return document.createTextNode(String(aString))'}
-
! !
!TagBrush class methodsFor: 'instance creation'!
fromString: aString canvas: aCanvas
- ^self new
- initializeFromString: aString canvas: aCanvas;
- yourself
-
! !
Object subclass: #Widget
instanceVariableNames: 'root'
category: 'Canvas'!
!Widget methodsFor: 'accessing'!
root
- ^root
-
! !
!Widget methodsFor: 'actions'!
alert: aString
- {'alert(aString)'}
-
!
confirm: aString
- {'return window.confirm(aString)'}
-
!
prompt: aString
- ^self prompt: aString default: ''
-
!
prompt: aString default: anotherString
- {'return window.prompt(aString, anotherString)'}
-
!
update
- | canvas |
- canvas := HTMLCanvas new.
- canvas root: self root.
- self root asJQuery empty.
- self renderOn: canvas
-
! !
!Widget methodsFor: 'adding'!
appendToBrush: aTagBrush
- self appendToJQuery: aTagBrush asJQuery
-
!
appendToJQuery: aJQuery
- self render.
- aJQuery append: self root asJQuery
-
! !
!Widget methodsFor: 'rendering'!
render
- | canvas |
- canvas := HTMLCanvas new.
- root := canvas root.
- self renderOn: canvas
-
!
renderOn: html
- self
-
! !
TagBrush subclass: #CanvasBrush
instanceVariableNames: ''
category: 'Canvas'!
!CanvasBrush methodsFor: 'initialization'!
initializeWithCanvas: aCanvas
- canvas := aCanvas
! !
!CanvasBrush methodsFor: 'private'!
createElement
- {'return document.createElement(''canvas'')'}
! !
!CanvasBrush class methodsFor: 'instance creation'!
canvas: aCanvas
- ^self new
- initializeWithCanvas: aCanvas;
- yourself
! !
appendToBrush: aTagBrush
- aTagBrush append: self asString
-
!
appendToBrush: aTagBrush
- aTagBrush appendBlock: self
!
appendToBrush: aTagBrush
- aTagBrush appendString: self
-
!
|