1: ================================================================================
  2: 
  3: Smalltalk.KSU defineClass: #ColorCMY
  4:     superclass: #{UI.ApplicationModel}
  5:     indexedType: #none
  6:     private: false
  7:     instanceVariableNames: 'cyanGauge magentaGauge yellowGauge '
  8:     classInstanceVariableNames: ''
  9:     imports: ''
 10:     category: 'KSU-Template'
 11: 
 12: ================================================================================
 13: 
 14: KSU.ColorCMY method for 'accessing'
 15: 
 16: color
 17: 
 18:     | aColor |
 19:     aColor := ColorValue
 20:                 cyan: (0 max: (self cyanGauge value min: 1))
 21:                 magenta: (0 max: (self magentaGauge value min: 1))
 22:                 yellow: (0 max: (self yellowGauge value min: 1)).
 23:     ^aColor
 24: 
 25: ------------------------------------------------------------
 26: 
 27: KSU.ColorCMY method for 'aspects'
 28: 
 29: cyanGauge
 30: 
 31:     cyanGauge
 32:         ifNil: 
 33:             [cyanGauge := 0.5 asValue.
 34:             cyanGauge compute: [:aValue | self updateColorCyan: aValue]].
 35:     ^cyanGauge
 36: 
 37: ------------------------------------------------------------
 38: 
 39: KSU.ColorCMY method for 'initialize-release'
 40: 
 41: initialize
 42: 
 43:     super initialize.
 44:     cyanGauge := nil.
 45:     magentaGauge := nil.
 46:     yellowGauge := nil.
 47:     ^self
 48: 
 49: ------------------------------------------------------------
 50: 
 51: KSU.ColorCMY method for 'aspects'
 52: 
 53: magentaGauge
 54: 
 55:     magentaGauge
 56:         ifNil: 
 57:             [magentaGauge := 0.5 asValue.
 58:             magentaGauge compute: [:aValue | self updateColorMagenta: aValue]].
 59:     ^magentaGauge
 60: 
 61: ------------------------------------------------------------
 62: 
 63: KSU.ColorCMY method for 'interface opening'
 64: 
 65: postOpenWith: aBuilder
 66: 
 67:     super postOpenWith: aBuilder.
 68:     self updateColor
 69: 
 70: ------------------------------------------------------------
 71: 
 72: KSU.ColorCMY method for 'private'
 73: 
 74: updateColor
 75: 
 76:     self builder
 77:         ifNotNil: 
 78:             [:aBuilder |
 79:             aBuilder window
 80:                 ifNotNil: 
 81:                     [:aWindow |
 82:                     aWindow
 83:                         background: self color;
 84:                         display]]
 85: 
 86: ------------------------------------------------------------
 87: 
 88: KSU.ColorCMY method for 'private'
 89: 
 90: updateColorCyan: aValue
 91: 
 92:     InputState default altDown
 93:         ifTrue: 
 94:             [self magentaGauge value = aValue ifFalse: [self magentaGauge value: aValue].
 95:             self yellowGauge value = aValue ifFalse: [self yellowGauge value: aValue]].
 96:     self updateColor
 97: 
 98: ------------------------------------------------------------
 99: 
