Skip to content

Commit e4be607

Browse files
code807Matiiss
andauthored
Custom Guide Grid Color (#1170)
* Fix `Type not found : dn.Bresenham` (#1145) * Add custom guide grid color * fix guideColor error while loading old files --------- Co-authored-by: Matiiss <[email protected]>
1 parent 0eb6263 commit e4be607

File tree

4 files changed

+69
-14
lines changed

4 files changed

+69
-14
lines changed

app/assets/tpl/editLayerDefs.html

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,18 @@ <h2>
174174
<span>px</span>
175175
</dd>
176176

177+
<dt>
178+
<label for="guideColor">Guide grid color</label>
179+
<info>This color will be used for the optional secondary grid. If not specified, the secondary grid's color will be based on the project's background color.</info>
180+
</dt>
181+
<dd>
182+
<input type="color" name="guideColor" id="guideColor"/>
183+
<span>Opacity:</span>
184+
<input type="text" name="guideOpacity" class="small" id="guideOpacity"/>
185+
<span>%</span>
186+
<button class="transparent resetGuideColor small"> <span class="icon reset"></span> </button>
187+
</dd>
188+
177189
<dt>
178190
<label for="uiFilterTags">UI tags</label>
179191
<div class="info">These tags are used to filter elements from your layer list in the main editor panel.</div>

src/electron.renderer/data/def/LayerDef.hx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ class LayerDef {
1616
public var scaledGridSize(get,never) : Float; inline function get_scaledGridSize() return gridSize*getScale();
1717
public var guideGridWid : Int = 0;
1818
public var guideGridHei : Int = 0;
19+
public var guideColor : Null<dn.Col>;
20+
public var guideOpacity : Float = 0.33;
1921
public var displayOpacity : Float = 1.0;
2022
public var inactiveOpacity : Float = 1.0;
2123
public var hideInList = false;
@@ -101,6 +103,8 @@ class LayerDef {
101103
o.gridSize = JsonTools.readInt(json.gridSize, Project.DEFAULT_GRID_SIZE);
102104
o.guideGridWid = JsonTools.readInt(json.guideGridWid, 0);
103105
o.guideGridHei = JsonTools.readInt(json.guideGridHei, 0);
106+
o.guideColor = JsonTools.readColor(json.guideColor, true);
107+
o.guideOpacity = JsonTools.readFloat(json.guideOpacity, 0.33);
104108
o.displayOpacity = JsonTools.readFloat(json.displayOpacity, 1);
105109
o.inactiveOpacity = JsonTools.readFloat(json.inactiveOpacity, 1);
106110
o.uiColor = JsonTools.readColor(json.uiColor, true);
@@ -182,6 +186,8 @@ class LayerDef {
182186
gridSize: gridSize,
183187
guideGridWid: guideGridWid,
184188
guideGridHei: guideGridHei,
189+
guideColor: guideColor==null ? null : guideColor.toHex(),
190+
guideOpacity: JsonTools.writeFloat(guideOpacity),
185191
displayOpacity: JsonTools.writeFloat(displayOpacity),
186192
inactiveOpacity: JsonTools.writeFloat(inactiveOpacity),
187193
hideInList: hideInList,

src/electron.renderer/display/LevelRender.hx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -497,6 +497,8 @@ class LevelRender extends dn.Process {
497497
return;
498498

499499
var col = C.getPerceivedLuminosityInt( editor.project.bgColor) >= 0.8 ? 0x0 : 0xffffff;
500+
var guideCol = editor.curLayerDef.guideColor != null ? editor.curLayerDef.guideColor : col;
501+
var guideOpa = editor.curLayerDef.guideColor != null ? editor.curLayerDef.guideOpacity : 0.33;
500502

501503
var li = editor.curLayerInstance;
502504
var level = editor.curLevel;
@@ -527,7 +529,7 @@ class LevelRender extends dn.Process {
527529
// Guide grid (verticals)
528530
if( editor.curLayerDef.guideGridWid>1 ) {
529531
var size = li.def.guideGridWid;
530-
grid.lineStyle(1/camera.adjustedZoom, col, 0.33);
532+
grid.lineStyle(1/camera.adjustedZoom, guideCol, guideOpa);
531533

532534
var cWid = Std.int(editor.curLayerInstance.pxWid/size)+1;
533535

@@ -546,7 +548,7 @@ class LevelRender extends dn.Process {
546548
// Guide grid (horizontals)
547549
if( editor.curLayerDef.guideGridHei>1 ) {
548550
var size = li.def.guideGridHei;
549-
grid.lineStyle(1/camera.adjustedZoom, col, 0.33);
551+
grid.lineStyle(1/camera.adjustedZoom, guideCol, guideOpa);
550552

551553
var cHei = Std.int(editor.curLayerInstance.pxHei/size)+1;
552554

src/electron.renderer/ui/modal/panel/EditLayerDefs.hx

Lines changed: 47 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,53 @@ class EditLayerDefs extends ui.modal.Panel {
291291
editor.ge.emit( LayerDefChanged(cur.uid, false) );
292292
}).css("display", cur.uiColor==null ? "none" : "block");
293293

294+
// Guide
295+
var i = Input.linkToHtmlInput( cur.guideGridWid, jForms.find("input[name='guideGridWid']") );
296+
i.setBounds(0,Const.MAX_GRID_SIZE);
297+
i.onChange = editor.ge.emit.bind(LayerDefChanged(cur.uid, false));
298+
i.fixValue = v->return v<=1 ? 0 : v;
299+
i.setEmptyValue(0);
300+
301+
var i = Input.linkToHtmlInput( cur.guideGridHei, jForms.find("input[name='guideGridHei']") );
302+
i.setBounds(0,Const.MAX_GRID_SIZE);
303+
i.onChange = editor.ge.emit.bind(LayerDefChanged(cur.uid, false));
304+
i.fixValue = v->return v<=1 ? 0 : v;
305+
i.setEmptyValue(0);
306+
307+
var jCol = jForms.find("#guideColor");
308+
jCol.removeClass("null");
309+
if( cur.guideColor!=null )
310+
jCol.val(cur.guideColor.toHex());
311+
else {
312+
jCol.val("black");
313+
jCol.addClass("null");
314+
}
315+
jCol.change(_->{
316+
cur.guideColor = dn.Col.parseHex( jCol.val() );
317+
editor.ge.emit( LayerDefChanged(cur.uid, false) );
318+
});
319+
320+
jForms.find(".resetguideColor").click(_->{
321+
cur.guideColor = null;
322+
editor.ge.emit( LayerDefChanged(cur.uid, false) );
323+
}).css("display", cur.guideColor==null ? "none" : "block");
324+
325+
var jButton = jForms.find("#guideOpacity");
326+
var jSpans = jButton.siblings("span");
327+
if( cur.guideColor!=null ) {
328+
jButton.show();
329+
jSpans.show();
330+
}
331+
else{
332+
jButton.hide();
333+
jSpans.hide();
334+
}
335+
336+
var i = Input.linkToHtmlInput( cur.guideOpacity, jForms.find("#guideOpacity") );
337+
i.enablePercentageMode();
338+
i.setBounds(0.0, 1);
339+
i.onChange = editor.ge.emit.bind(LayerDefChanged(cur.uid, false));
340+
294341
// Grid
295342
var i = Input.linkToHtmlInput( cur.gridSize, jForms.find("input[name='gridSize']") );
296343
i.setBounds(1,Const.MAX_GRID_SIZE);
@@ -319,18 +366,6 @@ class EditLayerDefs extends ui.modal.Panel {
319366
}
320367
}
321368

322-
var i = Input.linkToHtmlInput( cur.guideGridWid, jForms.find("input[name='guideGridWid']") );
323-
i.setBounds(0,Const.MAX_GRID_SIZE);
324-
i.onChange = editor.ge.emit.bind(LayerDefChanged(cur.uid, false));
325-
i.fixValue = v->return v<=1 ? 0 : v;
326-
i.setEmptyValue(0);
327-
328-
var i = Input.linkToHtmlInput( cur.guideGridHei, jForms.find("input[name='guideGridHei']") );
329-
i.setBounds(0,Const.MAX_GRID_SIZE);
330-
i.onChange = editor.ge.emit.bind(LayerDefChanged(cur.uid, false));
331-
i.fixValue = v->return v<=1 ? 0 : v;
332-
i.setEmptyValue(0);
333-
334369
var i = Input.linkToHtmlInput( cur.displayOpacity, jForms.find("input[name='displayOpacity']") );
335370
i.enablePercentageMode();
336371
i.setBounds(0.1, 1);

0 commit comments

Comments
 (0)