BezierPath offset problem.
- 
					
					
					
					
 Hi, 
 I would like to translate a BezierPath, without changing it's bounds.Here is code where you can see my problem. newPage(2000,2000) # Grey Rectangle path0 = BezierPath() path0.rect(1000,10,200,1990) with savedState(): fill(0, 0.1) drawPath(path0) # Green Rectangle path1 = BezierPath() path1.text("1", fontSize=200) with savedState(): fill(0,1,0) rect(*path1.bounds()) drawPath(path1) # Red Rectangle path2 = BezierPath() path2.text("2", fontSize=200, offset=(200,300)) with savedState(): fill(1,0,0) rect(*path2.bounds()) drawPath(path2) # Yellow Rectangle path3 = BezierPath() path3.text("3", fontSize=200) path3.translate(100,800) with savedState(): fill(1,1,0) rect(*path3.bounds()) drawPath(path3) # Magenta Rectangle translate(900,800) path4 = BezierPath() path4.text("4", fontSize=200) with savedState(): fill(1,0,1) rect(*path4.bounds()) drawPath(path4)I tested 3 solution: - 
use offset in path.text 
  Change BezierPath bounds Change BezierPath bounds
- 
use path.translate 
  Change BezierPath bounds Change BezierPath bounds
- 
use translate 
  Don't change BezierPath bounds Don't change BezierPath bounds
 But this is annoying, because I don't want to translate all my canvas just for that. So what is the solution ? 
 
- 
- 
					
					
					
					
 I found a way. newPage(2000,2000) # Red Rectangle path2 = BezierPath() path2.text("2", fontSize=200, offset=(200,300)) with savedState(): fill(1,0,0) x = path2.getNSBezierPath().bounds().origin.x y = path2.getNSBezierPath().bounds().origin.y w = path2.getNSBezierPath().bounds().size.width h = path2.getNSBezierPath().bounds().size.height rect(x,y,w,h) drawPath(path2)I’m not sure if this is even allowed, maybe @frederik will take some reputation points away from me ;-). Also, I’m not sure if the way offset works is correct, or if it’s a bug. Personally, I would just wrap your fourth solution in a savedState() and accept all the translations of the canvas. I think that would be the DrawBot way. # Magenta Rectangle with savedState(): translate(900,800) path4 = BezierPath() path4.text("4", fontSize=200) with savedState(): fill(1,0,1) rect(*path4.bounds()) drawPath(path4)
 
- 
					
					
					
					
 the mistake here is that bounds are not structured as x,y,width,heightas required forrect(...)but asminx,miny,maxx,maxy.minx, miny, maxx, maxy = path.bounds() rect(minx, miny, maxx-minx, maxy-miny)
 
- 
					
					
					
					
 @frederik Thanks for this clarification ! 
 
 
			
		