<div class="gmail_quote">Thanks for the interest.<div class="im"><blockquote class="gmail_quote" style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-width:1px;border-left-color:rgb(204, 204, 204);border-left-style:solid;padding-left:1ex">

Depending on the complexity of your drawing, you may find the following pages useful as a work-around.</blockquote></div><div>I would say that the drawings are pretty complex, usually consisting of approximately 20000+ lines/arcs.</div>
<div class="im">
<div><br></div><blockquote class="gmail_quote" style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-width:1px;border-left-color:rgb(204, 204, 204);border-left-style:solid;padding-left:1ex">

I am assuming you are using a C or Fortran program to convert some autocad drawing, such as an ADI file to the format you require.</blockquote></div><div>I haven't actually looked at the program that does the conversions, but I am being given data obtained from drawings made in autocad. What we have in our database are a series of .svf files. Where svf is a custom file extension which stands for scalable vector file (not to be confused with the more popular serial vector format), because as I understand it these were created before the existence (or at least widespread use) of SVG. These are essentially just text files which contain all of the data needed to recreate the drawing.</div>

<div><br></div><div>What I have begun to implement is a javascript program which parses through these files and creates a series of primitive type objects (lines, arcs, etc.) with their location and size stored. </div><div>

<br></div><div>I then put these objects in a shape array and go through the array calling each primitive types' individual draw method. Right now I have the Canvas draw methods done, but am working on implementing similar SVG ones as well.</div>

