LEFT | RIGHT |
(no file at all) | |
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ | 1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ |
2 /* cairo - a vector graphics library with display and print output | 2 /* cairo - a vector graphics library with display and print output |
3 * | 3 * |
4 * Copyright © 2004 Keith Packard | 4 * Copyright © 2004 Keith Packard |
5 * | 5 * |
6 * This program is free software; you can redistribute it and/or modify | 6 * This program is free software; you can redistribute it and/or modify |
7 * it under the terms of the GNU General Public License version 2 as | 7 * it under the terms of the GNU General Public License version 2 as |
8 * published by the Free Software Foundation; | 8 * published by the Free Software Foundation; |
9 * | 9 * |
10 * This program is distributed in the hope that it will be useful, | 10 * This program is distributed in the hope that it will be useful, |
(...skipping 23 matching lines...) Expand all Loading... |
34 #include "cairo-wideint-private.h" | 34 #include "cairo-wideint-private.h" |
35 | 35 |
36 /** | 36 /** |
37 * \file | 37 * \file |
38 * \ingroup highprec | 38 * \ingroup highprec |
39 * Implementation of the cairo_x functions which implement high precision arithm
etic. | 39 * Implementation of the cairo_x functions which implement high precision arithm
etic. |
40 */ | 40 */ |
41 | 41 |
42 #if HAVE_UINT64_T | 42 #if HAVE_UINT64_T |
43 | 43 |
44 const char * cairo_impl64 = "uint64_t"; | 44 NS3_EXPORT const char * cairo_impl64 = "uint64_t"; |
45 | 45 |
46 #define _cairo_uint32s_to_uint64(h,l) ((uint64_t) (h) << 32 | (l)) | 46 #define _cairo_uint32s_to_uint64(h,l) ((uint64_t) (h) << 32 | (l)) |
47 | 47 |
48 cairo_uquorem64_t | 48 cairo_uquorem64_t |
49 _cairo_uint64_divrem (cairo_uint64_t num, cairo_uint64_t den) | 49 _cairo_uint64_divrem (cairo_uint64_t num, cairo_uint64_t den) |
50 { | 50 { |
51 cairo_uquorem64_t qr; | 51 cairo_uquorem64_t qr; |
52 | 52 |
53 qr.quo = num / den; | 53 qr.quo = num / den; |
54 qr.rem = num % den; | 54 qr.rem = num % den; |
55 return qr; | 55 return qr; |
56 } | 56 } |
57 | 57 |
58 #else | 58 #else |
59 | 59 |
60 const char * cairo_impl64 = "uint32_t"; | 60 NS3_EXPORT const char * cairo_impl64 = "uint32_t"; |
61 | 61 |
62 cairo_uint64_t | 62 cairo_uint64_t |
63 _cairo_uint32_to_uint64 (uint32_t i) | 63 _cairo_uint32_to_uint64 (uint32_t i) |
64 { | 64 { |
65 cairo_uint64_t q; | 65 cairo_uint64_t q; |
66 | 66 |
67 q.lo = i; | 67 q.lo = i; |
68 q.hi = 0; | 68 q.hi = 0; |
69 return q; | 69 return q; |
70 } | 70 } |
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
318 qr.rem = uqr.rem; | 318 qr.rem = uqr.rem; |
319 if (num_neg != den_neg) | 319 if (num_neg != den_neg) |
320 qr.quo = (cairo_int64_t) _cairo_int64_negate ((cairo_int64_t)uqr.quo);
//PDB cast | 320 qr.quo = (cairo_int64_t) _cairo_int64_negate ((cairo_int64_t)uqr.quo);
//PDB cast |
321 else | 321 else |
322 qr.quo = (cairo_int64_t) uqr.quo; | 322 qr.quo = (cairo_int64_t) uqr.quo; |
323 return qr; | 323 return qr; |
324 } | 324 } |
325 | 325 |
326 #if HAVE_UINT128_T | 326 #if HAVE_UINT128_T |
327 | 327 |
328 const char * cairo_impl128 = "uint128_t"; | 328 NS3_EXPORT const char * cairo_impl128 = "uint128_t"; |
329 | 329 |
330 cairo_uquorem128_t | 330 cairo_uquorem128_t |
331 _cairo_uint128_divrem (cairo_uint128_t num, cairo_uint128_t den) | 331 _cairo_uint128_divrem (cairo_uint128_t num, cairo_uint128_t den) |
332 { | 332 { |
333 cairo_uquorem128_t qr; | 333 cairo_uquorem128_t qr; |
334 | 334 |
335 qr.quo = num / den; | 335 qr.quo = num / den; |
336 qr.rem = num % den; | 336 qr.rem = num % den; |
337 return qr; | 337 return qr; |
338 } | 338 } |
339 | 339 |
340 #else | 340 #else |
341 | 341 |
342 const char * cairo_impl128 = "cairo_uint64_t"; | 342 NS3_EXPORT const char * cairo_impl128 = "cairo_uint64_t"; |
343 | 343 |
344 cairo_uint128_t | 344 cairo_uint128_t |
345 _cairo_uint32_to_uint128 (uint32_t i) | 345 _cairo_uint32_to_uint128 (uint32_t i) |
346 { | 346 { |
347 cairo_uint128_t q; | 347 cairo_uint128_t q; |
348 | 348 |
349 q.lo = _cairo_uint32_to_uint64 (i); | 349 q.lo = _cairo_uint32_to_uint64 (i); |
350 q.hi = _cairo_uint32_to_uint64 (0); | 350 q.hi = _cairo_uint32_to_uint64 (0); |
351 return q; | 351 return q; |
352 } | 352 } |
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
815 if (num_neg) | 815 if (num_neg) |
816 qr.rem = _cairo_int64_negate ((cairo_int64_t)uqr.rem); //PDB cast | 816 qr.rem = _cairo_int64_negate ((cairo_int64_t)uqr.rem); //PDB cast |
817 else | 817 else |
818 qr.rem = uqr.rem; | 818 qr.rem = uqr.rem; |
819 if (num_neg != den_neg) | 819 if (num_neg != den_neg) |
820 qr.quo = _cairo_int64_negate ((cairo_int64_t)uqr.quo); //PDB cast | 820 qr.quo = _cairo_int64_negate ((cairo_int64_t)uqr.quo); //PDB cast |
821 else | 821 else |
822 qr.quo = uqr.quo; | 822 qr.quo = uqr.quo; |
823 return qr; | 823 return qr; |
824 } | 824 } |
LEFT | RIGHT |