mirror of
https://github.com/xibyte/jsketcher
synced 2025-12-07 17:04:58 +01:00
make points always rendered on top of other objects
This commit is contained in:
parent
3eebe7ac02
commit
ae984c88d8
1 changed files with 32 additions and 12 deletions
|
|
@ -236,7 +236,7 @@ Viewer.prototype.refresh = function() {
|
|||
|
||||
Viewer.prototype.repaint = function() {
|
||||
|
||||
var ctx = this.ctx;
|
||||
const ctx = this.ctx;
|
||||
ctx.setTransform(1, 0, 0, 1, 0, 0);
|
||||
|
||||
ctx.fillStyle = "#808080";
|
||||
|
|
@ -247,22 +247,42 @@ Viewer.prototype.repaint = function() {
|
|||
ctx.transform(1, 0, 0, 1, this.translate.x , this.translate.y );
|
||||
ctx.transform(this.scale, 0, 0, this.scale, 0, 0);
|
||||
|
||||
var prevStyle = null;
|
||||
var style;
|
||||
for (var w = 0; w < this._workspace.length; w++) {
|
||||
var layers = this._workspace[w];
|
||||
for (var l = 0; l < layers.length; l++) {
|
||||
var layer = layers[l];
|
||||
for (var o = 0; o < layer.objects.length; o++) {
|
||||
var obj = layer.objects[o];
|
||||
style = obj.style != null ? obj.style : layer.style;
|
||||
if (style != prevStyle) draw_utils.SetStyle(style, ctx, this.scale / this.retinaPxielRatio);
|
||||
obj.draw(ctx, this.scale / this.retinaPxielRatio, this);
|
||||
let prevStyle = null;
|
||||
const draw = (layer, obj) => {
|
||||
let style = obj.style != null ? obj.style : layer.style;
|
||||
if (style != prevStyle) draw_utils.SetStyle(style, ctx, this.scale / this.retinaPxielRatio);
|
||||
obj.draw(ctx, this.scale / this.retinaPxielRatio, this);
|
||||
};
|
||||
let points = [];
|
||||
for (let w = 0; w < this._workspace.length; w++) {
|
||||
let layers = this._workspace[w];
|
||||
for (let l = 0; l < layers.length; l++) {
|
||||
points.length = 0;
|
||||
let layer = layers[l];
|
||||
for (let o = 0; o < layer.objects.length; o++) {
|
||||
let obj = layer.objects[o];
|
||||
draw(layer, obj);
|
||||
Viewer.collectPoints(obj, points);
|
||||
}
|
||||
//Repaint points one more time
|
||||
for (let point of points) {
|
||||
draw(layer, point);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Viewer.collectPoints = function(object, points) {
|
||||
if (object.acceptV){
|
||||
object.acceptV(true, (obj) => {
|
||||
if (obj._class === 'TCAD.TWO.EndPoint') {
|
||||
points.push(obj);
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
Viewer.prototype.snap = function(x, y, excl) {
|
||||
this.cleanSnap();
|
||||
var snapTo = this.search(x, y, 20 / this.scale, true, true, excl);
|
||||
|
|
|
|||
Loading…
Reference in a new issue