<div><br></div><div>For example a lines draw function would look something like this.</div><div><br></div><div>line.draw_canvas = function()</div><div>{</div><div>  moveTo(line.x1, line.y1);</div><div>  lineTo(line.x2, line.y2);</div>

<div>}</div><div><br></div><div>where this is being called in a function that looks something like this:</div><div><br></div><div>function drawBG() </div><div>{</div><div>  //setup code</div><div>  //</div><div>for(s in shapeArray)</div>

<div>  {</div><div>    shapeArray[s].draw_canvas();</div><div>  } </div><div>  //stroke all lines</div><div>  cxt.stroke();</div><div>}</div><div><br></div><div>Right now my concern is getting everything working but I will soon be looking at efficiency to decide which output (Canvas or SVG) will be pushed further. </div>
<div class="im">
<div><br></div><blockquote class="gmail_quote" style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-width:1px;border-left-color:rgb(204, 204, 204);border-left-style:solid;padding-left:1ex">

The functions can easily be made to specify a specific line</blockquote><blockquote class="gmail_quote" style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-width:1px;border-left-color:rgb(204, 204, 204);border-left-style:solid;padding-left:1ex">

thickness regardless of the scale.  </blockquote></div><div>From what I could tell from the source code of your last example you do something like what Ian said and adjust the line width as the scalefactor changes so that it appears to remain constant, but I could be wrong. For some reason when I first tried this method I couldn't get it to work out right, but can't quite remember the problem I was having.</div>

<div><br></div><div>And if anyone is interested the way that I currently plan to work around the limitatins of SVG not being able to draw 20000 "things" is drawing all the lines (the majority of most drawings) as one long path where line.draw_svg() will append a series of strings to the path with the strings looking something like:</div>

<div>"M " + line.x1 + " " + line.y1 + "L " + line.x2 + " " + line.y2</div><div><div></div><div class="h5"><div><br></div><div><br></div><div><br></div><div><div><br><div class="gmail_quote">
On Sat, Mar 13, 2010 at 4:27 AM, John S. Urban <span dir="ltr"><<a href="mailto:urbanjost@comcast.net" target="_blank">urbanjost@comcast.net</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I had a similiar problem. Depending on the complexity of your drawing, you may find the following pages useful<br>
as a work-around. I am assuming you are using a C or Fortran program to convert some autocad drawing, such<br>
as an ADI file to the format you require. The links show a simple library callable from C or Fortran that will create<br>
a vector file as a VML (For IE), HTML5 CANVAS, SVG, or PDF file. The key is that the CANVAS file is actually<br>
a JavaScript file that draws into a CANVAS element. The functions can easily be made to specify a specific line<br>
thickness regardless of the scale. A more advanced version of this theme, which I unfortunately am not able to make<br>
public, calls functions that create VML or CANVAS directives depending on which browser is being used, and<br>
allow for easy panning and zooming, and even allow you to select "layers" and write the data back out as simple text<br>
in a metafile that can be read back into a VOGLE program and put back out in another format. The graphics library<br>
can be found at:<br>
<a href="http://home.comcast.net/~urbanjost/enter.html" target="_blank">http://home.comcast.net/~urbanjost/enter.html</a> under "VOGLE" graphics (there is even a CALCOMP interface there,<br>
which AutoCad used to provide a skeleton program for, but I know longer know if they do. It is probably just interesting for historical reasons).<br>
An example output file can be found at:<br>
<a href="http://home.comcast.net/~urbanjost/canvas/vogle4.html" target="_blank">http://home.comcast.net/~urbanjost/canvas/vogle4.html</a><br>
If you are not comfortable with making programming changes to the driver to change the line thickness behavior, etc.<br>
this might not be of use. If you are, you will find the library is very portable. If you want to develop on a PC, I would<br>
recommend deactivating the X11 driver and using Cygwin for development if it is allowed (MinGW is a good alternative). This software was written before "hardware" text was available in CANVAS<br>
elements, and before a Fortran compiler was readily available that supported the C/Fortran interface now in the Fortran (f2003+) standard, but is has been used on Solaris/HPUX/Linux/*BSD/Cygwin/AIX/Ultrix/Tru64/... .<br>


<br>
I am not able to make the "browser" driver available (which has ECMAScript routines that write the multiple formats<br>
described above); but I hope a clear path is available if you look at "merging" the VML and SVG drivers into the<br>
CANVAS driver's functions. Note that I have not checked recently, but that VML worked fine in IE; but broke<br>
the other MSW products that read it (Word, in particular) if the drawing had more than a few thousand vectors. I am<br>
a fan of VML, but support has deteriorated significantly for it as far as I can see -- although I was initially thrilled to have a relatively open format that was importable into almost all MSW products.<br>
<br>
This approach (JavaScript/ECMAScript) let me handle CANVAS-related issues with text, dashed codes, zero-length vectors, different browser capabilities (much<br>
less of an issue now if you avoid IE -- the standard has now been implemented more consistently) , and so on.<br>
<br>
This is certainly not a "pure HTML5" solution, but it has worked out well for my needs. I haven't been heavily involved in working with engineering drawings since my ICEMDDN/Anvil days (It's likely you don't go back far enough to even recognize the references, I realize);  but I think this could work for you with some reasonable effort.  There was a day when the world thought<br>


all CAD/CAM  metafile problems were solved, what with IGES and CGM (anyone else remember those?)!<br>
<br>
<a href="http://home.comcast.net/~urbanjost/CANVAS/LINETHICKNESS/plot2.html" target="_blank">http://home.comcast.net/~urbanjost/CANVAS/LINETHICKNESS/plot2.html</a> shows a file that keeps line thickness<br>
constant (hand edited); "plot1.html" from the same location is the original file as written by the VOGLE library to give<br>
you a head start.<br>
<br>
----- Original Message ----- From: "Ian Hickson" <<a href="mailto:ian@hixie.ch" target="_blank">ian@hixie.ch</a>><br>
To: "Shaun Morris" <<a href="mailto:shaunwithanau@gmail.com" target="_blank">shaunwithanau@gmail.com</a>><br>
Cc: <<a href="mailto:help@lists.whatwg.org" target="_blank">help@lists.whatwg.org</a>><br>
Sent: Thursday, March 11, 2010 8:06 PM<br>
Subject: Re: [html5] Proposal for a hair width/line property when using <canvas> tag<br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div></div><div>
On Thu, 4 Feb 2010, Shaun Morris wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
I am working for a company who is currently trying to reproduce<br>
engineering drawings made in AutoCad within the canvas tag as a way to<br>
step away from the legacy way of doing it using Java and being stuck in<br>
IE.<br>
<br>
These drawings like many engineering drawings or mapping applications<br>
have to be scaled considerably and the current problem is that after<br>
scaling a line with a lineWidth of 1 after being scaled 5x's has a<br>
lineWidth of 5.<br>
</blockquote>
<br>
Yeah, currently this requires only using square zooms (not different x and<br>
y scaling factors) and "un"zooming the lineWidth accordingly.<br>
<br>
I've noted this idea for addition to <canvas> at a future date. I haven't<br>
added it yet, since browser vendors haven't caught up with what we _have_<br>
added yet! We don't want to get too far ahead of them.<br>
<br>
-- <br>
Ian Hickson               U+1047E                )\._.,--....,'``.    fL<br>
<a href="http://ln.hixie.ch/" target="_blank">http://ln.hixie.ch/</a>       U+263A                /,   _.. \   _\  ;`._ ,.<br>
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'<br></div></div>
_______________________________________________<br>
Help mailing list<br>
<a href="mailto:Help@lists.whatwg.org" target="_blank">Help@lists.whatwg.org</a><br>
<a href="http://lists.whatwg.org/listinfo.cgi/help-whatwg.org" target="_blank">http://lists.whatwg.org/listinfo.cgi/help-whatwg.org</a><br>
<br>
</blockquote>
<br>
</blockquote></div><br></div></div>
</div></div></div><br>