<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Nov 3, 2014 at 11:33 PM, Graham Douglas <span dir="ltr"><<a href="mailto:graham.douglas@readytext.co.uk" target="_blank">graham.douglas@readytext.co.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi All<br>
<br>
I'm working with MPlib (version 1.801, compiled under Windows 7, 64 bit<br>
) and using mp_gr_copy_object(MP mp,mp_graphic_object*p) to create a way<br>
to cache graphics produced by MPlib (which is now working well, after<br>
the "fixes" below.).  I noticed that the mp_gr_copy_object(MP<br>
mp,mp_graphic_object*p) function (in psout.c) was not copying a number<br>
of key values into the new object --- such as ljoin, lcap colour<br>
information etc. My apologies if this has been fixed or, of course,<br>
there are good reasons that these values are not copied (or it is some<br>
other error on my part). Anyway, I thought I'd make a note of this just<br>
in case. I have highlighted the changes I made within psout.c<br>
<br>
Warm wishes<br>
Graham<br>
<br>
mp_graphic_object* mp_gr_copy_object(MP mp,mp_graphic_object*p)<br>
{<br>
<br>
.....<br>
<br>
switch(gr_type(p)){<br>
case mp_fill_code:<br>
tf= (mp_fill_object*)mp_new_graphic_object(mp,mp_fill_code);<br>
gr_pre_script(tf)= mp_xstrdup(mp,gr_pre_script((mp_fill_object*)p));<br>
gr_post_script(tf)= mp_xstrdup(mp,gr_post_script((mp_fill_object*)p));<br>
gr_path_p(tf)= mp_gr_copy_path(mp,gr_path_p((mp_fill_object*)p));<br>
gr_htap_p(tf)= mp_gr_copy_path(mp,gr_htap_p(p));<br>
gr_pen_p(tf)= mp_gr_copy_path(mp,gr_pen_p((mp_fill_object*)p));<br>
<br>
//=============================================<br>
//GMD Graham fixes ---------------------------------><br>
tf->ljoin = ((mp_fill_object*)p)->ljoin;<br>
tf->miterlim = ((mp_fill_object*)p)->miterlim;<br>
tf->color_model = ((mp_fill_object*)p)->color_model;<br>
tf->color.a_val = ((mp_fill_object*)p)->color.a_val;<br>
tf->color.b_val = ((mp_fill_object*)p)->color.b_val;<br>
tf->color.c_val = ((mp_fill_object*)p)->color.c_val;<br>
tf->color.d_val = ((mp_fill_object*)p)->color.d_val;<br>
//<-----------------------------------------------------------------<br>
//=============================================<br>
q= (mp_graphic_object*)tf;<br>
break;<br>
case mp_stroked_code:<br>
ts= (mp_stroked_object*)mp_new_graphic_object(mp,mp_stroked_code);<br>
gr_pre_script(ts)= mp_xstrdup(mp,gr_pre_script((mp_stroked_object*)p));<br>
gr_post_script(ts)= mp_xstrdup(mp,gr_post_script((mp_stroked_object*)p));<br>
gr_path_p(ts)= mp_gr_copy_path(mp,gr_path_p((mp_stroked_object*)p));<br>
gr_pen_p(ts)= mp_gr_copy_path(mp,gr_pen_p((mp_stroked_object*)p));<br>
gr_dash_p(ts)= mp_gr_copy_dashes(mp,gr_dash_p(p));<br>
<br>
//=============================================<br>
//GMD Graham fixes ---------------------------------><br>
ts->ljoin = ((mp_stroked_object*)p)->ljoin;<br>
ts->color_model = ((mp_stroked_object*)p)->color_model;<br>
ts->miterlim = ((mp_stroked_object*)p)->miterlim;<br>
ts->lcap = ((mp_stroked_object*)p)->lcap;<br>
ts->color_model = ((mp_stroked_object*)p)->color_model;<br>
ts->color.a_val = ((mp_stroked_object*)p)->color.a_val;<br>
ts->color.b_val = ((mp_stroked_object*)p)->color.b_val;<br>
ts->color.c_val = ((mp_stroked_object*)p)->color.c_val;<br>
ts->color.d_val = ((mp_stroked_object*)p)->color.d_val;<br>
//<-----------------------------------------------------------------<br>
//=============================================<br>
q= (mp_graphic_object*)ts;<br>
--<br>
<a href="http://tug.org/metapost/" target="_blank">http://tug.org/metapost/</a><br>
</blockquote></div><br><br clear="all"><div>Can you post a diff -u ?</div>-- <br><div class="gmail_signature">luigi<br></div>
</div></div>