@@ -291,14 +291,37 @@ export default (state: MainLayoutState, action: Action) => {
291291 if ( ! activeImage ) return state
292292 const { x , y } = action
293293
294- let newRegion
295294 if ( state . allowedArea ) {
295+ // TODO clamp x/y instead of giving up
296+ // TODO or image bounds
296297 const aa = state . allowedArea
297298 if ( x < aa . x || x > aa . x + aa . w || y < aa . y || y > aa . y + aa . h ) {
298299 return state
299300 }
300301 }
301302
303+ if ( state . mode ) {
304+ switch ( state . mode . mode ) {
305+ case "DRAW_POLYGON ": {
306+ const [ polygon , regionIndex ] = getRegion ( state . mode . regionId )
307+ if ( ! polygon ) break
308+ return setIn (
309+ state ,
310+ [ ...pathToActiveImage , "regions" , regionIndex ] ,
311+ { ...polygon , points : polygon . points . concat ( [ [ x , y ] ] ) }
312+ )
313+ }
314+ case "DRAW_EXPANDING_LINE ": {
315+ const [ expandingLine , regionIndex ] = getRegion ( state . mode . regionId )
316+ if ( ! expandingLine ) break
317+ return state
318+ }
319+ default :
320+ break
321+ }
322+ }
323+
324+ let newRegion
302325 let defaultRegionCls = undefined ,
303326 defaultRegionColor = "#ff0000"
304327 if ( activeImage && ( activeImage . regions || [ ] ) . length > 0 ) {
@@ -369,24 +392,26 @@ export default (state: MainLayoutState, action: Action) => {
369392 } )
370393 break
371394 }
372- default:
373- break
374- }
375-
376- if ( state . mode ) {
377- switch ( state . mode . mode ) {
378- case "DRAW_POLYGON ": {
379- const [ polygon , regionIndex ] = getRegion ( state . mode . regionId )
380- if ( ! polygon ) break
381- return setIn (
382- state ,
383- [ ...pathToActiveImage , "regions" , regionIndex ] ,
384- { ...polygon , points : polygon . points . concat ( [ [ x , y ] ] ) }
385- )
395+ case "create-expanding-line" : {
396+ state = saveToHistory ( state , "Create Expanding Line" )
397+ newRegion = {
398+ type : "expanding-line" ,
399+ unfinished : true ,
400+ points : [ { x, y, angle : null , width : null } ] ,
401+ open : true ,
402+ highlighted : true ,
403+ color : defaultRegionColor ,
404+ defaultRegionCls : defaultRegionCls ,
405+ id : getRandomId ( ) ,
386406 }
387- default :
388- break
407+ state = setIn ( state , [ "mode" ] , {
408+ mode : "DRAW_EXPANDING_LINE" ,
409+ regionId : newRegion . id ,
410+ } )
411+ break
389412 }
413+ default:
414+ break
390415 }
391416
392417 const regions = [ ...( getIn ( state , pathToActiveImage ) . regions || [ ] ) ]
0 commit comments