LibHaru » History » Version 1
Koen Deforche, 11/12/2010 10:56 AM
1 | 1 | Koen Deforche | h1. LibHaru |
---|---|---|---|
2 | |||
3 | Wt requires the following patch for libHaru to render arcs correctly. This patch has been tested against libhar 2.1.0 and 2.2.0 |
||
4 | |||
5 | <pre> |
||
6 | --- libharu-2.1.0/src/hpdf_page_operator.c 2008-05-27 20:23:31.000000000 +0200 |
||
7 | +++ libharu-2.1.0-patched/src/hpdf_page_operator.c 2010-07-22 10:05:21.000000000 +0200 |
||
8 | @@ -2192,7 +2192,7 @@ |
||
9 | |||
10 | HPDF_PTRACE ((" HPDF_Page_Arc\n")); |
||
11 | |||
12 | - if (ang1 >= ang2 || (ang2 - ang1) >= 360) |
||
13 | + if (fabs(ang2 - ang1) >= 360) |
||
14 | HPDF_RaiseError (page->error, HPDF_PAGE_OUT_OF_RANGE, 0); |
||
15 | |||
16 | if (ret != HPDF_OK) |
||
17 | @@ -2205,10 +2205,10 @@ |
||
18 | |||
19 | |||
20 | for (;;) { |
||
21 | - if (ang2 - ang1 <= 90) |
||
22 | + if (fabs(ang2 - ang1) <= 90) |
||
23 | return InternalArc (page, x, y, ray, ang1, ang2, cont_flg); |
||
24 | else { |
||
25 | - HPDF_REAL tmp_ang = ang1 + 90; |
||
26 | + HPDF_REAL tmp_ang = (ang2 > ang1 ? ang1 + 90 : ang1 - 90); |
||
27 | |||
28 | if ((ret = InternalArc (page, x, y, ray, ang1, tmp_ang, cont_flg)) |
||
29 | != HPDF_OK) |
||
30 | @@ -2217,7 +2217,7 @@ |
||
31 | ang1 = tmp_ang; |
||
32 | } |
||
33 | |||
34 | - if (ang1 >= ang2) |
||
35 | + if (fabs(ang1 - ang2) < 0.1) |
||
36 | break; |
||
37 | |||
38 | cont_flg = HPDF_TRUE; |
||
39 | @@ -2280,7 +2280,11 @@ |
||
40 | pbuf = HPDF_FToA (pbuf, (HPDF_REAL)x0, eptr); |
||
41 | *pbuf++ = ' '; |
||
42 | pbuf = HPDF_FToA (pbuf, (HPDF_REAL)y0, eptr); |
||
43 | - pbuf = (char *)HPDF_StrCpy (pbuf, " m\012", eptr); |
||
44 | + |
||
45 | + if (attr->gmode == HPDF_GMODE_PATH_OBJECT) |
||
46 | + pbuf = (char *)HPDF_StrCpy (pbuf, " l\012", eptr); |
||
47 | + else |
||
48 | + pbuf = (char *)HPDF_StrCpy (pbuf, " m\012", eptr); |
||
49 | } |
||
50 | |||
51 | pbuf = HPDF_FToA (pbuf, (HPDF_REAL)x1, eptr); |
||
52 | </pre> |