@@ -80,6 +80,16 @@ function PaintTool:CreateCanvasPanel()
8080 -- Create new background canvas
8181 self .backgroundLayerCanvas = NewCanvas ( self .imageLayerCanvas .Width , self .imageLayerCanvas .Height )
8282
83+ local pixels = Sprite (MetaSprite (" emptymaskcolor" ).Sprites [1 ].Id )
84+
85+ -- TODO this is a hack, shouldn't have to subtract 1 from the pixel data
86+ for i = 1 , # pixels do
87+ pixels [i ] = pixels [i ] - 1
88+ end
89+
90+ self .backgroundLayerCanvas :SetStroke (0 , 0 )
91+ self .backgroundLayerCanvas :SetPattern (pixels , 8 , 8 )
92+
8393 self .gridCanvas = NewCanvas (self .viewportRect .Width , self .viewportRect .Height )
8494
8595 -- Invalidate the background so it renders
@@ -174,23 +184,6 @@ function PaintTool:CreateCanvasPanel()
174184
175185end
176186
177- function PaintTool :ChangeCanvasLayer (name )
178-
179- -- name = name or "image"
180-
181- -- print("Change layer", name)
182-
183- -- if(name == "image") then
184-
185- -- self.
186-
187- -- elseif(name == "tmp") then
188-
189- -- end
190-
191-
192- end
193-
194187function PaintTool :InvalidateCanvas (mergeTmpLayer )
195188 self .displayInvalid = true
196189 self :InvalidateGrid ()
@@ -530,7 +523,6 @@ function PaintTool:DrawCanvasPanel()
530523 self .selectedPixelData = nil
531524
532525 end
533-
534526
535527 -- Clear the selection state
536528 self .selectionState = " none"
@@ -610,38 +602,32 @@ function PaintTool:DrawCanvasPanel()
610602 end
611603
612604 -- Redraw the background of the canvas
613- -- self.backgroundLayerCanvas:Fill(15)
614- self .backgroundLayerCanvas :DrawPixels (self .viewportRect .X , self .viewportRect .Y , DrawMode .TilemapCache , self .scale , 0 , self . maskColor , 0 , self .scaledViewport )
615-
605+ if ( self .backgroundMode ~= 1 ) then
606+ self .backgroundLayerCanvas :DrawPixels (self .viewportRect .X , self .viewportRect .Y , DrawMode .TilemapCache , self .scale , 0 , 0 , 0 , self .scaledViewport , false )
607+ end
616608
617- -- print("self.mouseState", self.mouseState)
618-
619609 if (self .mergerTmpLayer == true and self .mouseState == " released" ) then
620610
621- -- print("Start Undo")
622611 -- -- TODO we can optimize this by passing in a rect for the area to merge
623612 srcCanvas :MergeCanvas (self .tmpLayerCanvas , 0 , true )
624613
625- -- print("End undo")
626- -- self.tmpLayerCanvas:Clear()
627614 self .mergerTmpLayer = false
628615
629- -- -- Invalidate the canvas and the selection
630- -- self:InvalidateUndo()
631-
632616 end
633617
618+ local tmpMaskId = 1
619+
634620 -- Draw the pixel data in the upper left hand corner of the tool's window
635- self .imageLayerCanvas :DrawPixels (self .viewportRect .X , self .viewportRect .Y , DrawMode .TilemapCache , self .scale , self . maskColor , - 1 , self .colorOffset , self .scaledViewport )
621+ self .imageLayerCanvas :DrawPixels (self .viewportRect .X , self .viewportRect .Y , DrawMode .TilemapCache , self .scale , tmpMaskId , 0 , self .colorOffset , self .scaledViewport , self . backgroundMode ~= 1 )
636622
637623 -- Only draw the flag layer when we need to
638624 if (self .pickerMode == FlagMode ) then
639- self .flagLayerCanvas :DrawPixels (self .viewportRect .X , self .viewportRect .Y , DrawMode .TilemapCache , self .scale , - 1 , self .emptyColorID , 0 , self .scaledViewport )
625+ self .flagLayerCanvas :DrawPixels (self .viewportRect .X , self .viewportRect .Y , DrawMode .TilemapCache , self .scale , 0 , self .emptyColorID , 0 , self .scaledViewport )
640626 end
641627
642628 -- Only draw the temp layer when we need to
643629 if (self .drawTmpLayer == true ) then
644- self .tmpLayerCanvas :DrawPixels (self .viewportRect .X , self .viewportRect .Y , DrawMode .TilemapCache , self .scale , - 1 , self .emptyColorID , self .colorOffset , self .scaledViewport )
630+ self .tmpLayerCanvas :DrawPixels (self .viewportRect .X , self .viewportRect .Y , DrawMode .TilemapCache , self .scale , 0 , self .emptyColorID , self .colorOffset , self .scaledViewport )
645631 end
646632
647633 -- if(self.showGrid == true) then
@@ -1310,21 +1296,25 @@ end
13101296function PaintTool :InvalidateBackground ()
13111297
13121298 -- Mode 1 will render the transparent canvas texture for the background
1313- if (self .backgroundMode == 1 ) then
1299+ -- if(self.backgroundMode == 1) then
1300+
1301+ -- print("Sprite", dump(Sprite(MetaSprite("emptymaskcolor").Sprites[1].Id)))
13141302
1315- -- self.backgroundLayerCanvas:SetStroke(0, 0)
1316- -- self.backgroundLayerCanvas:SetPattern(Sprite(MetaSprite("emptymaskcolor").Sprites[1].Id), 8, 8)
1317- -- self.backgroundLayerCanvas:DrawRectangle(0, 0, self.backgroundLayerCanvas.Width, self.backgroundLayerCanvas.Height, true)
1303+
1304+
13181305
13191306 -- Mode 2 will render the background color
1320- elseif (self .backgroundMode == 2 ) then
1307+ -- else
1308+ if (self .backgroundMode == 2 ) then
13211309
1322- self .backgroundLayerCanvas :Clear (self .backgroundColorId + self .colorOffset )
1310+ self .backgroundLayerCanvas :fill (self .backgroundColorId + self .colorOffset )
13231311
13241312 else
13251313
13261314 -- Use the mask color as the default background
1327- self .backgroundLayerCanvas :Clear (self .maskColor + self .colorOffset )
1315+ -- self.backgroundLayerCanvas:fill(self.colorOffset)
1316+
1317+ self .backgroundLayerCanvas :DrawRectangle (0 , 0 , self .backgroundLayerCanvas .Width , self .backgroundLayerCanvas .Height , true )
13281318
13291319 end
13301320
0 commit comments