100: KSU.ColorCMY method for 'private'
101: 
102: updateColorMagenta: aValue
103: 
104:     InputState default altDown
105:         ifTrue: 
106:             [self cyanGauge value = aValue ifFalse: [self cyanGauge value: aValue].
107:             self yellowGauge value = aValue ifFalse: [self yellowGauge value: aValue]].
108:     self updateColor
109: 
110: ------------------------------------------------------------
111: 
112: KSU.ColorCMY method for 'private'
113: 
114: updateColorYellow: aValue
115: 
116:     InputState default altDown
117:         ifTrue: 
118:             [self cyanGauge value = aValue ifFalse: [self cyanGauge value: aValue].
119:             self magentaGauge value = aValue ifFalse: [self magentaGauge value: aValue]].
120:     self updateColor
121: 
122: ------------------------------------------------------------
123: 
124: KSU.ColorCMY method for 'aspects'
125: 
126: yellowGauge
127: 
128:     yellowGauge
129:         ifNil: 
130:             [yellowGauge := 0.5 asValue.
131:             yellowGauge compute: [:aValue | self updateColorYellow: aValue]].
132:     ^yellowGauge
133: 
134: ================================================================================
135: 
136: KSU.ColorCMY class
137:     instanceVariableNames: ''
138: 
139: ================================================================================
140: 
141: KSU.ColorCMY class method for 'examples'
142: 
143: example1
144:     "KSU.ColorCMY example1."
145: 
146:     | anApplication |
147:     anApplication := KSU.ColorCMY new.
148:     anApplication open.
149:     ^anApplication
150: 
151: ------------------------------------------------------------
152: 
153: KSU.ColorCMY class method for 'resources'
154: 
155: menuBar
156:     "Tools.MenuEditor new openOnClass: self andSelector: #menuBar"
157: 
158:     <resource: #menu>
159:     ^#(#{UI.Menu} #(
160:             #(#{UI.MenuItem} 
161:                 #rawLabel: 'ファイル' 
162:                 #submenu: #(#{UI.Menu} #(
163:                         #(#{UI.MenuItem} 
164:                             #rawLabel: '終了' 
165:                             #value: #closeRequest ) ) #(1 ) nil ) ) ) #(1 ) nil ) decodeAsLiteralArray
166: 
167: ------------------------------------------------------------
168: 
169: KSU.ColorCMY class method for 'interface specs'
170: 
171: windowSpec
172:     "Tools.UIPainter new openOnClass: self andSelector: #windowSpec"
173: 
174:     <resource: #canvas>
175:     ^#(#{UI.FullSpec} 
176:         #window: 
177:         #(#{UI.WindowSpec} 
178:             #label: '減法混色' 
179:             #min: #(#{Core.Point} 512 160 ) 
180:             #max: #(#{Core.Point} 512 160 ) 
181:             #bounds: #(#{Graphics.Rectangle} 1023 719 1535 879 ) 
182:             #flags: 4 
183:             #menu: #menuBar ) 
184:         #component: 
185:         #(#{UI.SpecCollection} 
186:             #collection: #(
187:                 #(#{UI.LabelSpec} 
188:                     #layout: #(#{Core.Point} 24 17 ) 
189:                     #name: #cyanLabel 
190:                     #colors: 
191:                     #(#{UI.LookPreferences} 
192:                         #setBackgroundColor: #(#{Graphics.ColorValue} #pink ) ) 
193:                     #label: 'シアン :' ) 
194:                 #(#{UI.LabelSpec} 
195:                     #layout: #(#{Core.Point} 24 49 ) 
196:                     #name: #magentaLabel 
197:                     #colors: 
198:                     #(#{UI.LookPreferences} 
199:                         #setBackgroundColor: #(#{Graphics.ColorValue} 6143 8191 6143 ) ) 
200:                     #label: 'マゼンタ:' ) 
201:                 #(#{UI.LabelSpec} 
202:                     #layout: #(#{Core.Point} 24 81 ) 
203:                     #name: #yellowLabel 
204:                     #colors: 
205:                     #(#{UI.LookPreferences} 
206:                         #setBackgroundColor: #(#{Graphics.ColorValue} 6143 6143 8191 ) ) 
207:                     #label: 'イエロー:' ) 
208:                 #(#{UI.ProgressWidgetSpec} 
209:                     #layout: #(#{Graphics.Rectangle} 232 17 488 40 ) 
210:                     #name: #cyanPercent 
211:                     #isOpaque: true 
212:                     #model: #cyanGauge 
213:                     #direction: #horizontal 
214:                     #position: #topLeft 
215:                     #area: true 
216:                     #reverse: false ) 
217:                 #(#{UI.ProgressWidgetSpec} 
218:                     #layout: #(#{Graphics.Rectangle} 232 49 488 72 ) 
219:                     #name: #magentaPercent 
220:                     #isOpaque: true 
221:                     #model: #magentaGauge 
222:                     #direction: #horizontal 
223:                     #position: #topLeft 
224:                     #area: true 
225:                     #reverse: false ) 
226:                 #(#{UI.ProgressWidgetSpec} 
227:                     #layout: #(#{Graphics.Rectangle} 232 81 488 104 ) 
228:                     #name: #yellowPercent 
229:                     #isOpaque: true 
230:                     #model: #yellowGauge 
231:                     #direction: #horizontal 
232:                     #position: #topLeft 
233:                     #area: true 
234:                     #reverse: false ) 
235:                 #(#{UI.SpinButtonSpec} 
236:                     #layout: #(#{Graphics.Rectangle} 112 17 208 40 ) 
237:                     #name: #cyanGauge 
238:                     #colors: 
239:                     #(#{UI.LookPreferences} 
240:                         #setBackgroundColor: #(#{Graphics.ColorValue} 6143 8191 8191 ) 
241:                         #setSelectionBackgroundColor: #(#{Graphics.ColorValue} 6143 8191 8191 ) ) 
242:                     #model: #cyanGauge 
243:                     #tabable: false 
244:                     #alignment: #center 
245:                     #type: #number 
246:                     #low: 0 
247:                     #high: 1 
248:                     #interval: 0.01 ) 
249:                 #(#{UI.SpinButtonSpec} 
250:                     #layout: #(#{Graphics.Rectangle} 112 49 208 72 ) 
251:                     #name: #magentaGauge 
252:                     #colors: 
253:                     #(#{UI.LookPreferences} 
254:                         #setBackgroundColor: #(#{Graphics.ColorValue} 8191 6143 8191 ) 
255:                         #setSelectionBackgroundColor: #(#{Graphics.ColorValue} 8191 6143 8191 ) ) 
256:                     #model: #magentaGauge 
257:                     #tabable: false 
258:                     #alignment: #center 
259:                     #type: #number 
260:                     #low: 0 
261:                     #high: 1 
262:                     #interval: 0.01 ) 
263:                 #(#{UI.SpinButtonSpec} 
264:                     #layout: #(#{Graphics.Rectangle} 112 81 208 104 ) 
265:                     #name: #yellowGauge 
266:                     #colors: 
267:                     #(#{UI.LookPreferences} 
268:                         #setBackgroundColor: #(#{Graphics.ColorValue} 8191 8191 6143 ) 
269:                         #setSelectionBackgroundColor: #(#{Graphics.ColorValue} 8191 8191 6143 ) ) 
270:                     #model: #yellowGauge 
271:                     #tabable: false 
272:                     #alignment: #center 
273:                     #type: #number 
274:                     #low: 0 
275:                     #high: 1 
276:                     #interval: 0.01 ) ) ) )
277: 
278: ================================================================================

This document was generated by KSU.TextDoclet on 2012/11/10 at 10:40:36.