From: joncruz Date: Sat, 5 Jul 2008 05:11:28 +0000 (+0000) Subject: EOL fixups X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=e69f7d715a3db7f1fff1c8334714c8fab63852ab;p=inkscape.git EOL fixups --- diff --git a/src/display/bezier-utils-test.h b/src/display/bezier-utils-test.h index efed5ea4b..ec980810b 100644 --- a/src/display/bezier-utils-test.h +++ b/src/display/bezier-utils-test.h @@ -1,347 +1,347 @@ -#include - -#include -#include /* NR_DF_TEST_CLOSE */ -#include - -/* mental disclaims all responsibility for this evil idea for testing - static functions. The main disadvantages are that we retain the - #define's and `using' directives of the included file. */ -#include "bezier-utils.cpp" - -using NR::Point; - -/* (Returns false if NaN encountered.) */ -static bool range_approx_equal(double const a[], double const b[], unsigned const len) { - for (unsigned i = 0; i < len; ++i) { - if (!( fabs( a[i] - b[i] ) < 1e-4 )) { - return false; - } - } - return true; -} - -static inline bool point_approx_equal(NR::Point const &a, NR::Point const &b, double const eps) -{ - using NR::X; using NR::Y; - return ( NR_DF_TEST_CLOSE(a[X], b[X], eps) && - NR_DF_TEST_CLOSE(a[Y], b[Y], eps) ); -} - -static inline double square(double const x) { - return x * x; -} - -/** Determine whether the found control points are the same as previously found on some developer's - machine. Doesn't call utest__fail, just writes a message to stdout for diagnostic purposes: - the most important test is that the root-mean-square of errors in the estimation are low rather - than that the control points found are the same. -**/ -static void compare_ctlpts(Point const est_b[], Point const exp_est_b[]) -{ - unsigned diff_mask = 0; - for (unsigned i = 0; i < 4; ++i) { - for (unsigned d = 0; d < 2; ++d) { - if ( fabs( est_b[i][d] - exp_est_b[i][d] ) > 1.1e-5 ) { - diff_mask |= 1 << ( i * 2 + d ); - } - } - } - if ( diff_mask != 0 ) { - std::stringstream msg; - msg << "Got different control points from previously-coded (diffs=0x" << std::hex << diff_mask << "\n"; - msg << " Previous:"; - for (unsigned i = 0; i < 4; ++i) { - msg << " (" << exp_est_b[i][0] << ", " << exp_est_b[i][1] << ")"; // localizing ok - } - msg << "\n"; - msg << " Found: "; - for (unsigned i = 0; i < 4; ++i) { - msg << " (" << est_b[i][0] << ", " << est_b[i][1] << ")"; // localizing ok - } - msg << "\n"; - TS_WARN(msg.str().c_str()); - } -} - -static void compare_rms(Point const est_b[], double const t[], Point const d[], unsigned const n, - double const exp_rms_error) -{ - double sum_errsq = 0.0; - for (unsigned i = 0; i < n; ++i) { - Point const fit_pt = bezier_pt(3, est_b, t[i]); - Point const diff = fit_pt - d[i]; - sum_errsq += dot(diff, diff); - } - double const rms_error = sqrt( sum_errsq / n ); - TS_ASSERT_LESS_THAN_EQUALS( rms_error , exp_rms_error + 1.1e-6 ); - if ( rms_error < exp_rms_error - 1.1e-6 ) { - /* The fitter code appears to have improved [or the floating point calculations differ - on this machine from the machine where exp_rms_error was calculated]. */ - char msg[200]; - sprintf(msg, "N.B. rms_error regression requirement can be decreased: have rms_error=%g.", rms_error); // localizing ok - TS_TRACE(msg); - } -} - -class BezierUtilsTest : public CxxTest::TestSuite { -public: - static Point const c[4]; - static double const t[24]; - static unsigned const n; - Point d[24]; - static Point const src_b[4]; - static Point const tHat1; - static Point const tHat2; - - BezierUtilsTest() - { - /* Feed it some points that can be fit exactly with a single bezier segment, and see how - well it manages. */ - for (unsigned i = 0; i < n; ++i) { - d[i] = bezier_pt(3, src_b, t[i]); - } - } - virtual ~BezierUtilsTest() {} - - void testCopyWithoutNansOrAdjacentDuplicates() - { - NR::Point const src[] = { - Point(2., 3.), - Point(2., 3.), - Point(0., 0.), - Point(2., 3.), - Point(2., 3.), - Point(1., 9.), - Point(1., 9.) - }; - Point const exp_dest[] = { - Point(2., 3.), - Point(0., 0.), - Point(2., 3.), - Point(1., 9.) - }; - g_assert( G_N_ELEMENTS(src) == 7 ); - Point dest[7]; - struct tst { - unsigned src_ix0; - unsigned src_len; - unsigned exp_dest_ix0; - unsigned exp_dest_len; - } const test_data[] = { - /* src start ix, src len, exp_dest start ix, exp dest len */ - {0, 0, 0, 0}, - {2, 1, 1, 1}, - {0, 1, 0, 1}, - {0, 2, 0, 1}, - {0, 3, 0, 2}, - {1, 3, 0, 3}, - {0, 5, 0, 3}, - {0, 6, 0, 4}, - {0, 7, 0, 4} - }; - for (unsigned i = 0 ; i < G_N_ELEMENTS(test_data) ; ++i) { - tst const &t = test_data[i]; - TS_ASSERT_EQUALS( t.exp_dest_len, - copy_without_nans_or_adjacent_duplicates(src + t.src_ix0, - t.src_len, - dest) ); - TS_ASSERT_SAME_DATA(dest, - exp_dest + t.exp_dest_ix0, - t.exp_dest_len); - } - } - - void testBezierPt1() - { - Point const a[] = {Point(2.0, 4.0), - Point(1.0, 8.0)}; - TS_ASSERT_EQUALS( bezier_pt(1, a, 0.0) , a[0] ); - TS_ASSERT_EQUALS( bezier_pt(1, a, 1.0) , a[1] ); - TS_ASSERT_EQUALS( bezier_pt(1, a, 0.5) , Point(1.5, 6.0) ); - double const t[] = {0.5, 0.25, 0.3, 0.6}; - for (unsigned i = 0; i < G_N_ELEMENTS(t); ++i) { - double const ti = t[i], si = 1.0 - ti; - TS_ASSERT_EQUALS( bezier_pt(1, a, ti) , si * a[0] + ti * a[1] ); - } - } - - void testBezierPt2() - { - Point const b[] = {Point(1.0, 2.0), - Point(8.0, 4.0), - Point(3.0, 1.0)}; - TS_ASSERT_EQUALS( bezier_pt(2, b, 0.0) , b[0] ); - TS_ASSERT_EQUALS( bezier_pt(2, b, 1.0) , b[2] ); - TS_ASSERT_EQUALS( bezier_pt(2, b, 0.5) , Point(5.0, 2.75) ); - double const t[] = {0.5, 0.25, 0.3, 0.6}; - for (unsigned i = 0; i < G_N_ELEMENTS(t); ++i) { - double const ti = t[i], si = 1.0 - ti; - Point const exp_pt( si*si * b[0] + 2*si*ti * b[1] + ti*ti * b[2] ); - Point const pt(bezier_pt(2, b, ti)); - TS_ASSERT(point_approx_equal(pt, exp_pt, 1e-11)); - } - } - - void testBezierPt3() - { - TS_ASSERT_EQUALS( bezier_pt(3, c, 0.0) , c[0] ); - TS_ASSERT_EQUALS( bezier_pt(3, c, 1.0) , c[3] ); - TS_ASSERT_EQUALS( bezier_pt(3, c, 0.5) , Point(4.0, 13.0/8.0) ); - double const t[] = {0.5, 0.25, 0.3, 0.6}; - for (unsigned i = 0; i < G_N_ELEMENTS(t); ++i) { - double const ti = t[i], si = 1.0 - ti; - TS_ASSERT( LInfty( bezier_pt(3, c, ti) - - ( si*si*si * c[0] + - 3*si*si*ti * c[1] + - 3*si*ti*ti * c[2] + - ti*ti*ti * c[3] ) ) - < 1e-4 ); - } - } - - void testComputeMaxErrorRatio() - { - struct Err_tst { - Point pt; - double u; - double err; - } const err_tst[] = { - {c[0], 0.0, 0.0}, - {Point(4.0, 13.0/8.0), 0.5, 0.0}, - {Point(4.0, 2.0), 0.5, 9.0/64.0}, - {Point(3.0, 2.0), 0.5, 1.0 + 9.0/64.0}, - {Point(6.0, 2.0), 0.5, 4.0 + 9.0/64.0}, - {c[3], 1.0, 0.0}, - }; - Point d[G_N_ELEMENTS(err_tst)]; - double u[G_N_ELEMENTS(err_tst)]; - for (unsigned i = 0; i < G_N_ELEMENTS(err_tst); ++i) { - Err_tst const &t = err_tst[i]; - d[i] = t.pt; - u[i] = t.u; - } - g_assert( G_N_ELEMENTS(u) == G_N_ELEMENTS(d) ); - unsigned max_ix = ~0u; - double const err_ratio = compute_max_error_ratio(d, u, G_N_ELEMENTS(d), c, 1.0, &max_ix); - TS_ASSERT_LESS_THAN( fabs( sqrt(err_tst[4].err) - err_ratio ) , 1e-12 ); - TS_ASSERT_EQUALS( max_ix , 4 ); - } - - void testChordLengthParameterize() - { - /* n == 2 */ - { - Point const d[] = {Point(2.9415, -5.8149), - Point(23.021, 4.9814)}; - double u[G_N_ELEMENTS(d)]; - double const exp_u[] = {0.0, 1.0}; - g_assert( G_N_ELEMENTS(u) == G_N_ELEMENTS(exp_u) ); - chord_length_parameterize(d, u, G_N_ELEMENTS(d)); - TS_ASSERT_SAME_DATA(u, exp_u, G_N_ELEMENTS(exp_u)); - } - - /* Straight line. */ - { - double const exp_u[] = {0.0, 0.1829, 0.2105, 0.2105, 0.619, 0.815, 0.999, 1.0}; - unsigned const n = G_N_ELEMENTS(exp_u); - Point d[n]; - double u[n]; - Point const a(-23.985, 4.915), b(4.9127, 5.203); - for (unsigned i = 0; i < n; ++i) { - double bi = exp_u[i], ai = 1.0 - bi; - d[i] = ai * a + bi * b; - } - chord_length_parameterize(d, u, n); - TS_ASSERT(range_approx_equal(u, exp_u, n)); - } - } - - void testGenerateBezier() - { - Point est_b[4]; - generate_bezier(est_b, d, t, n, tHat1, tHat2, 1.0); - - compare_ctlpts(est_b, src_b); - - /* We're being unfair here in using our t[] rather than best t[] for est_b: we - may over-estimate RMS of errors. */ - compare_rms(est_b, t, d, n, 1e-8); - } - - void testSpBezierFitCubicFull() - { - Point est_b[4]; - int splitpoints[2]; - gint const succ = sp_bezier_fit_cubic_full(est_b, splitpoints, d, n, tHat1, tHat2, square(1.2), 1); - TS_ASSERT_EQUALS( succ , 1 ); - - Point const exp_est_b[4] = { - Point(5.000000, -3.000000), - Point(7.5753, -0.4247), - Point(4.77533, 1.22467), - Point(3, 3) - }; - compare_ctlpts(est_b, exp_est_b); - - /* We're being unfair here in using our t[] rather than best t[] for est_b: we - may over-estimate RMS of errors. */ - compare_rms(est_b, t, d, n, .307911); - } - - void testSpBezierFitCubic() - { - Point est_b[4]; - gint const succ = sp_bezier_fit_cubic(est_b, d, n, square(1.2)); - TS_ASSERT_EQUALS( succ , 1 ); - - Point const exp_est_b[4] = { - Point(5.000000, -3.000000), - Point(7.57134, -0.423509), - Point(4.77929, 1.22426), - Point(3, 3) - }; - compare_ctlpts(est_b, exp_est_b); - -#if 1 /* A change has been made to right_tangent. I believe that usually this change - will result in better fitting, but it won't do as well for this example where - we happen to be feeding a t=0.999 point to the fitter. */ - TS_WARN("TODO: Update this test case for revised right_tangent implementation."); - /* In particular, have a test case to show whether the new implementation - really is likely to be better on average. */ -#else - /* We're being unfair here in using our t[] rather than best t[] for est_b: we - may over-estimate RMS of errors. */ - compare_rms(est_b, t, d, n, .307983); -#endif - } -}; - -// This is not very neat, but since we know this header is only included by the generated CxxTest file it shouldn't give any problems -Point const BezierUtilsTest::c[4] = { - Point(1.0, 2.0), - Point(8.0, 4.0), - Point(3.0, 1.0), - Point(-2.0, -4.0)}; -double const BezierUtilsTest::t[24] = { - 0.0, .001, .03, .05, .09, .13, .18, .25, .29, .33, .39, .44, - .51, .57, .62, .69, .75, .81, .91, .93, .97, .98, .999, 1.0}; -unsigned const BezierUtilsTest::n = G_N_ELEMENTS(BezierUtilsTest::t); -Point const BezierUtilsTest::src_b[4] = { - Point(5., -3.), - Point(8., 0.), - Point(4., 2.), - Point(3., 3.)}; -Point const BezierUtilsTest::tHat1(unit_vector( BezierUtilsTest::src_b[1] - BezierUtilsTest::src_b[0] )); -Point const BezierUtilsTest::tHat2(unit_vector( BezierUtilsTest::src_b[2] - BezierUtilsTest::src_b[3] )); - -/* - Local Variables: - mode:c++ - c-file-style:"stroustrup" - c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) - indent-tabs-mode:nil - fill-column:99 - End: -*/ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : +#include + +#include +#include /* NR_DF_TEST_CLOSE */ +#include + +/* mental disclaims all responsibility for this evil idea for testing + static functions. The main disadvantages are that we retain the + #define's and `using' directives of the included file. */ +#include "bezier-utils.cpp" + +using NR::Point; + +/* (Returns false if NaN encountered.) */ +static bool range_approx_equal(double const a[], double const b[], unsigned const len) { + for (unsigned i = 0; i < len; ++i) { + if (!( fabs( a[i] - b[i] ) < 1e-4 )) { + return false; + } + } + return true; +} + +static inline bool point_approx_equal(NR::Point const &a, NR::Point const &b, double const eps) +{ + using NR::X; using NR::Y; + return ( NR_DF_TEST_CLOSE(a[X], b[X], eps) && + NR_DF_TEST_CLOSE(a[Y], b[Y], eps) ); +} + +static inline double square(double const x) { + return x * x; +} + +/** Determine whether the found control points are the same as previously found on some developer's + machine. Doesn't call utest__fail, just writes a message to stdout for diagnostic purposes: + the most important test is that the root-mean-square of errors in the estimation are low rather + than that the control points found are the same. +**/ +static void compare_ctlpts(Point const est_b[], Point const exp_est_b[]) +{ + unsigned diff_mask = 0; + for (unsigned i = 0; i < 4; ++i) { + for (unsigned d = 0; d < 2; ++d) { + if ( fabs( est_b[i][d] - exp_est_b[i][d] ) > 1.1e-5 ) { + diff_mask |= 1 << ( i * 2 + d ); + } + } + } + if ( diff_mask != 0 ) { + std::stringstream msg; + msg << "Got different control points from previously-coded (diffs=0x" << std::hex << diff_mask << "\n"; + msg << " Previous:"; + for (unsigned i = 0; i < 4; ++i) { + msg << " (" << exp_est_b[i][0] << ", " << exp_est_b[i][1] << ")"; // localizing ok + } + msg << "\n"; + msg << " Found: "; + for (unsigned i = 0; i < 4; ++i) { + msg << " (" << est_b[i][0] << ", " << est_b[i][1] << ")"; // localizing ok + } + msg << "\n"; + TS_WARN(msg.str().c_str()); + } +} + +static void compare_rms(Point const est_b[], double const t[], Point const d[], unsigned const n, + double const exp_rms_error) +{ + double sum_errsq = 0.0; + for (unsigned i = 0; i < n; ++i) { + Point const fit_pt = bezier_pt(3, est_b, t[i]); + Point const diff = fit_pt - d[i]; + sum_errsq += dot(diff, diff); + } + double const rms_error = sqrt( sum_errsq / n ); + TS_ASSERT_LESS_THAN_EQUALS( rms_error , exp_rms_error + 1.1e-6 ); + if ( rms_error < exp_rms_error - 1.1e-6 ) { + /* The fitter code appears to have improved [or the floating point calculations differ + on this machine from the machine where exp_rms_error was calculated]. */ + char msg[200]; + sprintf(msg, "N.B. rms_error regression requirement can be decreased: have rms_error=%g.", rms_error); // localizing ok + TS_TRACE(msg); + } +} + +class BezierUtilsTest : public CxxTest::TestSuite { +public: + static Point const c[4]; + static double const t[24]; + static unsigned const n; + Point d[24]; + static Point const src_b[4]; + static Point const tHat1; + static Point const tHat2; + + BezierUtilsTest() + { + /* Feed it some points that can be fit exactly with a single bezier segment, and see how + well it manages. */ + for (unsigned i = 0; i < n; ++i) { + d[i] = bezier_pt(3, src_b, t[i]); + } + } + virtual ~BezierUtilsTest() {} + + void testCopyWithoutNansOrAdjacentDuplicates() + { + NR::Point const src[] = { + Point(2., 3.), + Point(2., 3.), + Point(0., 0.), + Point(2., 3.), + Point(2., 3.), + Point(1., 9.), + Point(1., 9.) + }; + Point const exp_dest[] = { + Point(2., 3.), + Point(0., 0.), + Point(2., 3.), + Point(1., 9.) + }; + g_assert( G_N_ELEMENTS(src) == 7 ); + Point dest[7]; + struct tst { + unsigned src_ix0; + unsigned src_len; + unsigned exp_dest_ix0; + unsigned exp_dest_len; + } const test_data[] = { + /* src start ix, src len, exp_dest start ix, exp dest len */ + {0, 0, 0, 0}, + {2, 1, 1, 1}, + {0, 1, 0, 1}, + {0, 2, 0, 1}, + {0, 3, 0, 2}, + {1, 3, 0, 3}, + {0, 5, 0, 3}, + {0, 6, 0, 4}, + {0, 7, 0, 4} + }; + for (unsigned i = 0 ; i < G_N_ELEMENTS(test_data) ; ++i) { + tst const &t = test_data[i]; + TS_ASSERT_EQUALS( t.exp_dest_len, + copy_without_nans_or_adjacent_duplicates(src + t.src_ix0, + t.src_len, + dest) ); + TS_ASSERT_SAME_DATA(dest, + exp_dest + t.exp_dest_ix0, + t.exp_dest_len); + } + } + + void testBezierPt1() + { + Point const a[] = {Point(2.0, 4.0), + Point(1.0, 8.0)}; + TS_ASSERT_EQUALS( bezier_pt(1, a, 0.0) , a[0] ); + TS_ASSERT_EQUALS( bezier_pt(1, a, 1.0) , a[1] ); + TS_ASSERT_EQUALS( bezier_pt(1, a, 0.5) , Point(1.5, 6.0) ); + double const t[] = {0.5, 0.25, 0.3, 0.6}; + for (unsigned i = 0; i < G_N_ELEMENTS(t); ++i) { + double const ti = t[i], si = 1.0 - ti; + TS_ASSERT_EQUALS( bezier_pt(1, a, ti) , si * a[0] + ti * a[1] ); + } + } + + void testBezierPt2() + { + Point const b[] = {Point(1.0, 2.0), + Point(8.0, 4.0), + Point(3.0, 1.0)}; + TS_ASSERT_EQUALS( bezier_pt(2, b, 0.0) , b[0] ); + TS_ASSERT_EQUALS( bezier_pt(2, b, 1.0) , b[2] ); + TS_ASSERT_EQUALS( bezier_pt(2, b, 0.5) , Point(5.0, 2.75) ); + double const t[] = {0.5, 0.25, 0.3, 0.6}; + for (unsigned i = 0; i < G_N_ELEMENTS(t); ++i) { + double const ti = t[i], si = 1.0 - ti; + Point const exp_pt( si*si * b[0] + 2*si*ti * b[1] + ti*ti * b[2] ); + Point const pt(bezier_pt(2, b, ti)); + TS_ASSERT(point_approx_equal(pt, exp_pt, 1e-11)); + } + } + + void testBezierPt3() + { + TS_ASSERT_EQUALS( bezier_pt(3, c, 0.0) , c[0] ); + TS_ASSERT_EQUALS( bezier_pt(3, c, 1.0) , c[3] ); + TS_ASSERT_EQUALS( bezier_pt(3, c, 0.5) , Point(4.0, 13.0/8.0) ); + double const t[] = {0.5, 0.25, 0.3, 0.6}; + for (unsigned i = 0; i < G_N_ELEMENTS(t); ++i) { + double const ti = t[i], si = 1.0 - ti; + TS_ASSERT( LInfty( bezier_pt(3, c, ti) + - ( si*si*si * c[0] + + 3*si*si*ti * c[1] + + 3*si*ti*ti * c[2] + + ti*ti*ti * c[3] ) ) + < 1e-4 ); + } + } + + void testComputeMaxErrorRatio() + { + struct Err_tst { + Point pt; + double u; + double err; + } const err_tst[] = { + {c[0], 0.0, 0.0}, + {Point(4.0, 13.0/8.0), 0.5, 0.0}, + {Point(4.0, 2.0), 0.5, 9.0/64.0}, + {Point(3.0, 2.0), 0.5, 1.0 + 9.0/64.0}, + {Point(6.0, 2.0), 0.5, 4.0 + 9.0/64.0}, + {c[3], 1.0, 0.0}, + }; + Point d[G_N_ELEMENTS(err_tst)]; + double u[G_N_ELEMENTS(err_tst)]; + for (unsigned i = 0; i < G_N_ELEMENTS(err_tst); ++i) { + Err_tst const &t = err_tst[i]; + d[i] = t.pt; + u[i] = t.u; + } + g_assert( G_N_ELEMENTS(u) == G_N_ELEMENTS(d) ); + unsigned max_ix = ~0u; + double const err_ratio = compute_max_error_ratio(d, u, G_N_ELEMENTS(d), c, 1.0, &max_ix); + TS_ASSERT_LESS_THAN( fabs( sqrt(err_tst[4].err) - err_ratio ) , 1e-12 ); + TS_ASSERT_EQUALS( max_ix , 4 ); + } + + void testChordLengthParameterize() + { + /* n == 2 */ + { + Point const d[] = {Point(2.9415, -5.8149), + Point(23.021, 4.9814)}; + double u[G_N_ELEMENTS(d)]; + double const exp_u[] = {0.0, 1.0}; + g_assert( G_N_ELEMENTS(u) == G_N_ELEMENTS(exp_u) ); + chord_length_parameterize(d, u, G_N_ELEMENTS(d)); + TS_ASSERT_SAME_DATA(u, exp_u, G_N_ELEMENTS(exp_u)); + } + + /* Straight line. */ + { + double const exp_u[] = {0.0, 0.1829, 0.2105, 0.2105, 0.619, 0.815, 0.999, 1.0}; + unsigned const n = G_N_ELEMENTS(exp_u); + Point d[n]; + double u[n]; + Point const a(-23.985, 4.915), b(4.9127, 5.203); + for (unsigned i = 0; i < n; ++i) { + double bi = exp_u[i], ai = 1.0 - bi; + d[i] = ai * a + bi * b; + } + chord_length_parameterize(d, u, n); + TS_ASSERT(range_approx_equal(u, exp_u, n)); + } + } + + void testGenerateBezier() + { + Point est_b[4]; + generate_bezier(est_b, d, t, n, tHat1, tHat2, 1.0); + + compare_ctlpts(est_b, src_b); + + /* We're being unfair here in using our t[] rather than best t[] for est_b: we + may over-estimate RMS of errors. */ + compare_rms(est_b, t, d, n, 1e-8); + } + + void testSpBezierFitCubicFull() + { + Point est_b[4]; + int splitpoints[2]; + gint const succ = sp_bezier_fit_cubic_full(est_b, splitpoints, d, n, tHat1, tHat2, square(1.2), 1); + TS_ASSERT_EQUALS( succ , 1 ); + + Point const exp_est_b[4] = { + Point(5.000000, -3.000000), + Point(7.5753, -0.4247), + Point(4.77533, 1.22467), + Point(3, 3) + }; + compare_ctlpts(est_b, exp_est_b); + + /* We're being unfair here in using our t[] rather than best t[] for est_b: we + may over-estimate RMS of errors. */ + compare_rms(est_b, t, d, n, .307911); + } + + void testSpBezierFitCubic() + { + Point est_b[4]; + gint const succ = sp_bezier_fit_cubic(est_b, d, n, square(1.2)); + TS_ASSERT_EQUALS( succ , 1 ); + + Point const exp_est_b[4] = { + Point(5.000000, -3.000000), + Point(7.57134, -0.423509), + Point(4.77929, 1.22426), + Point(3, 3) + }; + compare_ctlpts(est_b, exp_est_b); + +#if 1 /* A change has been made to right_tangent. I believe that usually this change + will result in better fitting, but it won't do as well for this example where + we happen to be feeding a t=0.999 point to the fitter. */ + TS_WARN("TODO: Update this test case for revised right_tangent implementation."); + /* In particular, have a test case to show whether the new implementation + really is likely to be better on average. */ +#else + /* We're being unfair here in using our t[] rather than best t[] for est_b: we + may over-estimate RMS of errors. */ + compare_rms(est_b, t, d, n, .307983); +#endif + } +}; + +// This is not very neat, but since we know this header is only included by the generated CxxTest file it shouldn't give any problems +Point const BezierUtilsTest::c[4] = { + Point(1.0, 2.0), + Point(8.0, 4.0), + Point(3.0, 1.0), + Point(-2.0, -4.0)}; +double const BezierUtilsTest::t[24] = { + 0.0, .001, .03, .05, .09, .13, .18, .25, .29, .33, .39, .44, + .51, .57, .62, .69, .75, .81, .91, .93, .97, .98, .999, 1.0}; +unsigned const BezierUtilsTest::n = G_N_ELEMENTS(BezierUtilsTest::t); +Point const BezierUtilsTest::src_b[4] = { + Point(5., -3.), + Point(8., 0.), + Point(4., 2.), + Point(3., 3.)}; +Point const BezierUtilsTest::tHat1(unit_vector( BezierUtilsTest::src_b[1] - BezierUtilsTest::src_b[0] )); +Point const BezierUtilsTest::tHat2(unit_vector( BezierUtilsTest::src_b[2] - BezierUtilsTest::src_b[3] )); + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : diff --git a/src/dom/domptr.h b/src/dom/domptr.h index bf54deaa2..aaf1220f3 100644 --- a/src/dom/domptr.h +++ b/src/dom/domptr.h @@ -1,337 +1,337 @@ -#ifndef __DOMPTR_H__ -#define __DOMPTR_H__ -/** - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - * - * More thorough explanations of the various classes and their algorithms - * can be found there. - * - * - * Authors: - * Bob Jamison - * - * Copyright (C) 2006-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * ======================================================================= - * NOTES: - * - * Notice that many of the classes defined here are pure virtual. In other - * words, they are purely unimplemented interfaces. For the implementations - * of them, look in domimpl.h and domimpl.cpp. - * - * Also, note that there is a domptr.cpp file that has a couple of necessary - * functions which cannot be in a .h file - * - */ - -#include - -namespace org -{ -namespace w3c -{ -namespace dom -{ - - - -/*######################################################################### -## NodePtr -#########################################################################*/ - -/** - * A simple Smart Pointer class that handles Nodes and all of its - * descendants. This is very similar to shared_ptr, but it is customized - * to handle our needs. - */ -template class Ptr -{ -public: - - /** - * Simple constructor - */ - Ptr() - { _ref = 0; } - - /** - * Constructor upon a reference - */ - template Ptr(const Ptr &other) - { - _ref = other._ref; - incrementRefCount(_ref); - } - - /** - * Constructor upon a reference - */ - Ptr(T * refArg, bool addRef = true) - { - _ref = refArg; - if(addRef) - incrementRefCount(_ref); - } - - - /** - * Copy constructor - */ - Ptr(const Ptr &other) - { - _ref = other._ref; - incrementRefCount(_ref); - } - - /** - * Destructor - */ - virtual ~Ptr() - { - decrementRefCount(_ref); - } - - - /** - * Assignment operator - */ - template Ptr &operator=(const Ptr &other) - { - decrementRefCount(_ref); - _ref = other._ref; - incrementRefCount(_ref); - return *this; - } - - /** - * Assignment operator - */ - Ptr &operator=(const Ptr &other) - { - decrementRefCount(_ref); - _ref = other._ref; - incrementRefCount(_ref); - return *this; - } - - /** - * Assignment operator - */ - template Ptr &operator=(Y * ref) - { - decrementRefCount(_ref); - _ref = ref; - incrementRefCount(_ref); - return *this; - } - - /** - * Assignment operator - */ - template Ptr &operator=(const Y * ref) - { - decrementRefCount(_ref); - _ref = (Y *) ref; - incrementRefCount(_ref); - return *this; - } - - /** - * Return the reference - */ - T * get() const - { - return _ref; - } - - /** - * Dereference operator - */ - T &operator*() const - { - return *_ref; - } - - /** - * Point-to operator - */ - T *operator->() const - { - return _ref; - } - - /** - * NOT bool operator. How to check if we are null without a comparison - */ - bool operator! () const - { - return (_ref == 0); - } - - /** - * Swap what I reference with the other guy - */ - void swap(Ptr &other) - { - T *tmp = _ref; - _ref = other._ref; - other._ref = tmp; - } - - //The referenced item - T *_ref; -}; - - -/** - * Global definitions. Many of these are used to mimic behaviour of - * a real pointer - */ - -/** - * Equality - */ -template inline bool - operator==(const Ptr &a, const Ptr &b) -{ - return a.get() == b.get(); -} - -/** - * Inequality - */ -template inline bool - operator!=(const Ptr &a, const Ptr &b) -{ - return a.get() != b.get(); -} - -/** - * Equality - */ -template inline bool - operator==(const Ptr &a, T * b) -{ - return a.get() == b; -} - -/** - * Inequality - */ -template inline bool - operator!=(const Ptr &a, T * b) -{ - return a.get() != b; -} - -/** - * Equality - */ -template inline bool - operator==(T * a, const Ptr &b) -{ - return a == b.get(); -} - -/** - * Inequality - */ -template inline bool - operator!=(T * a, const Ptr &b) -{ - return a != b.get(); -} - - -/** - * Less than - */ -template inline bool - operator<(const Ptr &a, const Ptr &b) -{ - return std::less()(a.get(), b.get()); -} - -/** - * Swap - */ -template void - swap(Ptr &a, Ptr &b) -{ - a.swap(b); -} - - -/** - * Get the pointer globally, for - */ -template T * - get_pointer(const Ptr &p) -{ - return p.get(); -} - -/** - * Static cast - */ -template Ptr - static_pointer_cast(const Ptr &p) -{ - return static_cast(p.get()); -} - -/** - * Const cast - */ -template Ptr - const_pointer_cast(const Ptr &p) -{ - return const_cast(p.get()); -} - -/** - * Dynamic cast - */ -template Ptr - dynamic_pointer_cast(const Ptr &p) -{ - return dynamic_cast(p.get()); -} - - - -} //namespace dom -} //namespace w3c -} //namespace org - - -#endif // __DOMPTR_H__ - - -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - - - - +#ifndef __DOMPTR_H__ +#define __DOMPTR_H__ +/** + * Phoebe DOM Implementation. + * + * This is a C++ approximation of the W3C DOM model, which follows + * fairly closely the specifications in the various .idl files, copies of + * which are provided for reference. Most important is this one: + * + * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html + * + * More thorough explanations of the various classes and their algorithms + * can be found there. + * + * + * Authors: + * Bob Jamison + * + * Copyright (C) 2006-2008 Bob Jamison + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * ======================================================================= + * NOTES: + * + * Notice that many of the classes defined here are pure virtual. In other + * words, they are purely unimplemented interfaces. For the implementations + * of them, look in domimpl.h and domimpl.cpp. + * + * Also, note that there is a domptr.cpp file that has a couple of necessary + * functions which cannot be in a .h file + * + */ + +#include + +namespace org +{ +namespace w3c +{ +namespace dom +{ + + + +/*######################################################################### +## NodePtr +#########################################################################*/ + +/** + * A simple Smart Pointer class that handles Nodes and all of its + * descendants. This is very similar to shared_ptr, but it is customized + * to handle our needs. + */ +template class Ptr +{ +public: + + /** + * Simple constructor + */ + Ptr() + { _ref = 0; } + + /** + * Constructor upon a reference + */ + template Ptr(const Ptr &other) + { + _ref = other._ref; + incrementRefCount(_ref); + } + + /** + * Constructor upon a reference + */ + Ptr(T * refArg, bool addRef = true) + { + _ref = refArg; + if(addRef) + incrementRefCount(_ref); + } + + + /** + * Copy constructor + */ + Ptr(const Ptr &other) + { + _ref = other._ref; + incrementRefCount(_ref); + } + + /** + * Destructor + */ + virtual ~Ptr() + { + decrementRefCount(_ref); + } + + + /** + * Assignment operator + */ + template Ptr &operator=(const Ptr &other) + { + decrementRefCount(_ref); + _ref = other._ref; + incrementRefCount(_ref); + return *this; + } + + /** + * Assignment operator + */ + Ptr &operator=(const Ptr &other) + { + decrementRefCount(_ref); + _ref = other._ref; + incrementRefCount(_ref); + return *this; + } + + /** + * Assignment operator + */ + template Ptr &operator=(Y * ref) + { + decrementRefCount(_ref); + _ref = ref; + incrementRefCount(_ref); + return *this; + } + + /** + * Assignment operator + */ + template Ptr &operator=(const Y * ref) + { + decrementRefCount(_ref); + _ref = (Y *) ref; + incrementRefCount(_ref); + return *this; + } + + /** + * Return the reference + */ + T * get() const + { + return _ref; + } + + /** + * Dereference operator + */ + T &operator*() const + { + return *_ref; + } + + /** + * Point-to operator + */ + T *operator->() const + { + return _ref; + } + + /** + * NOT bool operator. How to check if we are null without a comparison + */ + bool operator! () const + { + return (_ref == 0); + } + + /** + * Swap what I reference with the other guy + */ + void swap(Ptr &other) + { + T *tmp = _ref; + _ref = other._ref; + other._ref = tmp; + } + + //The referenced item + T *_ref; +}; + + +/** + * Global definitions. Many of these are used to mimic behaviour of + * a real pointer + */ + +/** + * Equality + */ +template inline bool + operator==(const Ptr &a, const Ptr &b) +{ + return a.get() == b.get(); +} + +/** + * Inequality + */ +template inline bool + operator!=(const Ptr &a, const Ptr &b) +{ + return a.get() != b.get(); +} + +/** + * Equality + */ +template inline bool + operator==(const Ptr &a, T * b) +{ + return a.get() == b; +} + +/** + * Inequality + */ +template inline bool + operator!=(const Ptr &a, T * b) +{ + return a.get() != b; +} + +/** + * Equality + */ +template inline bool + operator==(T * a, const Ptr &b) +{ + return a == b.get(); +} + +/** + * Inequality + */ +template inline bool + operator!=(T * a, const Ptr &b) +{ + return a != b.get(); +} + + +/** + * Less than + */ +template inline bool + operator<(const Ptr &a, const Ptr &b) +{ + return std::less()(a.get(), b.get()); +} + +/** + * Swap + */ +template void + swap(Ptr &a, Ptr &b) +{ + a.swap(b); +} + + +/** + * Get the pointer globally, for + */ +template T * + get_pointer(const Ptr &p) +{ + return p.get(); +} + +/** + * Static cast + */ +template Ptr + static_pointer_cast(const Ptr &p) +{ + return static_cast(p.get()); +} + +/** + * Const cast + */ +template Ptr + const_pointer_cast(const Ptr &p) +{ + return const_cast(p.get()); +} + +/** + * Dynamic cast + */ +template Ptr + dynamic_pointer_cast(const Ptr &p) +{ + return dynamic_cast(p.get()); +} + + + +} //namespace dom +} //namespace w3c +} //namespace org + + +#endif // __DOMPTR_H__ + + +/*######################################################################### +## E N D O F F I L E +#########################################################################*/ + + + + diff --git a/src/dom/svg2.h b/src/dom/svg2.h index 150325106..b1a42e8aa 100644 --- a/src/dom/svg2.h +++ b/src/dom/svg2.h @@ -1,5558 +1,5558 @@ -#ifndef __SVG_H__ -#define __SVG_H__ - -/** - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - * - * Authors: - * Bob Jamison - * - * Copyright(C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or(at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * ======================================================================= - * NOTES - * - * This API follows: - * http://www.w3.org/TR/SVG11/svgdom.html - * - * This file defines the main SVG-DOM Node types. Other non-Node types are - * defined in svgtypes.h. - * - */ - - -// For access to DOM2 core -#include "dom/dom.h" - -// For access to DOM2 events -#include "dom/events.h" - -// For access to those parts from DOM2 CSS OM used by SVG DOM. -#include "dom/css.h" - -// For access to those parts from DOM2 Views OM used by SVG DOM. -#include "dom/views.h" - -// For access to the SMIL OM used by SVG DOM. -#include "dom/smil.h" - - -#include - -#define SVG_NAMESPACE "http://www.w3.org/2000/svg" - - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace svg -{ - - -//local definitions -typedef dom::DOMString DOMString; -typedef dom::DOMException DOMException; -typedef dom::Element Element; -typedef dom::ElementPtr ElementPtr; -typedef dom::Document Document; -typedef dom::DocumentPtr DocumentPtr; -typedef dom::NodeList NodeList; - - - - -class SVGElement; -typedef Ptr SVGElementPtr; -class SVGUseElement; -typedef Ptr SVGUseElementPtr; -class SVGDocument; -typedef Ptr SVGDocumentPtr; - -/*######################################################################### -## SVGException -#########################################################################*/ - -/** - * - */ -class SVGException -{ -public: - - /** - * SVGExceptionCode - */ - typedef enum - { - SVG_WRONG_TYPE_ERR = 0, - SVG_INVALID_VALUE_ERR = 1, - SVG_MATRIX_NOT_INVERTABLE = 2 - } SVGExceptionCode; - - unsigned short code; -}; - - - - - - - -//######################################################################## -//######################################################################## -//# V A L U E S -//######################################################################## -//######################################################################## - - - - - -/*######################################################################### -## SVGAngle -#########################################################################*/ - -/** - * - */ -class SVGAngle -{ -public: - - /** - * Angle Unit Types - */ - typedef enum - { - SVG_ANGLETYPE_UNKNOWN = 0, - SVG_ANGLETYPE_UNSPECIFIED = 1, - SVG_ANGLETYPE_DEG = 2, - SVG_ANGLETYPE_RAD = 3, - SVG_ANGLETYPE_GRAD = 4 - } AngleUnitType; - - /** - * - */ - unsigned short getUnitType(); - - /** - * - */ - double getValue(); - - /** - * - */ - void setValue(double val) throw(DOMException); - - /** - * - */ - double getValueInSpecifiedUnits(); - - /** - * - */ - void setValueInSpecifiedUnits(double /*val*/) - throw(DOMException); - - /** - * - */ - DOMString getValueAsString(); - - /** - * - */ - void setValueAsString(const DOMString &/*val*/) - throw(DOMException); - - /** - * - */ - void newValueSpecifiedUnits(unsigned short /*unitType*/, - double /*valueInSpecifiedUnits*/); - - /** - * - */ - void convertToSpecifiedUnits(unsigned short /*unitType*/); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGAngle(); - - /** - * - */ - SVGAngle(const SVGAngle &other); - - /** - * - */ - ~SVGAngle(); - -protected: - - int unitType; - - double value; - -}; - - -/*######################################################################### -## SVGLength -#########################################################################*/ - -/** - * - */ -class SVGLength -{ -public: - - /** - * Length Unit Types - */ - typedef enum - { - SVG_LENGTHTYPE_UNKNOWN = 0, - SVG_LENGTHTYPE_NUMBER = 1, - SVG_LENGTHTYPE_PERCENTAGE = 2, - SVG_LENGTHTYPE_EMS = 3, - SVG_LENGTHTYPE_EXS = 4, - SVG_LENGTHTYPE_PX = 5, - SVG_LENGTHTYPE_CM = 6, - SVG_LENGTHTYPE_MM = 7, - SVG_LENGTHTYPE_IN = 8, - SVG_LENGTHTYPE_PT = 9, - SVG_LENGTHTYPE_PC = 10 - } LengthUnitType; - - /** - * - */ - unsigned short getUnitType(); - - /** - * - */ - double getValue(); - - /** - * - */ - void setValue(double val) throw(DOMException); - - /** - * - */ - double getValueInSpecifiedUnits(); - - /** - * - */ - void setValueInSpecifiedUnits(double /*val*/) throw(DOMException); - - /** - * - */ - DOMString getValueAsString(); - - /** - * - */ - void setValueAsString(const DOMString& /*val*/) throw(DOMException); - - /** - * - */ - void newValueSpecifiedUnits(unsigned short /*unitType*/, double /*val*/); - - /** - * - */ - void convertToSpecifiedUnits(unsigned short /*unitType*/); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGLength(); - - /** - * - */ - SVGLength(const SVGLength &other); - - /** - * - */ - ~SVGLength(); - -protected: - - int unitType; - - double value; - -}; - -/*######################################################################### -## SVGMatrix -#########################################################################*/ - -/** - * In SVG, a Matrix is defined like this: - * - * | a c e | - * | b d f | - * | 0 0 1 | - * - */ -class SVGMatrix -{ -public: - - - /** - * - */ - double getA(); - - /** - * - */ - void setA(double val) throw(DOMException); - - /** - * - */ - double getB(); - - /** - * - */ - void setB(double val) throw(DOMException); - - /** - * - */ - double getC(); - - /** - * - */ - void setC(double val) throw(DOMException); - - /** - * - */ - double getD(); - - /** - * - */ - void setD(double val) throw(DOMException); - - /** - * - */ - double getE(); - - /** - * - */ - void setE(double val) throw(DOMException); - - /** - * - */ - double getF(); - - /** - * - */ - void setF(double val) throw(DOMException); - - - /** - * Return the result of postmultiplying this matrix with another. - */ - SVGMatrix multiply(const SVGMatrix &other); - - /** - * Calculate the inverse of this matrix - * - * - * The determinant of a 3x3 matrix E - * (let's use our own notation for a bit) - * - * A B C - * D E F - * G H I - * is - * AEI - AFH - BDI + BFG + CDH - CEG - * - * Since in our affine transforms, G and H==0 and I==1, - * this reduces to: - * AE - BD - * In SVG's naming scheme, that is: a * d - c * b . SIMPLE! - * - * In a similar method of attack, SVG's adjunct matrix is: - * - * d -c cf-ed - * -b a eb-af - * 0 0 ad-cb - * - * To get the inverse matrix, we divide the adjunct matrix by - * the determinant. Notice that(ad-cb)/(ad-cb)==1. Very cool. - * So what we end up with is this: - * - * a = d/(ad-cb) c = -c/(ad-cb) e =(cf-ed)/(ad-cb) - * b = -b/(ad-cb) d = a/(ad-cb) f =(eb-af)/(ad-cb) - * - * (Since this would be in all SVG-DOM implementations, - * somebody needed to document this! ^^) - * - */ - SVGMatrix inverse() throw(SVGException); - - /** - * Equivalent to multiplying by: - * | 1 0 x | - * | 0 1 y | - * | 0 0 1 | - * - */ - SVGMatrix translate(double x, double y); - - /** - * Equivalent to multiplying by: - * | scale 0 0 | - * | 0 scale 0 | - * | 0 0 1 | - * - */ - SVGMatrix scale(double scale); - - /** - * Equivalent to multiplying by: - * | scaleX 0 0 | - * | 0 scaleY 0 | - * | 0 0 1 | - * - */ - SVGMatrix scaleNonUniform(double scaleX, double scaleY); - - /** - * Equivalent to multiplying by: - * | cos(a) -sin(a) 0 | - * | sin(a) cos(a) 0 | - * | 0 0 1 | - * - */ - SVGMatrix rotate(double angle); - - /** - * Equivalent to multiplying by: - * | cos(a) -sin(a) 0 | - * | sin(a) cos(a) 0 | - * | 0 0 1 | - * In this case, angle 'a' is computed as the artangent - * of the slope y/x . It is negative if the slope is negative. - */ - SVGMatrix rotateFromVector(double x, double y) throw(SVGException); - - /** - * Equivalent to multiplying by: - * | -1 0 0 | - * | 0 1 0 | - * | 0 0 1 | - * - */ - SVGMatrix flipX(); - - /** - * Equivalent to multiplying by: - * | 1 0 0 | - * | 0 -1 0 | - * | 0 0 1 | - * - */ - SVGMatrix flipY(); - - /** - * | 1 tan(a) 0 | - * | 0 1 0 | - * | 0 0 1 | - * - */ - SVGMatrix skewX(double angle); - - /** - * Equivalent to multiplying by: - * | 1 0 0 | - * | tan(a) 1 0 | - * | 0 0 1 | - * - */ - SVGMatrix skewY(double angle); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGMatrix(); - - /** - * - */ - SVGMatrix(double aArg, double bArg, double cArg, - double dArg, double eArg, double fArg); - - /** - * Copy constructor - */ - SVGMatrix(const SVGMatrix &other); - - /** - * - */ - ~SVGMatrix() {} - -protected: - -friend class SVGTransform; - - /* - * Set to the identify matrix - */ - void identity(); - - double a, b, c, d, e, f; - -}; - - -/*######################################################################### -## SVGNumber -#########################################################################*/ - -/** - * - */ -class SVGNumber -{ -public: - - /** - * - */ - double getValue(); - - /** - * - */ - void setValue(double val) throw(DOMException); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGNumber(); - - /** - * - */ - SVGNumber(const SVGNumber &other); - - /** - * - */ - ~SVGNumber(); - -protected: - - double value; - -}; - -/*######################################################################### -## SVGPoint -#########################################################################*/ - -/** - * - */ -class SVGPoint -{ -public: - - /** - * - */ - double getX(); - - /** - * - */ - void setX(double val) throw(DOMException); - - /** - * - */ - double getY(); - - /** - * - */ - void setY(double val) throw(DOMException); - - /** - * - */ - SVGPoint matrixTransform(const SVGMatrix &/*matrix*/); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPoint(); - - /** - * - */ - SVGPoint(const SVGPoint &other); - - /** - * - */ - ~SVGPoint(); - -protected: - - double x, y; -}; - - -/*######################################################################### -## SVGPathSeg -#########################################################################*/ - -/** - * - */ -class SVGPathSeg -{ -public: - - /** - * Path Segment Types - */ - typedef enum - { - PATHSEG_UNKNOWN = 0, - PATHSEG_CLOSEPATH = 1, - PATHSEG_MOVETO_ABS = 2, - PATHSEG_MOVETO_REL = 3, - PATHSEG_LINETO_ABS = 4, - PATHSEG_LINETO_REL = 5, - PATHSEG_CURVETO_CUBIC_ABS = 6, - PATHSEG_CURVETO_CUBIC_REL = 7, - PATHSEG_CURVETO_QUADRATIC_ABS = 8, - PATHSEG_CURVETO_QUADRATIC_REL = 9, - PATHSEG_ARC_ABS = 10, - PATHSEG_ARC_REL = 11, - PATHSEG_LINETO_HORIZONTAL_ABS = 12, - PATHSEG_LINETO_HORIZONTAL_REL = 13, - PATHSEG_LINETO_VERTICAL_ABS = 14, - PATHSEG_LINETO_VERTICAL_REL = 15, - PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16, - PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17, - PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18, - PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19 - } PathSegmentType; - - /** - * - */ - unsigned short getPathSegType(); - - /** - * - */ - DOMString getPathSegTypeAsLetter(); - - /** - * From the various subclasses - */ - - /** - * - */ - double getX(); - - /** - * - */ - void setX(double val) throw(DOMException); - - /** - * - */ - double getX1(); - - /** - * - */ - void setX1(double val) throw(DOMException); - - /** - * - */ - double getX2(); - - /** - * - */ - void setX2(double val) throw(DOMException); - - /** - * - */ - double getY(); - - /** - * - */ - void setY(double val) throw(DOMException); - - /** - * - */ - double getY1(); - - /** - * - */ - void setY1(double val) throw(DOMException); - - /** - * - */ - double getY2(); - - /** - * - */ - void setY2(double val) throw(DOMException); - - /** - * - */ - double getR1(); - - /** - * - */ - void setR1(double val) throw(DOMException); - - /** - * - */ - double getR2(); - - /** - * - */ - void setR2(double val) throw(DOMException); - - /** - * - */ - double getAngle(); - - /** - * - */ - void setAngle(double val) throw(DOMException); - - /** - * - */ - bool getLargeArcFlag(); - - /** - * - */ - void setLargeArcFlag(bool val) throw(DOMException); - - /** - * - */ - bool getSweepFlag(); - - /** - * - */ - void setSweepFlag(bool val) throw(DOMException); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPathSeg(); - - /** - * - */ - SVGPathSeg(int typeArg); - - /** - * - */ - SVGPathSeg(const SVGPathSeg &other); - - /** - * - */ - SVGPathSeg &operator=(const SVGPathSeg &other); - - /** - * - */ - ~SVGPathSeg(); - -protected: - - void init(); - - void assign(const SVGPathSeg &other); - - int type; - double x, y, x1, y1, x2, y2; - double r1, r2; - double angle; - bool largeArcFlag; - bool sweepFlag; -}; - - -/*######################################################################### -## SVGPreserveAspectRatio -#########################################################################*/ - -/** - * - */ -class SVGPreserveAspectRatio -{ -public: - - - /** - * Alignment Types - */ - typedef enum - { - SVG_PRESERVEASPECTRATIO_UNKNOWN = 0, - SVG_PRESERVEASPECTRATIO_NONE = 1, - SVG_PRESERVEASPECTRATIO_XMINYMIN = 2, - SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3, - SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4, - SVG_PRESERVEASPECTRATIO_XMINYMID = 5, - SVG_PRESERVEASPECTRATIO_XMIDYMID = 6, - SVG_PRESERVEASPECTRATIO_XMAXYMID = 7, - SVG_PRESERVEASPECTRATIO_XMINYMAX = 8, - SVG_PRESERVEASPECTRATIO_XMIDYMAX = 9, - SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10 - } AlignmentType; - - - /** - * Meet-or-slice Types - */ - typedef enum - { - SVG_MEETORSLICE_UNKNOWN = 0, - SVG_MEETORSLICE_MEET = 1, - SVG_MEETORSLICE_SLICE = 2 - } MeetOrSliceType; - - - /** - * - */ - unsigned short getAlign(); - - /** - * - */ - void setAlign(unsigned short val) throw(DOMException); - - /** - * - */ - unsigned short getMeetOrSlice(); - - /** - * - */ - void setMeetOrSlice(unsigned short val) throw(DOMException); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPreserveAspectRatio(); - - /** - * - */ - SVGPreserveAspectRatio(const SVGPreserveAspectRatio &other); - - /** - * - */ - ~SVGPreserveAspectRatio(); - -protected: - - unsigned short align; - unsigned short meetOrSlice; - -}; - - - -/*######################################################################### -## SVGRect -#########################################################################*/ - -/** - * - */ -class SVGRect -{ -public: - - /** - * - */ - double getX(); - - /** - * - */ - void setX(double val) throw(DOMException); - - /** - * - */ - double getY(); - - /** - * - */ - void setY(double val) throw(DOMException); - - /** - * - */ - double getWidth(); - - /** - * - */ - void setWidth(double val) throw(DOMException); - - /** - * - */ - double getHeight(); - - /** - * - */ - void setHeight(double val) throw(DOMException); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGRect(); - - /** - * - */ - SVGRect(const SVGRect &other); - - /** - * - */ - ~SVGRect(); - -protected: - - double x, y, width, height; - -}; - -/*######################################################################### -## SVGTransform -#########################################################################*/ - -/** - * - */ -class SVGTransform -{ -public: - - /** - * Transform Types - */ - typedef enum - { - SVG_TRANSFORM_UNKNOWN = 0, - SVG_TRANSFORM_MATRIX = 1, - SVG_TRANSFORM_TRANSLATE = 2, - SVG_TRANSFORM_SCALE = 3, - SVG_TRANSFORM_ROTATE = 4, - SVG_TRANSFORM_SKEWX = 5, - SVG_TRANSFORM_SKEWY = 6, - } TransformType; - - /** - * - */ - unsigned short getType(); - - - /** - * - */ - SVGMatrix getMatrix(); - - /** - * - */ - double getAngle(); - - /** - * - */ - void setMatrix(const SVGMatrix &matrixArg); - - /** - * - */ - void setTranslate(double tx, double ty); - - /** - * - */ - void setScale(double sx, double sy); - - /** - * - */ - void setRotate(double angleArg, double cx, double cy); - - /** - * - */ - void setSkewX(double angleArg); - - /** - * - */ - void setSkewY(double angleArg); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGTransform(); - - /** - * - */ - SVGTransform(const SVGTransform &other); - - /** - * - */ - ~SVGTransform(); - -protected: - - int type; - double angle; - - SVGMatrix matrix; -}; - - - - -/*######################################################################### -## SVGUnitTypes -#########################################################################*/ - -/** - * - */ -class SVGUnitTypes -{ -public: - - /** - * Unit Types - */ - typedef enum - { - SVG_UNIT_TYPE_UNKNOWN = 0, - SVG_UNIT_TYPE_USERSPACEONUSE = 1, - SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2 - } UnitType; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGUnitTypes(); - - /** - * - */ - ~SVGUnitTypes(); - -}; - - - - -/*######################################################################### -## SVGValue -#########################################################################*/ - -/** - * This is a helper class that will hold several types of data. It will - * be used in those situations where methods are common to different - * interfaces, except for the data type. This class holds the following: - * SVGAngle - * SVGBoolean - * SVGEnumeration - * SVGInteger - * SVGLength - * SVGNumber - * SVGPreserveAspectRatio - * SVGRect - * SVGString - */ -class SVGValue -{ -public: - - /** - * - */ - typedef enum - { - SVG_ANGLE, - SVG_BOOLEAN, - SVG_ENUMERATION, - SVG_INTEGER, - SVG_LENGTH, - SVG_NUMBER, - SVG_PRESERVE_ASPECT_RATIO, - SVG_RECT, - SVG_STRING, - } SVGValueType; - - /** - * Constructor - */ - SVGValue(); - - /** - * Copy constructor - */ - SVGValue(const SVGValue &other); - - /** - * Assignment - */ - SVGValue &operator=(const SVGValue &other); - - /** - * - */ - ~SVGValue(); - - //########################### - // TYPES - //########################### - - /** - * Angle - */ - SVGValue(const SVGAngle &v); - - SVGAngle angleValue(); - - /** - * Boolean - */ - SVGValue(bool v); - - bool booleanValue(); - - - /** - * Enumeration - */ - SVGValue(short v); - - short enumerationValue(); - - /** - * Integer - */ - SVGValue(long v); - - long integerValue(); - - /** - * Length - */ - SVGValue(const SVGLength &v); - - SVGLength lengthValue(); - - /** - * Number - */ - SVGValue(double v); - - double numberValue(); - - /** - * PathSegment - */ - SVGValue(const SVGPathSeg &v); - - SVGPathSeg pathDataValue(); - - - /** - * Points - */ - SVGValue(const SVGPoint &v); - - SVGPoint pointValue(); - - - /** - * PreserveAspectRatio - */ - SVGValue(const SVGPreserveAspectRatio &v); - - SVGPreserveAspectRatio preserveAspectRatioValue(); - - /** - * Rect - */ - SVGValue(const SVGRect &v); - - SVGRect rectValue(); - - /** - * String - */ - SVGValue(const DOMString &v); - - DOMString stringValue(); - - /** - * TransformList - */ - SVGValue(const SVGTransform &v); - - SVGTransform transformValue(); - - -private: - - void init(); - - void assign(const SVGValue &other); - - short type; - SVGAngle angleval; // SVGAngle - bool bval; // SVGBoolean - short eval; // SVGEnumeration - long ival; // SVGInteger - SVGLength lengthval; // SVGLength - double dval; // SVGNumber - SVGPathSeg segval; // SVGPathSeg - SVGPoint pointval; // SVGPoint - SVGPreserveAspectRatio parval; // SVGPreserveAspectRatio - SVGRect rval; // SVGRect - DOMString sval; // SVGString - SVGTransform transformval; // SVGTransform - -}; - - -/*######################################################################### -## SVGValueList -#########################################################################*/ - -/** - * THis is used to generify a bit the several different types of lists: - * - * SVGLengthList -> SVGValueList - * SVGValueList -> SVGValueList - * SVGPathData -> SVGValueList - * SVGPoints -> SVGValueList - * SVGTransformList -> SVGValueList - */ -class SVGValueList -{ -public: - - /** - * - */ - typedef enum - { - SVG_LIST_LENGTH, - SVG_LIST_NUMBER, - SVG_LIST_PATHSEG, - SVG_LIST_POINT, - SVG_LIST_TRANSFORM - } SVGValueListTypes; - - /** - * - */ - unsigned long getNumberOfItems(); - - - /** - * - */ - void clear() throw(DOMException); - - /** - * - */ - SVGValue getItem(unsigned long index) throw(DOMException); - - /** - * - */ - SVGValue insertItemBefore(const SVGValue &newItem, - unsigned long index) - throw(DOMException, SVGException); - - /** - * - */ - SVGValue replaceItem(const SVGValue &newItem, - unsigned long index) - throw(DOMException, SVGException); - - /** - * - */ - SVGValue removeItem(unsigned long index) throw(DOMException); - - /** - * - */ - SVGValue appendItem(const SVGValue &newItem) - throw(DOMException, SVGException); - - /** - * Matrix - */ - SVGValue initialize(const SVGValue &newItem) - throw(DOMException, SVGException); - - /** - * Matrix - */ - SVGValue createSVGTransformFromMatrix(const SVGValue &matrix); - - /** - * Matrix - */ - SVGValue consolidate(); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGValueList(); - - /** - * - */ - SVGValueList(const SVGValueList &other); - - /** - * - */ - ~SVGValueList(); - -protected: - - std::vector items; - -}; - - - - - -/*######################################################################### -## SVGAnimatedValue -#########################################################################*/ - -/** - * This class is used to merge all of the "Animated" values, with only - * a different type, into a single API. This class subsumes the following: - * SVGAnimatedValue - * SVGAnimatedValue - * SVGAnimatedValue - * SVGAnimatedValue - * SVGAnimatedValue - * SVGAnimatedValue - * SVGAnimatedPathData - * SVGAnimatedPoints - * SVGAnimatedPreserveAspectRatio - * SVGAnimatedValue - * SVGAnimatedValue - */ -class SVGAnimatedValue -{ -public: - - /** - * - */ - SVGValue &getBaseVal(); - - /** - * - */ - void setBaseVal(const SVGValue &val) throw (DOMException); - - /** - * - */ - SVGValue &getAnimVal(); - - /** - * - */ - SVGAnimatedValue(); - - /** - * - */ - SVGAnimatedValue(const SVGValue &baseValue); - - /** - * - */ - SVGAnimatedValue(const SVGValue &baseValue, const SVGValue &animValue); - - /** - * - */ - SVGAnimatedValue(const SVGAnimatedValue &other); - - /** - * - */ - SVGAnimatedValue &operator=(const SVGAnimatedValue &other); - - /** - * - */ - SVGAnimatedValue &operator=(const SVGValue &baseVal); - - /** - * - */ - ~SVGAnimatedValue(); - -private: - - void init(); - - void assign(const SVGAnimatedValue &other); - - SVGValue baseVal; - - SVGValue animVal; - -}; - - -/*######################################################################### -## SVGAnimatedValueList -#########################################################################*/ - -/** - * This class is used to merge all of the "Animated" values, with only - * a different type, into a single API. This class subsumes the following: - * SVGAnimatedValueList - * SVGAnimatedValueList - * SVGAnimatedTransformList - */ -class SVGAnimatedValueList -{ -public: - - /** - * - */ - SVGValueList &getBaseVal(); - - /** - * - */ - void setBaseVal(const SVGValueList &val) throw (DOMException); - - /** - * - */ - SVGValueList &getAnimVal(); - - /** - * - */ - SVGAnimatedValueList(); - - /** - * - */ - SVGAnimatedValueList(const SVGValueList &baseValue); - - /** - * - */ - SVGAnimatedValueList(const SVGValueList &baseValue, const SVGValueList &animValue); - - /** - * - */ - SVGAnimatedValueList(const SVGAnimatedValueList &other); - - /** - * - */ - SVGAnimatedValueList &operator=(const SVGAnimatedValueList &other); - - /** - * - */ - SVGAnimatedValueList &operator=(const SVGValueList &baseVal); - - /** - * - */ - ~SVGAnimatedValueList(); - -private: - - void init(); - - void assign(const SVGAnimatedValueList &other); - - SVGValueList baseVal; - - SVGValueList animVal; - -}; - - - -/*######################################################################### -## SVGICCColor -#########################################################################*/ - -/** - * - */ -class SVGICCColor -{ -public: - - /** - * - */ - DOMString getColorProfile(); - - /** - * - */ - void setColorProfile(const DOMString &val) throw(DOMException); - - /** - * - */ - SVGValueList &getColors(); - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGICCColor(); - - /** - * - */ - SVGICCColor(const SVGICCColor &other); - - /** - * - */ - ~SVGICCColor(); - -protected: - - DOMString colorProfile; - - SVGValueList colors; - -}; - - - -/*######################################################################### -## SVGColor -#########################################################################*/ - -/** - * - */ -class SVGColor : public css::CSSValue -{ -public: - - - /** - * Color Types - */ - typedef enum - { - SVG_COLORTYPE_UNKNOWN = 0, - SVG_COLORTYPE_RGBCOLOR = 1, - SVG_COLORTYPE_RGBCOLOR_ICCCOLOR = 2, - SVG_COLORTYPE_CURRENTCOLOR = 3 - } ColorType; - - - /** - * - */ - unsigned short getColorType(); - - /** - * - */ - css::RGBColor getRgbColor(); - - /** - * - */ - SVGICCColor getIccColor(); - - - /** - * - */ - void setRGBColor(const DOMString& /*rgbColor*/) - throw(SVGException); - - /** - * - */ - void setRGBColorICCColor(const DOMString& /*rgbColor*/, - const DOMString& /*iccColor*/) - throw(SVGException); - - /** - * - */ - void setColor(unsigned short /*colorType*/, - const DOMString& /*rgbColor*/, - const DOMString& /*iccColor*/) - throw(SVGException); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGColor(); - - /** - * - */ - SVGColor(const SVGColor &other); - - /** - * - */ - ~SVGColor(); - -protected: - - int colorType; - -}; - - - -/*######################################################################### -## SVGPaint -#########################################################################*/ - -/** - * - */ -class SVGPaint : public SVGColor -{ -public: - - /** - * Paint Types - */ - typedef enum - { - SVG_PAINTTYPE_UNKNOWN = 0, - SVG_PAINTTYPE_RGBCOLOR = 1, - SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR = 2, - SVG_PAINTTYPE_NONE = 101, - SVG_PAINTTYPE_CURRENTCOLOR = 102, - SVG_PAINTTYPE_URI_NONE = 103, - SVG_PAINTTYPE_URI_CURRENTCOLOR = 104, - SVG_PAINTTYPE_URI_RGBCOLOR = 105, - SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR = 106, - SVG_PAINTTYPE_URI = 107 - } PaintType; - - - /** - * - */ - unsigned short getPaintType(); - - /** - * - */ - DOMString getUri(); - - /** - * - */ - void setUri(const DOMString& uriArg); - - /** - * - */ - void setPaint(unsigned short paintTypeArg, - const DOMString& uriArg, - const DOMString& /*rgbColor*/, - const DOMString& /*iccColor*/) - throw(SVGException); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPaint(); - - /** - * - */ - SVGPaint(const SVGPaint &other); - - /** - * - */ - ~SVGPaint(); - -protected: - - unsigned int paintType; - DOMString uri; - -}; - - - - -//######################################################################## -//######################################################################## -//# I N T E R F A C E S -//######################################################################## -//######################################################################## - - - - - - - -/*######################################################################### -## SVGStylable -#########################################################################*/ - -/** - * - */ -class SVGStylable -{ -public: - - /** - * - */ - SVGAnimatedValue getClassName(); - - /** - * - */ - css::CSSStyleDeclaration getStyle(); - - - /** - * - */ - css::CSSValue getPresentationAttribute(const DOMString& /*name*/); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGStylable(); - - /** - * - */ - SVGStylable(const SVGStylable &other); - - /** - * - */ - ~SVGStylable(); - -protected: - - SVGAnimatedValue className; - css::CSSStyleDeclaration style; - -}; - - - - - -/*######################################################################### -## SVGLocatable -#########################################################################*/ - -/** - * - */ -class SVGLocatable -{ -public: - - /** - * - */ - SVGElementPtr getNearestViewportElement(); - - /** - * - */ - SVGElementPtr getFarthestViewportElement(); - - /** - * - */ - SVGRect getBBox(); - - /** - * - */ - SVGMatrix getCTM(); - - /** - * - */ - SVGMatrix getScreenCTM(); - - /** - * - */ - SVGMatrix getTransformToElement(const SVGElement &/*element*/) - throw(SVGException); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGLocatable(); - - /** - * - */ - SVGLocatable(const SVGLocatable &/*other*/); - - /** - * - */ - ~SVGLocatable(); - -protected: - - SVGRect bbox; - SVGMatrix ctm; - SVGMatrix screenCtm; - -}; - - -/*######################################################################### -## SVGTransformable -#########################################################################*/ - -/** - * - */ -class SVGTransformable : public SVGLocatable -{ -public: - - - /** - * - */ - SVGAnimatedValueList &getTransform(); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGTransformable(); - - /** - * - */ - SVGTransformable(const SVGTransformable &other); - - /** - * - */ - ~SVGTransformable(); - -protected: - - SVGAnimatedValueList transforms; -}; - - - -/*######################################################################### -## SVGTests -#########################################################################*/ - -/** - * - */ -class SVGTests -{ -public: - - /** - * - */ - SVGValueList &getRequiredFeatures(); - - /** - * - */ - SVGValueList &getRequiredExtensions(); - - /** - * - */ - SVGValueList &getSystemLanguage(); - - /** - * - */ - bool hasExtension(const DOMString& /*extension*/); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGTests(); - - /** - * - */ - SVGTests(const SVGTests &other); - - /** - * - */ - ~SVGTests(); - -protected: - - SVGValueList requiredFeatures; - SVGValueList requiredExtensions; - SVGValueList systemLanguage; - -}; - - - - - - -/*######################################################################### -## SVGLangSpace -#########################################################################*/ - -/** - * - */ -class SVGLangSpace -{ -public: - - - /** - * - */ - DOMString getXmlLang(); - - /** - * - */ - void setXmlLang(const DOMString &val) throw(DOMException); - - /** - * - */ - DOMString getXmlSpace(); - - /** - * - */ - void setXmlSpace(const DOMString &val) throw(DOMException); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGLangSpace(); - - /** - * - */ - SVGLangSpace(const SVGLangSpace &other); - - /** - * - */ - ~SVGLangSpace(); - -protected: - - DOMString xmlLang; - DOMString xmlSpace; - -}; - - - -/*######################################################################### -## SVGExternalResourcesRequired -#########################################################################*/ - -/** - * - */ -class SVGExternalResourcesRequired -{ -public: - - /** - * boolean - */ - SVGAnimatedValue getExternalResourcesRequired(); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGExternalResourcesRequired(); - - /** - * - */ - SVGExternalResourcesRequired(const SVGExternalResourcesRequired &other); - - /** - * - */ - ~SVGExternalResourcesRequired(); - -protected: - - SVGAnimatedValue required; //boolean - -}; - - - - - - - - - -/*######################################################################### -## SVGFitToViewBox -#########################################################################*/ - -/** - * - */ -class SVGFitToViewBox -{ -public: - - /** - * rect - */ - SVGAnimatedValue getViewBox(); - - /** - * preserveAspectRatio - */ - SVGAnimatedValue getPreserveAspectRatio(); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGFitToViewBox(); - - /** - * - */ - SVGFitToViewBox(const SVGFitToViewBox &other); - - /** - * - */ - ~SVGFitToViewBox(); - -protected: - - SVGAnimatedValue viewBox; //rect - SVGAnimatedValue preserveAspectRatio; - -}; - - -/*######################################################################### -## SVGZoomAndPan -#########################################################################*/ - -/** - * - */ -class SVGZoomAndPan -{ -public: - - /** - * Zoom and Pan Types - */ - typedef enum - { - SVG_ZOOMANDPAN_UNKNOWN = 0, - SVG_ZOOMANDPAN_DISABLE = 1, - SVG_ZOOMANDPAN_MAGNIFY = 2 - } ZoomAndPanType; - - /** - * - */ - unsigned short getZoomAndPan(); - - /** - * - */ - void setZoomAndPan(unsigned short val) throw(DOMException); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGZoomAndPan(); - - /** - * - */ - SVGZoomAndPan(const SVGZoomAndPan &other); - - /** - * - */ - ~SVGZoomAndPan(); - -protected: - - unsigned short zoomAndPan; - -}; - - - - - - -/*######################################################################### -## SVGViewSpec -#########################################################################*/ - -/** - * - */ -class SVGViewSpec : public SVGZoomAndPan, - public SVGFitToViewBox -{ -public: - - /** - * - */ - SVGValueList getTransform(); - - /** - * - */ - SVGElementPtr getViewTarget(); - - /** - * - */ - DOMString getViewBoxString(); - - /** - * - */ - DOMString getPreserveAspectRatioString(); - - /** - * - */ - DOMString getTransformString(); - - /** - * - */ - DOMString getViewTargetString(); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGViewSpec(); - - /** - * - */ - SVGViewSpec(const SVGViewSpec &other); - - /** - * - */ - ~SVGViewSpec(); - -protected: - - SVGElementPtr viewTarget; - SVGValueList transform; -}; - - -/*######################################################################### -## SVGURIReference -#########################################################################*/ - -/** - * - */ -class SVGURIReference -{ -public: - - /** - * string - */ - SVGAnimatedValue getHref(); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGURIReference(); - - /** - * - */ - SVGURIReference(const SVGURIReference &other); - - /** - * - */ - ~SVGURIReference(); - -protected: - - SVGAnimatedValue href; - -}; - - - - - - -/*######################################################################### -## SVGCSSRule -#########################################################################*/ - -/** - * - */ -class SVGCSSRule : public css::CSSRule -{ -public: - - - /** - * Additional CSS RuleType to support ICC color specifications - */ - typedef enum - { - COLOR_PROFILE_RULE = 7 - } ColorProfileRuleType; - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGCSSRule(); - - /** - * - */ - SVGCSSRule(const SVGCSSRule &other); - - /** - * - */ - ~SVGCSSRule(); - -}; - - - -/*######################################################################### -## SVGRenderingIntent -#########################################################################*/ - -/** - * - */ -class SVGRenderingIntent -{ -public: - - /** - * Rendering Intent Types - */ - typedef enum - { - RENDERING_INTENT_UNKNOWN = 0, - RENDERING_INTENT_AUTO = 1, - RENDERING_INTENT_PERCEPTUAL = 2, - RENDERING_INTENT_RELATIVE_COLORIMETRIC = 3, - RENDERING_INTENT_SATURATION = 4, - RENDERING_INTENT_ABSOLUTE_COLORIMETRIC = 5 - } RenderingIntentType; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGRenderingIntent(); - - /** - * - */ - SVGRenderingIntent(const SVGRenderingIntent &other); - - /** - * - */ - ~SVGRenderingIntent(); - -protected: - - unsigned short renderingIntentType; -}; - - - - - - - - - -/*######################################################################### -## SVGColorProfileRule -#########################################################################*/ - -/** - * - */ -class SVGColorProfileRule : public SVGCSSRule, - public SVGRenderingIntent -{ - -public: - - /** - * - */ - DOMString getSrc(); - - /** - * - */ - void setSrc(const DOMString &val) throw(DOMException); - - /** - * - */ - DOMString getName(); - - /** - * - */ - void setName(const DOMString &val) throw(DOMException); - - /** - * - */ - unsigned short getRenderingIntent(); - - /** - * - */ - void setRenderingIntent(unsigned short val) throw(DOMException); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGColorProfileRule(); - - /** - * - */ - SVGColorProfileRule(const SVGColorProfileRule &other); - - /** - * - */ - ~SVGColorProfileRule(); - -protected: - - unsigned short renderingIntent; - DOMString src; - DOMString name; - -}; - - - -/*######################################################################### -## SVGFilterPrimitiveStandardAttributes -#########################################################################*/ - -/** - * - */ -class SVGFilterPrimitiveStandardAttributes : public SVGStylable -{ -public: - - /** - * length - */ - SVGAnimatedValue getX(); - - /** - * length - */ - SVGAnimatedValue getY(); - - /** - * length - */ - SVGAnimatedValue getWidth(); - - /** - * length - */ - SVGAnimatedValue getHeight(); - - /** - * string - */ - SVGAnimatedValue getResult(); - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGFilterPrimitiveStandardAttributes(); - - /** - * - */ - SVGFilterPrimitiveStandardAttributes( - const SVGFilterPrimitiveStandardAttributes &other); - - /** - * - */ - ~SVGFilterPrimitiveStandardAttributes(); - -protected: - - SVGAnimatedValue x; - SVGAnimatedValue y; - SVGAnimatedValue width; - SVGAnimatedValue height; - SVGAnimatedValue result; - -}; - - -/*######################################################################### -## SVGEvent -#########################################################################*/ - -/** - * - */ -class SVGEvent : events::Event -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGEvent(); - - /** - * - */ - SVGEvent(const SVGEvent &other); - - /** - * - */ - ~SVGEvent(); - -}; - - - - -/*######################################################################### -## SVGZoomEvent -#########################################################################*/ - -/** - * - */ -class SVGZoomEvent : events::UIEvent -{ -public: - - /** - * - */ - SVGRect getZoomRectScreen(); - - /** - * - */ - double getPreviousScale(); - - /** - * - */ - SVGPoint getPreviousTranslate(); - - /** - * - */ - double getNewScale(); - - /** - * - */ - SVGPoint getNewTranslate(); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGZoomEvent(); - - /** - * - */ - SVGZoomEvent(const SVGZoomEvent &other); - - /** - * - */ - ~SVGZoomEvent(); - -protected: - - SVGRect zoomRectScreen; - double previousScale; - SVGPoint previousTranslate; - double newScale; - SVGPoint newTranslate; - -}; - - - -/*######################################################################### -## SVGElementInstance -#########################################################################*/ - -/** - * - */ -class SVGElementInstance : public events::EventTarget -{ -public: - - /** - * - */ - SVGElementPtr getCorrespondingElement(); - - /** - * - */ - SVGUseElementPtr getCorrespondingUseElement(); - - /** - * - */ - SVGElementInstance getParentNode(); - - /** - * Since we are using stack types and this is a circular definition, - * we will instead implement this as a global function below: - * SVGElementInstanceList getChildNodes(const SVGElementInstance instance); - */ - //SVGElementInstanceList getChildNodes(); - - /** - * - */ - SVGElementInstance getFirstChild(); - - /** - * - */ - SVGElementInstance getLastChild(); - - /** - * - */ - SVGElementInstance getPreviousSibling(); - - /** - * - */ - SVGElementInstance getNextSibling(); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGElementInstance(); - - /** - * - */ - SVGElementInstance(const SVGElementInstance &other); - - /** - * - */ - ~SVGElementInstance(); - -protected: - - SVGElementPtr correspondingElement; - SVGUseElementPtr correspondingUseElement; - -}; - - - - - - -/*######################################################################### -## SVGElementInstanceList -#########################################################################*/ - -/** - * - */ -class SVGElementInstanceList -{ -public: - - /** - * - */ - unsigned long getLength(); - - /** - * - */ - SVGElementInstance item(unsigned long index); - - /** - * This static method replaces the circular definition of: - * SVGElementInstanceList SVGElementInstance::getChildNodes() - * - */ - static SVGElementInstanceList getChildNodes(const SVGElementInstance &/*instance*/); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGElementInstanceList(); - - /** - * - */ - SVGElementInstanceList(const SVGElementInstanceList &other); - - /** - * - */ - ~SVGElementInstanceList(); - -protected: - - std::vector items; - - -}; - - - - - - - - -//######################################################################## -//######################################################################## -//######################################################################## -//# D O M -//######################################################################## -//######################################################################## -//######################################################################## - - - - - -/*######################################################################### -## Types -#########################################################################*/ - -/** - * Bitmasks for has_an interface for SVGElement - */ -#define SVG_ANGLE 0x00000001 -#define SVG_ANIMATED_ANGLE 0x00000002 -#define SVG_ANIMATED_BOOLEAN 0x00000004 -#define SVG_ANIMATED_ENUMERATION 0x00000008 -#define SVG_ANIMATED_INTEGER 0x00000010 -#define SVG_ANIMATED_LENGTH 0x00000020 -#define SVG_ANIMATED_LENGTH_LIST 0x00000040 -#define SVG_ANIMATED_NUMBER 0x00000080 -#define SVG_ANIMATED_NUMBER_LIST 0x00000100 -#define SVG_ANIMATED_RECT 0x00000200 -#define SVG_ANIMATED_STRING 0x00000400 -#define SVG_COLOR 0x00000800 -#define SVG_CSS_RULE 0x00001000 -#define SVG_EXTERNAL_RESOURCES_REQUIRED 0x00002000 -#define SVG_FIT_TO_VIEWBOX 0x00004000 -#define SVG_ICCCOLOR 0x00008000 -#define SVG_LANG_SPACE 0x00010000 -#define SVG_LENGTH 0x00020000 -#define SVG_LENGTH_LIST 0x00040000 -#define SVG_LOCATABLE 0x00080000 -#define SVG_NUMBER 0x00100000 -#define SVG_NUMBER_LIST 0x00200000 -#define SVG_RECT 0x00400000 -#define SVG_RENDERING_INTENT 0x00800000 -#define SVG_STRING_LIST 0x01000000 -#define SVG_STYLABLE 0x02000000 -#define SVG_TESTS 0x04000000 -#define SVG_TRANSFORMABLE 0x08000000 -#define SVG_UNIT_TYPES 0x10000000 -#define SVG_URI_REFERENCE 0x20000000 -#define SVG_VIEW_SPEC 0x40000000 -#define SVG_ZOOM_AND_PAN 0x80000000 - -/** - * How many above? Quite handy - */ -#define SVG_NR_INTERFACES 32 - - -/** - * Enumerations for SVGElement types - */ -typedef enum -{ - SVG_A_ELEMENT = 0, - SVG_ALTGLYPH_ELEMENT, - SVG_ALTGLYPHDEF_ELEMENT, - SVG_ALTGLYPHITEM_ELEMENT, - SVG_ANIMATE_ELEMENT, - SVG_ANIMATECOLOR_ELEMENT, - SVG_ANIMATEMOTION_ELEMENT, - SVG_ANIMATETRANSFORM_ELEMENT, - SVG_CIRCLE_ELEMENT, - SVG_CLIPPATH_ELEMENT, - SVG_COLOR_PROFILE_ELEMENT, - SVG_CURSOR_ELEMENT, - SVG_DEFINITION_SRC_ELEMENT, - SVG_DEFS_ELEMENT, - SVG_DESC_ELEMENT, - SVG_ELLIPSE_ELEMENT, - SVG_FEBLEND_ELEMENT, - SVG_FECOLORMATRIX_ELEMENT, - SVG_FECOMPONENTTRANSFER_ELEMENT, - SVG_FECOMPOSITE_ELEMENT, - SVG_FECONVOLVEMATRIX_ELEMENT, - SVG_FEDIFFUSELIGHTING_ELEMENT, - SVG_FEDISPLACEMENTMAP_ELEMENT, - SVG_FEDISTANTLIGHT_ELEMENT, - SVG_FEFLOOD_ELEMENT, - SVG_FEFUNCA_ELEMENT, - SVG_FEFUNCB_ELEMENT, - SVG_FEFUNCG_ELEMENT, - SVG_FEFUNCR_ELEMENT, - SVG_FEGAUSSIANBLUR_ELEMENT, - SVG_FEIMAGE_ELEMENT, - SVG_FEMERGE_ELEMENT, - SVG_FEMERGENODE_ELEMENT, - SVG_FEMORPHOLOGY_ELEMENT, - SVG_FEOFFSET_ELEMENT, - SVG_FEPOINTLIGHT_ELEMENT, - SVG_FESPECULARLIGHTING_ELEMENT, - SVG_FESPOTLIGHT_ELEMENT, - SVG_FETILE_ELEMENT, - SVG_FETURBULENCE_ELEMENT, - SVG_FILTER_ELEMENT, - SVG_FONT_ELEMENT, - SVG_FONT_FACE_ELEMENT, - SVG_FONT_FACE_FORMAT_ELEMENT, - SVG_FONT_FACE_NAME_ELEMENT, - SVG_FONT_FACE_SRC_ELEMENT, - SVG_FONT_FACE_URI_ELEMENT, - SVG_FOREIGNOBJECT_ELEMENT, - SVG_G_ELEMENT, - SVG_GLYPH_ELEMENT, - SVG_GLYPHREF_ELEMENT, - SVG_HKERN_ELEMENT, - SVG_IMAGE_ELEMENT, - SVG_LINE_ELEMENT, - SVG_LINEARGRADIENT_ELEMENT, - SVG_MARKER_ELEMENT, - SVG_MASK_ELEMENT, - SVG_METADATA_ELEMENT, - SVG_MISSING_GLYPH_ELEMENT, - SVG_MPATH_ELEMENT, - SVG_PATH_ELEMENT, - SVG_PATTERN_ELEMENT, - SVG_POLYGON_ELEMENT, - SVG_POLYLINE_ELEMENT, - SVG_RADIALGRADIENT_ELEMENT, - SVG_RECT_ELEMENT, - SVG_SCRIPT_ELEMENT, - SVG_SET_ELEMENT, - SVG_STOP_ELEMENT, - SVG_STYLE_ELEMENT, - SVG_SVG_ELEMENT, - SVG_SWITCH_ELEMENT, - SVG_SYMBOL_ELEMENT, - SVG_TEXT_ELEMENT, - SVG_TEXTPATH_ELEMENT, - SVG_TITLE_ELEMENT, - SVG_TREF_ELEMENT, - SVG_TSPAN_ELEMENT, - SVG_USE_ELEMENT, - SVG_VIEW_ELEMENT, - SVG_VKERN_ELEMENT, - SVG_MAX_ELEMENT -} SVGElementType; - - - - -/** - * Look up the SVG Element type enum for a given string - * Return -1 if not found - */ -int svgElementStrToEnum(const char *str); - - -/** - * Return the string corresponding to a given SVG element type enum - * Return "unknown" if not found - */ -const char *svgElementEnumToStr(int type); - - - - -/*######################################################################### -## SVGElement -#########################################################################*/ - -/** - * All of the SVG DOM interfaces that correspond directly to elements in the SVG - * language(e.g., the SVGPathElement interface corresponds directly to the - * 'path' element in the language) are derivative from base class SVGElement. - */ -class SVGElement : public Element -{ -public: - - //#################################################################### - //# BASE METHODS FOR SVGElement - //#################################################################### - - /** - * Get the value of the id attribute on the given element. - */ - DOMString getId(); - - /** - * Set the value of the id attribute on the given element. - */ - void setId(const DOMString &val) throw(DOMException); - - /** - * Corresponds to attribute xml:base on the given element. - */ - DOMString getXmlBase(); - - /** - * Corresponds to attribute xml:base on the given element. - */ - void setXmlBase(const DOMString &val) throw(DOMException); - - /** - * The nearest ancestor 'svg' element. Null if the given element is the - * outermost 'svg' element. - */ - SVGElementPtr getOwnerSVGElement(); - - /** - * The element which established the current viewport. Often, the nearest - * ancestor 'svg' element. Null if the given element is the outermost 'svg' - * element. - */ - SVGElementPtr getViewportElement(); - - - - //#################################################################### - //#################################################################### - //# E L E M E N T S - //#################################################################### - //#################################################################### - - //#################################################################### - //# SVGAElement - //#################################################################### - - - /** - * - */ - SVGAnimatedValue getTarget(); - - - - //#################################################################### - //# SVGAltGlyphElement - //#################################################################### - - - /** - * Get the attribute glyphRef on the given element. - */ - DOMString getGlyphRef(); - - /** - * Set the attribute glyphRef on the given element. - */ - void setGlyphRef(const DOMString &val) throw(DOMException); - - /** - * Get the attribute format on the given element. - */ - DOMString getFormat(); - - /** - * Set the attribute format on the given element. - */ - void setFormat(const DOMString &val) throw(DOMException); - - - //#################################################################### - //# SVGAltGlyphDefElement - //#################################################################### - - //#################################################################### - //# SVGAltGlyphItemElement - //#################################################################### - - - //#################################################################### - //# SVGAnimateElement - //#################################################################### - - - //#################################################################### - //# SVGAnimateColorElement - //#################################################################### - - //#################################################################### - //# SVGAnimateMotionElement - //#################################################################### - - - //#################################################################### - //# SVGAnimateTransformElement - //#################################################################### - - - //#################################################################### - //# SVGAnimationElement - //#################################################################### - - - /** - * - */ - SVGElementPtr getTargetElement(); - - /** - * - */ - double getStartTime(); - - /** - * - */ - double getCurrentTime(); - - /** - * - */ - double getSimpleDuration() throw(DOMException); - - - - //#################################################################### - //# SVGCircleElement - //#################################################################### - - /** - * Corresponds to attribute cx on the given 'circle' element. - */ - SVGAnimatedValue getCx(); - - /** - * Corresponds to attribute cy on the given 'circle' element. - */ - SVGAnimatedValue getCy(); - - /** - * Corresponds to attribute r on the given 'circle' element. - */ - SVGAnimatedValue getR(); - - //#################################################################### - //# SVGClipPathElement - //#################################################################### - - - /** - * Corresponds to attribute clipPathUnits on the given 'clipPath' element. - * Takes one of the constants defined in SVGUnitTypes. - */ - SVGAnimatedValue getClipPathUnits(); - - - - //#################################################################### - //# SVGColorProfileElement - //#################################################################### - - - /** - * Get the attribute local on the given element. - */ - DOMString getLocal(); - - /** - * Set the attribute local on the given element. - */ - void setLocal(const DOMString &val) throw(DOMException); - - /** - * Get the attribute name on the given element. - */ - DOMString getName(); - - /** - * Set the attribute name on the given element. - */ - void setName(const DOMString &val) throw(DOMException); - - /** - * Set the attribute rendering-intent on the given element. - * The type of rendering intent, identified by one of the - * SVGRenderingIntent constants. - */ - unsigned short getRenderingIntent(); - - /** - * Get the attribute rendering-intent on the given element. - */ - void setRenderingIntent(unsigned short val) throw(DOMException); - - - //#################################################################### - //# SVGComponentTransferFunctionElement - //#################################################################### - - - /** - * Component Transfer Types - */ - typedef enum - { - SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0, - SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1, - SVG_FECOMPONENTTRANSFER_TYPE_TABLE = 2, - SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3, - SVG_FECOMPONENTTRANSFER_TYPE_LINEAR = 4, - SVG_FECOMPONENTTRANSFER_TYPE_GAMMA = 5 - } ComponentTransferType; - - - /** - * Corresponds to attribute type on the given element. Takes one\ - * of the Component Transfer Types. - * -- also in SVGCSSRule - */ - // SVGAnimatedValue getType(); - - /** - * Corresponds to attribute tableValues on the given element. - */ - SVGAnimatedValueList getTableValues(); - - /** - * Corresponds to attribute slope on the given element. - */ - SVGAnimatedValue getSlope(); - - /** - * Corresponds to attribute intercept on the given element. - */ - SVGAnimatedValue getIntercept(); - - /** - * Corresponds to attribute amplitude on the given element. - */ - SVGAnimatedValue getAmplitude(); - - /** - * Corresponds to attribute exponent on the given element. - */ - SVGAnimatedValue getExponent(); - - /** - * Corresponds to attribute offset on the given element. - */ - SVGAnimatedValue getOffset(); - - //#################################################################### - //# SVGCursorElement - //#################################################################### - - /** - * -- also in SVGRect - */ - // SVGAnimatedValue getX(); - - /** - * -- also in SVGRect - */ - // SVGAnimatedValue getY(); - - - //#################################################################### - //# SVGDefinitionSrcElement - //#################################################################### - - //#################################################################### - //# SVGDefsElement - //#################################################################### - - //#################################################################### - //# SVGDescElement - //#################################################################### - - //#################################################################### - //# SVGEllipseElement - //#################################################################### - - /** - * Corresponds to attribute cx on the given 'ellipse' element. - * -- also in Circle - */ - // SVGAnimatedValue getCx(); - - /** - * Corresponds to attribute cy on the given 'ellipse' element. - * -- also in Circle - */ - // SVGAnimatedValue getCy(); - - /** - * Corresponds to attribute rx on the given 'ellipse' element. - */ - SVGAnimatedValue getRx(); - - /** - * Corresponds to attribute ry on the given 'ellipse' element. - */ - SVGAnimatedValue getRy(); - - - //#################################################################### - //# SVGFEBlendElement - //#################################################################### - - /** - * Blend Mode Types - */ - typedef enum - { - SVG_FEBLEND_MODE_UNKNOWN = 0, - SVG_FEBLEND_MODE_NORMAL = 1, - SVG_FEBLEND_MODE_MULTIPLY = 2, - SVG_FEBLEND_MODE_SCREEN = 3, - SVG_FEBLEND_MODE_DARKEN = 4, - SVG_FEBLEND_MODE_LIGHTEN = 5 - } BlendModeType; - - /** - * Corresponds to attribute in on the given 'feBlend' element. - */ - SVGAnimatedValue getIn1(); - - /** - * Corresponds to attribute in2 on the given 'feBlend' element. - */ - SVGAnimatedValue getIn2(); - - /** - * Corresponds to attribute mode on the given 'feBlend' element. - * Takes one of the Blend Mode Types. - */ - SVGAnimatedValue getMode(); - - - //#################################################################### - //# SVGFEColorMatrixElement - //#################################################################### - - /** - * Color Matrix Types - */ - typedef enum - { - SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0, - SVG_FECOLORMATRIX_TYPE_MATRIX = 1, - SVG_FECOLORMATRIX_TYPE_SATURATE = 2, - SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3, - SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4 - } ColorMatrixType; - - - /** - * Corresponds to attribute in on the given 'feColorMatrix' element. - * - also in feBlend - */ - // SVGAnimatedValue getIn1(); - - /** - * Corresponds to attribute type on the given 'feColorMatrix' element. - * Takes one of the Color Matrix Types. - * -- also in CSSRule - */ - // SVGAnimatedValue getType(); - - /** - * Corresponds to attribute values on the given 'feColorMatrix' element. - * Provides access to the contents of the values attribute. - */ - SVGAnimatedValueList getValues(); - - - //#################################################################### - //# SVGFEComponentTransferElement - //#################################################################### - - - /** - * Corresponds to attribute in on the given 'feComponentTransfer' element. - * -- also in feBlend - */ - // SVGAnimatedValue getIn1(); - - //#################################################################### - //# SVGFECompositeElement - //#################################################################### - - /** - * Composite Operators - */ - typedef enum - { - SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0, - SVG_FECOMPOSITE_OPERATOR_OVER = 1, - SVG_FECOMPOSITE_OPERATOR_IN = 2, - SVG_FECOMPOSITE_OPERATOR_OUT = 3, - SVG_FECOMPOSITE_OPERATOR_ATOP = 4, - SVG_FECOMPOSITE_OPERATOR_XOR = 5, - SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6 - } CompositeOperatorType; - - /** - * Corresponds to attribute in on the given 'feComposite' element. - * -- also in feBlend - */ - // SVGAnimatedValue getIn1(); - - /** - * Corresponds to attribute in2 on the given 'feComposite' element. - * -- also in feBlend - */ - // SVGAnimatedValue getIn2(); - - /** - * Corresponds to attribute operator on the given 'feComposite' element. - * Takes one of the Composite Operators. - */ - SVGAnimatedValue getOperator(); - - /** - * Corresponds to attribute k1 on the given 'feComposite' element. - */ - SVGAnimatedValue getK1(); - - /** - * Corresponds to attribute k2 on the given 'feComposite' element. - */ - SVGAnimatedValue getK2(); - - /** - * Corresponds to attribute k3 on the given 'feComposite' element. - */ - SVGAnimatedValue getK3(); - - /** - * Corresponds to attribute k4 on the given 'feComposite' element. - */ - SVGAnimatedValue getK4(); - - - //#################################################################### - //# SVGFEConvolveMatrixElement - //#################################################################### - - - /** - * Edge Mode Values - */ - typedef enum - { - SVG_EDGEMODE_UNKNOWN = 0, - SVG_EDGEMODE_DUPLICATE = 1, - SVG_EDGEMODE_WRAP = 2, - SVG_EDGEMODE_NONE = 3 - } EdgeModeType; - - - /** - * Corresponds to attribute order on the given 'feConvolveMatrix' element. - */ - SVGAnimatedValue getOrderX(); - - /** - * Corresponds to attribute order on the given 'feConvolveMatrix' element. - */ - SVGAnimatedValue getOrderY(); - - /** - * Corresponds to attribute kernelMatrix on the given element. - */ - SVGAnimatedValueList getKernelMatrix(); - - /** - * Corresponds to attribute divisor on the given 'feConvolveMatrix' element. - */ - SVGAnimatedValue getDivisor(); - - /** - * Corresponds to attribute bias on the given 'feConvolveMatrix' element. - */ - SVGAnimatedValue getBias(); - - /** - * Corresponds to attribute targetX on the given 'feConvolveMatrix' element. - */ - SVGAnimatedValue getTargetX(); - - /** - * Corresponds to attribute targetY on the given 'feConvolveMatrix' element. - */ - SVGAnimatedValue getTargetY(); - - /** - * Corresponds to attribute edgeMode on the given 'feConvolveMatrix' - * element. Takes one of the Edge Mode Types. - */ - SVGAnimatedValue getEdgeMode(); - - /** - * Corresponds to attribute kernelUnitLength on the - * given 'feConvolveMatrix' element. - */ - SVGAnimatedValue getKernelUnitLengthX(); - - /** - * Corresponds to attribute kernelUnitLength on the given - * 'feConvolveMatrix' element. - */ - SVGAnimatedValue getKernelUnitLengthY(); - - /** - * Corresponds to attribute preserveAlpha on the - * given 'feConvolveMatrix' element. - */ - SVGAnimatedValue getPreserveAlpha(); - - - - //#################################################################### - //# SVGFEDiffuseLightingElement - //#################################################################### - - - /** - * Corresponds to attribute in on the given 'feDiffuseLighting' element. - * -- also in feBlend - */ - // SVGAnimatedValue getIn1(); - - /** - * Corresponds to attribute surfaceScale on the given - * 'feDiffuseLighting' element. - */ - SVGAnimatedValue getSurfaceScale(); - - /** - * Corresponds to attribute diffuseConstant on the given - * 'feDiffuseLighting' element. - */ - SVGAnimatedValue getDiffuseConstant(); - - /** - * Corresponds to attribute kernelUnitLength on the given - * 'feDiffuseLighting' element. - */ - // SVGAnimatedValue getKernelUnitLengthX(); - - /** - * Corresponds to attribute kernelUnitLength on the given - * 'feDiffuseLighting' element. - */ - // SVGAnimatedValue getKernelUnitLengthY(); - - - - - //#################################################################### - //# SVGFEDisplacementMapElement - //#################################################################### - - - /** - * Channel Selectors - */ - typedef enum - { - SVG_CHANNEL_UNKNOWN = 0, - SVG_CHANNEL_R = 1, - SVG_CHANNEL_G = 2, - SVG_CHANNEL_B = 3, - SVG_CHANNEL_A = 4 - } ChannelSelector; - - /** - * - * -- also in feBlend - */ - // SVGAnimatedValue getIn1(); - - /** - * - * -- also in feBlend - */ - // SVGAnimatedValue getIn2(); - - - /** - * - */ - SVGAnimatedValue getScale(); - - /** - * - */ - SVGAnimatedValue getXChannelSelector(); - - /** - * - */ - SVGAnimatedValue getYChannelSelector(); - - //#################################################################### - //# SVGFEDistantLightElement - //#################################################################### - - - /** - * Corresponds to attribute azimuth on the given 'feDistantLight' element. - */ - SVGAnimatedValue getAzimuth(); - - - /** - * Corresponds to attribute elevation on the given 'feDistantLight' - * element - */ - SVGAnimatedValue getElevation(); - - - //#################################################################### - //# SVGFEFloodElement - //#################################################################### - - - /** - * - * -- also in feBlend - */ - // SVGAnimatedValue getIn1(); - - - //#################################################################### - //# SVGFEFuncAElement - //#################################################################### - - //#################################################################### - //# SVGFEFuncBElement - //#################################################################### - - //#################################################################### - //# SVGFEFuncGElement - //#################################################################### - - //#################################################################### - //# SVGFEFuncRElement - //#################################################################### - - - //#################################################################### - //# SVGFEGaussianBlurElement - //#################################################################### - - - /** - * - * -- also in feBlend - */ - // SVGAnimatedValue getIn1(); - - - /** - * - */ - SVGAnimatedValue getStdDeviationX(); - - /** - * - */ - SVGAnimatedValue getStdDeviationY(); - - - /** - * - */ - void setStdDeviation(double stdDeviationX, double stdDeviationY); - - - //#################################################################### - //# SVGFEImageElement - //#################################################################### - - - //#################################################################### - //# SVGFEMergeElement - //#################################################################### - - //#################################################################### - //# SVGFEMergeNodeElement - //#################################################################### - - //#################################################################### - //# SVGFEMorphologyElement - //#################################################################### - - - - /** - * Morphology Operators - */ - typedef enum - { - SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0, - SVG_MORPHOLOGY_OPERATOR_ERODE = 1, - SVG_MORPHOLOGY_OPERATOR_DILATE = 2 - } MorphologyOperatorType; - - - /** - * - * -- also in feBlend - */ - // SVGAnimatedValue getIn1(); - - - /** - * - */ - // SVGAnimatedValue getOperator(); - - /** - * - */ - SVGAnimatedValue getRadiusX(); - - /** - * - */ - SVGAnimatedValue getRadiusY(); - - //#################################################################### - //# SVGFEOffsetElement - //#################################################################### - - /** - * - * -- also in feBlend - */ - // SVGAnimatedValue getIn1(); - - /** - * - */ - SVGAnimatedValue getDx(); - - /** - * - */ - SVGAnimatedValue getDy(); - - - //#################################################################### - //# SVGFEPointLightElement - //#################################################################### - - /** - * Corresponds to attribute x on the given 'fePointLight' element. - */ - SVGAnimatedValue getX(); - - /** - * Corresponds to attribute y on the given 'fePointLight' element. - */ - SVGAnimatedValue getY(); - - /** - * Corresponds to attribute z on the given 'fePointLight' element. - */ - SVGAnimatedValue getZ(); - - //#################################################################### - //# SVGFESpecularLightingElement - //#################################################################### - - - /** - * - * -- also in feBlend - */ - // SVGAnimatedValue getIn1(); - - /** - * - */ - // SVGAnimatedValue getSurfaceScale(); - - /** - * - */ - SVGAnimatedValue getSpecularConstant(); - - /** - * - */ - SVGAnimatedValue getSpecularExponent(); - - - //#################################################################### - //# SVGFESpotLightElement - //#################################################################### - - /** - * Corresponds to attribute x on the given 'feSpotLight' element. - */ - // SVGAnimatedValue getX(); - - /** - * Corresponds to attribute y on the given 'feSpotLight' element. - */ - // SVGAnimatedValue getY(); - - /** - * Corresponds to attribute z on the given 'feSpotLight' element. - */ - // SVGAnimatedValue getZ(); - - /** - * Corresponds to attribute pointsAtX on the given 'feSpotLight' element. - */ - SVGAnimatedValue getPointsAtX(); - - /** - * Corresponds to attribute pointsAtY on the given 'feSpotLight' element. - */ - SVGAnimatedValue getPointsAtY(); - - /** - * Corresponds to attribute pointsAtZ on the given 'feSpotLight' element. - */ - SVGAnimatedValue getPointsAtZ(); - - /** - * Corresponds to attribute specularExponent on the - * given 'feSpotLight' element. - */ - // SVGAnimatedValue getSpecularExponent(); - - /** - * Corresponds to attribute limitingConeAngle on the - * given 'feSpotLight' element. - */ - SVGAnimatedValue getLimitingConeAngle(); - - - //#################################################################### - //# SVGFETileElement - //#################################################################### - - - /** - * - * -- also in feBlend - */ - // SVGAnimatedValue getIn1(); - - - //#################################################################### - //# SVGFETurbulenceElement - //#################################################################### - - - /** - * Turbulence Types - */ - typedef enum - { - SVG_TURBULENCE_TYPE_UNKNOWN = 0, - SVG_TURBULENCE_TYPE_FRACTALNOISE = 1, - SVG_TURBULENCE_TYPE_TURBULENCE = 2 - } TurbulenceType; - - /** - * Stitch Options - */ - typedef enum - { - SVG_STITCHTYPE_UNKNOWN = 0, - SVG_STITCHTYPE_STITCH = 1, - SVG_STITCHTYPE_NOSTITCH = 2 - } StitchOption; - - - - /** - * - */ - SVGAnimatedValue getBaseFrequencyX(); - - /** - * - */ - SVGAnimatedValue getBaseFrequencyY(); - - /** - * - */ - SVGAnimatedValue getNumOctaves(); - - /** - * - */ - SVGAnimatedValue getSeed(); - - /** - * - */ - SVGAnimatedValue getStitchTiles(); - - /** - * - */ - SVGAnimatedValue getType(); - - - - //#################################################################### - //# SVGFilterElement - //#################################################################### - - - /** - * Corresponds to attribute filterUnits on the given 'filter' element. Takes one - * of the constants defined in SVGUnitTypes. - */ - SVGAnimatedValue getFilterUnits(); - - /** - * Corresponds to attribute primitiveUnits on the given 'filter' element. Takes - * one of the constants defined in SVGUnitTypes. - */ - SVGAnimatedValue getPrimitiveUnits(); - - /** - * - */ - // SVGAnimatedValue getX(); - - /** - * Corresponds to attribute x on the given 'filter' element. - */ - // SVGAnimatedValue getY(); - - /** - * Corresponds to attribute y on the given 'filter' element. - */ - // SVGAnimatedValue getWidth(); - - /** - * Corresponds to attribute height on the given 'filter' element. - */ - // SVGAnimatedValue getHeight(); - - - /** - * Corresponds to attribute filterRes on the given 'filter' element. - * Contains the X component of attribute filterRes. - */ - SVGAnimatedValue getFilterResX(); - - /** - * Corresponds to attribute filterRes on the given 'filter' element. - * Contains the Y component(possibly computed automatically) - * of attribute filterRes. - */ - SVGAnimatedValue getFilterResY(); - - /** - * Sets the values for attribute filterRes. - */ - void setFilterRes(unsigned long filterResX, unsigned long filterResY); - - - //#################################################################### - //# SVGFontElement - //#################################################################### - - //#################################################################### - //# SVGFontFaceElement - //#################################################################### - - //#################################################################### - //# SVGFontFaceFormatElement - //#################################################################### - - //#################################################################### - //# SVGFontFaceNameElement - //#################################################################### - - //#################################################################### - //# SVGFontFaceSrcElement - //#################################################################### - - //#################################################################### - //# SVGFontFaceUriElement - //#################################################################### - - //#################################################################### - //# SVGForeignObjectElement - //#################################################################### - - /** - * - */ - // SVGAnimatedValue getX(); - - /** - * - */ - // SVGAnimatedValue getY(); - - /** - * - */ - // SVGAnimatedValue getWidth(); - - /** - * - */ - // SVGAnimatedValue getHeight(); - - - - //#################################################################### - //# SVGGlyphRefElement - //#################################################################### - - - /** - * Get the attribute glyphRef on the given element. - */ - // DOMString getGlyphRef(); - - /** - * Set the attribute glyphRef on the given element. - */ - // void setGlyphRef(const DOMString &val) throw(DOMException); - - /** - * Get the attribute format on the given element. - */ - // DOMString getFormat(); - - /** - * Set the attribute format on the given element. - */ - // void setFormat(const DOMString &val) throw(DOMException); - - /** - * Get the attribute x on the given element. - */ - // double getX(); - - /** - * Set the attribute x on the given element. - */ - // void setX(double val) throw(DOMException); - - /** - * Get the attribute y on the given element. - */ - // double getY(); - - /** - * Set the attribute y on the given element. - */ - // void setY(double val) throw(DOMException); - - /** - * Get the attribute dx on the given element. - */ - // double getDx(); - - /** - * Set the attribute dx on the given element. - */ - // void setDx(double val) throw(DOMException); - - /** - * Get the attribute dy on the given element. - */ - // double getDy(); - - /** - * Set the attribute dy on the given element. - */ - // void setDy(double val) throw(DOMException); - - - //#################################################################### - //# SVGGradientElement - //#################################################################### - - - /** - * Spread Method Types - */ - typedef enum - { - SVG_SPREADMETHOD_UNKNOWN = 0, - SVG_SPREADMETHOD_PAD = 1, - SVG_SPREADMETHOD_REFLECT = 2, - SVG_SPREADMETHOD_REPEAT = 3 - } SpreadMethodType; - - - /** - * Corresponds to attribute gradientUnits on the given element. - * Takes one of the constants defined in SVGUnitTypes. - */ - SVGAnimatedValue &getGradientUnits(); - - /** - * Corresponds to attribute gradientTransform on the given element. - */ - SVGAnimatedValueList &getGradientTransform(); - - /** - * Corresponds to attribute spreadMethod on the given element. - * One of the Spread Method Types. - */ - SVGAnimatedValue &getSpreadMethod(); - - - - //#################################################################### - //# SVGHKernElement - //#################################################################### - - //#################################################################### - //# SVGImageElement - //#################################################################### - - /** - * Corresponds to attribute x on the given 'image' element. - */ - // SVGAnimatedValue getX(); - - /** - * Corresponds to attribute y on the given 'image' element. - */ - // SVGAnimatedValue getY(); - - /** - * Corresponds to attribute width on the given 'image' element. - */ - // SVGAnimatedValue getWidth(); - - /** - * Corresponds to attribute height on the given 'image' element. - */ - // SVGAnimatedValue getHeight(); - - - /** - * Corresponds to attribute preserveAspectRatio on the given element. - */ - // SVGAnimatedPreserveAspectRatio getPreserveAspectRatio(); - - //#################################################################### - //# SVGLinearGradientElement - //#################################################################### - - /** - * Corresponds to attribute x1 on the given 'linearGradient' element. - */ - // SVGAnimatedValue getX1(); - - /** - * Corresponds to attribute y1 on the given 'linearGradient' element. - */ - // SVGAnimatedValue getY1(); - - /** - * Corresponds to attribute x2 on the given 'linearGradient' element. - */ - // SVGAnimatedValue getX2(); - - /** - * Corresponds to attribute y2 on the given 'linearGradient' element. - */ - // SVGAnimatedValue getY2(); - - - - //#################################################################### - //# SVGLineElement - //#################################################################### - - /** - * Corresponds to attribute x1 on the given 'line' element. - */ - // SVGAnimatedValue getX1(); - - /** - * Corresponds to attribute y1 on the given 'line' element. - */ - // SVGAnimatedValue getY1(); - - /** - * Corresponds to attribute x2 on the given 'line' element. - */ - // SVGAnimatedValue getX2(); - - /** - * Corresponds to attribute y2 on the given 'line' element. - */ - // SVGAnimatedValue getY2(); - - - //#################################################################### - //# SVGMarkerElement - //#################################################################### - - - /** - * Marker Unit Types - */ - typedef enum - { - SVG_MARKERUNITS_UNKNOWN = 0, - SVG_MARKERUNITS_USERSPACEONUSE = 1, - SVG_MARKERUNITS_STROKEWIDTH = 2 - } MarkerUnitType; - - /** - * Marker Orientation Types - */ - typedef enum - { - SVG_MARKER_ORIENT_UNKNOWN = 0, - SVG_MARKER_ORIENT_AUTO = 1, - SVG_MARKER_ORIENT_ANGLE = 2 - } MarkerOrientationType; - - - /** - * Corresponds to attribute refX on the given 'marker' element. - */ - SVGAnimatedValue getRefX(); - - /** - * Corresponds to attribute refY on the given 'marker' element. - */ - SVGAnimatedValue getRefY(); - - /** - * Corresponds to attribute markerUnits on the given 'marker' element. - * One of the Marker Units Types defined above. - */ - SVGAnimatedValue getMarkerUnits(); - - /** - * Corresponds to attribute markerWidth on the given 'marker' element. - */ - SVGAnimatedValue getMarkerWidth(); - - /** - * Corresponds to attribute markerHeight on the given 'marker' element. - */ - SVGAnimatedValue getMarkerHeight(); - - /** - * Corresponds to attribute orient on the given 'marker' element. - * One of the Marker Orientation Types defined above. - */ - SVGAnimatedValue getOrientType(); - - /** - * Corresponds to attribute orient on the given 'marker' element. - * If markerUnits is SVG_MARKER_ORIENT_ANGLE, the angle value for - * attribute orient; otherwise, it will be set to zero. - */ - SVGAnimatedValue getOrientAngle(); - - - /** - * Sets the value of attribute orient to 'auto'. - */ - void setOrientToAuto(); - - /** - * Sets the value of attribute orient to the given angle. - */ - void setOrientToAngle(const SVGAngle &angle); - - - //#################################################################### - //# SVGMaskElement - //#################################################################### - - - /** - * Corresponds to attribute maskUnits on the given 'mask' element. Takes one of - * the constants defined in SVGUnitTypes. - */ - SVGAnimatedValue getMaskUnits(); - - /** - * Corresponds to attribute maskContentUnits on the given 'mask' element. Takes - * one of the constants defined in SVGUnitTypes. - */ - SVGAnimatedValue getMaskContentUnits(); - - /** - * Corresponds to attribute x on the given 'mask' element. - */ - // SVGAnimatedValue getX(); - - /** - * Corresponds to attribute y on the given 'mask' element. - */ - // SVGAnimatedValue getY(); - - /** - * Corresponds to attribute width on the given 'mask' element. - */ - // SVGAnimatedValue getWidth(); - - /** - * Corresponds to attribute height on the given 'mask' element. - */ - // SVGAnimatedValue getHeight(); - - //#################################################################### - //# SVGMetadataElement - //#################################################################### - - //#################################################################### - //# SVGMissingGlyphElement - //#################################################################### - - - //#################################################################### - //# SVGMPathElement - //#################################################################### - - /** - * Corresponds to attribute pathLength on the given 'path' element. - */ - SVGAnimatedValue getPathLength(); - - /** - * Returns the user agent's computed value for the total length of the path using - * the user agent's distance-along-a-path algorithm, as a distance in the current - * user coordinate system. - */ - double getTotalLength(); - - /** - * Returns the(x,y) coordinate in user space which is distance units along the - * path, utilizing the user agent's distance-along-a-path algorithm. - */ - SVGPoint getPointAtLength(double distance); - - /** - * Returns the index into pathSegList which is distance units along the path, - * utilizing the user agent's distance-along-a-path algorithm. - */ - unsigned long getPathSegAtLength(double distance); - - /** - * Returns a stand-alone, parentless SVGPathSegClosePath object. - */ - SVGPathSeg createSVGPathSegClosePath(); - - /** - * Returns a stand-alone, parentless SVGPathSegMovetoAbs object. - */ - SVGPathSeg createSVGPathSegMovetoAbs(double x, double y); - - /** - * Returns a stand-alone, parentless SVGPathSegMovetoRel object. - */ - SVGPathSeg createSVGPathSegMovetoRel(double x, double y); - - /** - * Returns a stand-alone, parentless SVGPathSegLinetoAbs object. - */ - SVGPathSeg createSVGPathSegLinetoAbs(double x, double y); - - /** - * Returns a stand-alone, parentless SVGPathSegLinetoRel object. - */ - SVGPathSeg createSVGPathSegLinetoRel(double x, double y); - - /** - * Returns a stand-alone, parentless SVGPathSegCurvetoCubicAbs object. - */ - SVGPathSeg createSVGPathSegCurvetoCubicAbs(double x, double y, - double x1, double y1, double x2, double y2); - - /** - * Returns a stand-alone, parentless SVGPathSegCurvetoCubicRel object. - */ - SVGPathSeg createSVGPathSegCurvetoCubicRel(double x, double y, - double x1, double y1, double x2, double y2); - - /** - * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticAbs object. - */ - SVGPathSeg createSVGPathSegCurvetoQuadraticAbs(double x, double y, - double x1, double y1); - - /** - * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticRel object. - */ - SVGPathSeg createSVGPathSegCurvetoQuadraticRel(double x, double y, - double x1, double y1); - - /** - * Returns a stand-alone, parentless SVGPathSegArcAbs object. - */ - SVGPathSeg createSVGPathSegArcAbs(double x, double y, - double r1, double r2, double angle, - bool largeArcFlag, bool sweepFlag); - - /** - * Returns a stand-alone, parentless SVGPathSegArcRel object. - */ - SVGPathSeg createSVGPathSegArcRel(double x, double y, double r1, - double r2, double angle, bool largeArcFlag, - bool sweepFlag); - - /** - * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalAbs object. - */ - SVGPathSeg createSVGPathSegLinetoHorizontalAbs(double x); - - /** - * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalRel object. - */ - SVGPathSeg createSVGPathSegLinetoHorizontalRel(double x); - - /** - * Returns a stand-alone, parentless SVGPathSegLinetoVerticalAbs object. - */ - SVGPathSeg createSVGPathSegLinetoVerticalAbs(double y); - - /** - * Returns a stand-alone, parentless SVGPathSegLinetoVerticalRel object. - */ - SVGPathSeg createSVGPathSegLinetoVerticalRel(double y); - - /** - * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothAbs object. - */ - SVGPathSeg createSVGPathSegCurvetoCubicSmoothAbs(double x, double y, - double x2, double y2); - - /** - * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothRel object. - */ - SVGPathSeg createSVGPathSegCurvetoCubicSmoothRel(double x, double y, - double x2, double y2); - - /** - * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothAbs - * object. - */ - SVGPathSeg createSVGPathSegCurvetoQuadraticSmoothAbs(double x, double y); - - /** - * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothRel - * object. - */ - SVGPathSeg createSVGPathSegCurvetoQuadraticSmoothRel(double x, double y); - - //#################################################################### - //# SVGPathElement - //#################################################################### - - //#################################################################### - //# SVGPatternElement - //#################################################################### - - /** - * Corresponds to attribute patternUnits on the given 'pattern' element. - * Takes one of the constants defined in SVGUnitTypes. - */ - SVGAnimatedValue getPatternUnits(); - - /** - * Corresponds to attribute patternContentUnits on the given 'pattern' - * element. Takes one of the constants defined in SVGUnitTypes. - */ - SVGAnimatedValue getPatternContentUnits(); - - /** - * Corresponds to attribute patternTransform on the given 'pattern' element. - */ - SVGAnimatedValueList &getPatternTransform(); - - /** - * Corresponds to attribute x on the given 'pattern' element. - */ - // SVGAnimatedValue getX(); - - /** - * - */ - // SVGAnimatedValue getY(); - - /** - * Corresponds to attribute width on the given 'pattern' element. - */ - // SVGAnimatedValue getWidth(); - - /** - * Corresponds to attribute height on the given 'pattern' element. - */ - // SVGAnimatedValue getHeight(); - - - //#################################################################### - //# SVGPolyLineElement - //#################################################################### - - //#################################################################### - //# SVGPolygonElement - //#################################################################### - - //#################################################################### - //# SVGRadialGradientElement - //#################################################################### - - - /** - * Corresponds to attribute cx on the given 'radialGradient' element. - */ - // SVGAnimatedValue getCx(); - - - /** - * Corresponds to attribute cy on the given 'radialGradient' element. - */ - // SVGAnimatedValue getCy(); - - - /** - * Corresponds to attribute r on the given 'radialGradient' element. - */ - // SVGAnimatedValue getR(); - - - /** - * Corresponds to attribute fx on the given 'radialGradient' element. - */ - SVGAnimatedValue getFx(); - - - /** - * Corresponds to attribute fy on the given 'radialGradient' element. - */ - SVGAnimatedValue getFy(); - - - //#################################################################### - //# SVGRectElement - //#################################################################### - - /** - * Corresponds to attribute x on the given 'rect' element. - */ - // SVGAnimatedValue getX(); - - /** - * Corresponds to attribute y on the given 'rect' element. - */ - // SVGAnimatedValue getY(); - - /** - * Corresponds to attribute width on the given 'rect' element. - */ - // SVGAnimatedValue getWidth(); - - /** - * Corresponds to attribute height on the given 'rect' element. - */ - // SVGAnimatedValue getHeight(); - - - /** - * Corresponds to attribute rx on the given 'rect' element. - */ - // SVGAnimatedValue getRx(); - - /** - * Corresponds to attribute ry on the given 'rect' element. - */ - // SVGAnimatedValue getRy(); - - - //#################################################################### - //# SVGScriptElement - //#################################################################### - - /** - * - */ - // DOMString getType(); - - /** - * - */ - // void setType(const DOMString &val) throw(DOMException); - - //#################################################################### - //# SVGSetElement - //#################################################################### - - //#################################################################### - //# SVGStopElement - //#################################################################### - - - /** - * Corresponds to attribute offset on the given 'stop' element. - */ - // SVGAnimatedValue getOffset(); - - - //#################################################################### - //# SVGStyleElement - //#################################################################### - - /** - * Get the attribute xml:space on the given element. - */ - DOMString getXmlspace(); - - /** - * Set the attribute xml:space on the given element. - */ - void setXmlspace(const DOMString &val) throw(DOMException); - - /** - * Get the attribute type on the given 'style' element. - */ - // DOMString getType(); - - /** - * Set the attribute type on the given 'style' element. - */ - // void setType(const DOMString &val) throw(DOMException); - - /** - * Get the attribute media on the given 'style' element. - */ - DOMString getMedia(); - - /** - * Set the attribute media on the given 'style' element. - */ - void setMedia(const DOMString &val) throw(DOMException); - - /** - * Get the attribute title on the given 'style' element. - */ - DOMString getTitle(); - - /** - * Set the attribute title on the given 'style' element. - */ - void setTitle(const DOMString &val) throw(DOMException); - - //#################################################################### - //# SVGSymbolElement - //#################################################################### - - //#################################################################### - //# SVGSVGElement - //#################################################################### - - /** - * Corresponds to attribute x on the given 'svg' element. - */ - // SVGAnimatedValue getX(); - - /** - * Corresponds to attribute y on the given 'svg' element. - */ - // SVGAnimatedValue getY(); - - /** - * Corresponds to attribute width on the given 'svg' element. - */ - // SVGAnimatedValue getWidth(); - - /** - * Corresponds to attribute height on the given 'svg' element. - */ - // SVGAnimatedValue getHeight(); - - /** - * Get the attribute contentScriptType on the given 'svg' element. - */ - DOMString getContentScriptType(); - - /** - * Set the attribute contentScriptType on the given 'svg' element. - */ - void setContentScriptType(const DOMString &val) throw(DOMException); - - - /** - * Get the attribute contentStyleType on the given 'svg' element. - */ - DOMString getContentStyleType(); - - /** - * Set the attribute contentStyleType on the given 'svg' element. - */ - void setContentStyleType(const DOMString &val) throw(DOMException); - - /** - * The position and size of the viewport(implicit or explicit) that corresponds - * to this 'svg' element. When the user agent is actually rendering the content, - * then the position and size values represent the actual values when rendering. - * The position and size values are unitless values in the coordinate system of - * the parent element. If no parent element exists(i.e., 'svg' element - * represents the root of the document tree), if this SVG document is embedded as - * part of another document(e.g., via the HTML 'object' element), then the - * position and size are unitless values in the coordinate system of the parent - * document.(If the parent uses CSS or XSL layout, then unitless values - * represent pixel units for the current CSS or XSL viewport, as described in the - * CSS2 specification.) If the parent element does not have a coordinate system, - * then the user agent should provide reasonable default values for this attribute. - * */ - SVGRect getViewport(); - - /** - * Size of a pixel units(as defined by CSS2) along the x-axis of the viewport, - * which represents a unit somewhere in the range of 70dpi to 120dpi, and, on - * systems that support this, might actually match the characteristics of the - * target medium. On systems where it is impossible to know the size of a pixel, - * a suitable default pixel size is provided. - */ - double getPixelUnitToMillimeterX(); - - /** - * Corresponding size of a pixel unit along the y-axis of the viewport. - */ - double getPixelUnitToMillimeterY(); - - /** - * User interface(UI) events in DOM Level 2 indicate the screen positions at - * which the given UI event occurred. When the user agent actually knows the - * physical size of a "screen unit", this attribute will express that information; - * otherwise, user agents will provide a suitable default value such as .28mm. - */ - double getScreenPixelToMillimeterX(); - - /** - * Corresponding size of a screen pixel along the y-axis of the viewport. - */ - double getScreenPixelToMillimeterY(); - - - /** - * The initial view(i.e., before magnification and panning) of the current - * innermost SVG document fragment can be either the "standard" view(i.e., based - * on attributes on the 'svg' element such as fitBoxToViewport) or to a "custom" - * view(i.e., a hyperlink into a particular 'view' or other element - see - * Linking into SVG content: URI fragments and SVG views). If the initial view is - * the "standard" view, then this attribute is false. If the initial view is a - * "custom" view, then this attribute is true. - */ - bool getUseCurrentView(); - - /** - * Set the value above - */ - void setUseCurrentView(bool val) throw(DOMException); - - /** - * The definition of the initial view(i.e., before magnification and panning) of - * the current innermost SVG document fragment. The meaning depends on the - * situation: - * - * * If the initial view was a "standard" view, then: - * o the values for viewBox, preserveAspectRatio and zoomAndPan within - * currentView will match the values for the corresponding DOM attributes that - * are on SVGSVGElement directly - * o the values for transform and viewTarget within currentView will be null - * * If the initial view was a link into a 'view' element, then: - * o the values for viewBox, preserveAspectRatio and zoomAndPan within - * currentView will correspond to the corresponding attributes for the given - * 'view' element - * o the values for transform and viewTarget within currentView will be null - * * If the initial view was a link into another element(i.e., other than a - * 'view'), then: - * o the values for viewBox, preserveAspectRatio and zoomAndPan within - * currentView will match the values for the corresponding DOM attributes that - * are on SVGSVGElement directly for the closest ancestor 'svg' element - * o the values for transform within currentView will be null - * o the viewTarget within currentView will represent the target of the link - * * If the initial view was a link into the SVG document fragment using an SVG - * view specification fragment identifier(i.e., #svgView(...)), then: - * o the values for viewBox, preserveAspectRatio, zoomAndPan, transform and - * viewTarget within currentView will correspond to the values from the SVG view - * specification fragment identifier - * - */ - SVGViewSpec getCurrentView(); - - - /** - * This attribute indicates the current scale factor relative to the initial view - * to take into account user magnification and panning operations, as described - * under Magnification and panning. DOM attributes currentScale and - * currentTranslate are equivalent to the 2x3 matrix [a b c d e f] = - * [currentScale 0 0 currentScale currentTranslate.x currentTranslate.y]. If - * "magnification" is enabled(i.e., zoomAndPan="magnify"), then the effect is as - * if an extra transformation were placed at the outermost level on the SVG - * document fragment(i.e., outside the outermost 'svg' element). - */ - double getCurrentScale(); - - /** - * Set the value above. - */ - void setCurrentScale(double val) throw(DOMException); - - /** - * The corresponding translation factor that takes into account - * user "magnification". - */ - SVGPoint getCurrentTranslate(); - - /** - * Takes a time-out value which indicates that redraw shall not occur until:(a) - * the corresponding unsuspendRedraw(suspend_handle_id) call has been made,(b) - * an unsuspendRedrawAll() call has been made, or(c) its timer has timed out. In - * environments that do not support interactivity(e.g., print media), then - * redraw shall not be suspended. suspend_handle_id = - * suspendRedraw(max_wait_milliseconds) and unsuspendRedraw(suspend_handle_id) - * must be packaged as balanced pairs. When you want to suspend redraw actions as - * a collection of SVG DOM changes occur, then precede the changes to the SVG DOM - * with a method call similar to suspend_handle_id = - * suspendRedraw(max_wait_milliseconds) and follow the changes with a method call - * similar to unsuspendRedraw(suspend_handle_id). Note that multiple - * suspendRedraw calls can be used at once and that each such method call is - * treated independently of the other suspendRedraw method calls. - */ - unsigned long suspendRedraw(unsigned long max_wait_milliseconds); - - /** - * Cancels a specified suspendRedraw() by providing a unique suspend_handle_id. - */ - void unsuspendRedraw(unsigned long suspend_handle_id) throw(DOMException); - - /** - * Cancels all currently active suspendRedraw() method calls. This method is most - * useful at the very end of a set of SVG DOM calls to ensure that all pending - * suspendRedraw() method calls have been cancelled. - */ - void unsuspendRedrawAll(); - - /** - * In rendering environments supporting interactivity, forces the user agent to - * immediately redraw all regions of the viewport that require updating. - */ - void forceRedraw(); - - /** - * Suspends(i.e., pauses) all currently running animations that are defined - * within the SVG document fragment corresponding to this 'svg' element, causing - * the animation clock corresponding to this document fragment to stand still - * until it is unpaused. - */ - void pauseAnimations(); - - /** - * Unsuspends(i.e., unpauses) currently running animations that are defined - * within the SVG document fragment, causing the animation clock to continue from - * the time at which it was suspended. - */ - void unpauseAnimations(); - - /** - * Returns true if this SVG document fragment is in a paused state. - */ - bool animationsPaused(); - - /** - * Returns the current time in seconds relative to the start time for - * the current SVG document fragment. - */ - // double getCurrentTime(); - - /** - * Adjusts the clock for this SVG document fragment, establishing - * a new current time. - */ - void setCurrentTime(double seconds); - - /** - * Returns the list of graphics elements whose rendered content intersects the - * supplied rectangle, honoring the 'pointer-events' property value on each - * candidate graphics element. - */ - NodeList getIntersectionList(const SVGRect &rect, - const SVGElementPtr referenceElement); - - /** - * Returns the list of graphics elements whose rendered content is entirely - * contained within the supplied rectangle, honoring the 'pointer-events' - * property value on each candidate graphics element. - */ - NodeList getEnclosureList(const SVGRect &rect, - const SVGElementPtr referenceElement); - - /** - * Returns true if the rendered content of the given element intersects the - * supplied rectangle, honoring the 'pointer-events' property value on each - * candidate graphics element. - */ - bool checkIntersection(const SVGElementPtr element, const SVGRect &rect); - - /** - * Returns true if the rendered content of the given element is entirely - * contained within the supplied rectangle, honoring the 'pointer-events' - * property value on each candidate graphics element. - */ - bool checkEnclosure(const SVGElementPtr element, const SVGRect &rect); - - /** - * Unselects any selected objects, including any selections of text - * strings and type-in bars. - */ - void deselectAll(); - - /** - * Creates an SVGNumber object outside of any document trees. The object - * is initialized to a value of zero. - */ - SVGNumber createSVGNumber(); - - /** - * Creates an SVGLength object outside of any document trees. The object - * is initialized to the value of 0 user units. - */ - SVGLength createSVGLength(); - - /** - * Creates an SVGAngle object outside of any document trees. The object - * is initialized to the value 0 degrees(unitless). - */ - SVGAngle createSVGAngle(); - - /** - * Creates an SVGPoint object outside of any document trees. The object - * is initialized to the point(0,0) in the user coordinate system. - */ - SVGPoint createSVGPoint(); - - /** - * Creates an SVGMatrix object outside of any document trees. The object - * is initialized to the identity matrix. - */ - SVGMatrix createSVGMatrix(); - - /** - * Creates an SVGRect object outside of any document trees. The object - * is initialized such that all values are set to 0 user units. - */ - SVGRect createSVGRect(); - - /** - * Creates an SVGTransform object outside of any document trees. - * The object is initialized to an identity matrix transform - * (SVG_TRANSFORM_MATRIX). - */ - SVGTransform createSVGTransform(); - - /** - * Creates an SVGTransform object outside of any document trees. - * The object is initialized to the given matrix transform - * (i.e., SVG_TRANSFORM_MATRIX). - */ - SVGTransform createSVGTransformFromMatrix(const SVGMatrix &matrix); - - /** - * Searches this SVG document fragment(i.e., the search is restricted to a - * subset of the document tree) for an Element whose id is given by elementId. If - * an Element is found, that Element is returned. If no such element exists, - * returns null. Behavior is not defined if more than one element has this id. - */ - ElementPtr getElementById(const DOMString& elementId); - - - //#################################################################### - //# SVGTextElement - //#################################################################### - - - //#################################################################### - //# SVGTextContentElement - //#################################################################### - - - /** - * lengthAdjust Types - */ - typedef enum - { - LENGTHADJUST_UNKNOWN = 0, - LENGTHADJUST_SPACING = 1, - LENGTHADJUST_SPACINGANDGLYPHS = 2 - } LengthAdjustType; - - - /** - * Corresponds to attribute textLength on the given element. - */ - SVGAnimatedValue getTextLength(); - - - /** - * Corresponds to attribute lengthAdjust on the given element. The value must be - * one of the length adjust constants specified above. - */ - SVGAnimatedValue getLengthAdjust(); - - - /** - * Returns the total number of characters to be rendered within the current - * element. Includes characters which are included via a 'tref' reference. - */ - long getNumberOfChars(); - - /** - * The total sum of all of the advance values from rendering all of the - * characters within this element, including the advance value on the glyphs - *(horizontal or vertical), the effect of properties 'kerning', 'letter-spacing' - * and 'word-spacing' and adjustments due to attributes dx and dy on 'tspan' - * elements. For non-rendering environments, the user agent shall make reasonable - * assumptions about glyph metrics. - */ - double getComputedTextLength(); - - /** - * The total sum of all of the advance values from rendering the specified - * substring of the characters, including the advance value on the glyphs - *(horizontal or vertical), the effect of properties 'kerning', 'letter-spacing' - * and 'word-spacing' and adjustments due to attributes dx and dy on 'tspan' - * elements. For non-rendering environments, the user agent shall make reasonable - * assumptions about glyph metrics. - */ - double getSubStringLength(unsigned long charnum, unsigned long nchars) - throw(DOMException); - - /** - * Returns the current text position before rendering the character in the user - * coordinate system for rendering the glyph(s) that correspond to the specified - * character. The current text position has already taken into account the - * effects of any inter-character adjustments due to properties 'kerning', - * 'letter-spacing' and 'word-spacing' and adjustments due to attributes x, y, dx - * and dy. If multiple consecutive characters are rendered inseparably(e.g., as - * a single glyph or a sequence of glyphs), then each of the inseparable - * characters will return the start position for the first glyph. - */ - SVGPoint getStartPositionOfChar(unsigned long charnum) throw(DOMException); - - /** - * Returns the current text position after rendering the character in the user - * coordinate system for rendering the glyph(s) that correspond to the specified - * character. This current text position does not take into account the effects - * of any inter-character adjustments to prepare for the next character, such as - * properties 'kerning', 'letter-spacing' and 'word-spacing' and adjustments due - * to attributes x, y, dx and dy. If multiple consecutive characters are rendered - * inseparably(e.g., as a single glyph or a sequence of glyphs), then each of - * the inseparable characters will return the end position for the last glyph. - */ - SVGPoint getEndPositionOfChar(unsigned long charnum) throw(DOMException); - - /** - * Returns a tightest rectangle which defines the minimum and maximum X and Y - * values in the user coordinate system for rendering the glyph(s) that - * correspond to the specified character. The calculations assume that all glyphs - * occupy the full standard glyph cell for the font. If multiple consecutive - * characters are rendered inseparably(e.g., as a single glyph or a sequence of - * glyphs), then each of the inseparable characters will return the same extent. - */ - SVGRect getExtentOfChar(unsigned long charnum) throw(DOMException); - - /** - * Returns the rotation value relative to the current user coordinate system used - * to render the glyph(s) corresponding to the specified character. If multiple - * glyph(s) are used to render the given character and the glyphs each have - * different rotations(e.g., due to text-on-a-path), the user agent shall return - * an average value(e.g., the rotation angle at the midpoint along the path for - * all glyphs used to render this character). The rotation value represents the - * rotation that is supplemental to any rotation due to properties - * 'glyph-orientation-horizontal' and 'glyph-orientation-vertical'; thus, any - * glyph rotations due to these properties are not included into the returned - * rotation value. If multiple consecutive characters are rendered inseparably - *(e.g., as a single glyph or a sequence of glyphs), then each of the - * inseparable characters will return the same rotation value. - */ - double getRotationOfChar(unsigned long charnum) throw(DOMException); - - /** - * Returns the index of the character whose corresponding glyph cell bounding box - * contains the specified point. The calculations assume that all glyphs occupy - * the full standard glyph cell for the font. If no such character exists, a - * value of -1 is returned. If multiple such characters exist, the character - * within the element whose glyphs were rendered last(i.e., take into account - * any reordering such as for bidirectional text) is used. If multiple - * consecutive characters are rendered inseparably(e.g., as a single glyph or a - * sequence of glyphs), then the user agent shall allocate an equal percentage of - * the text advance amount to each of the contributing characters in determining - * which of the characters is chosen. - */ - long getCharNumAtPosition(const SVGPoint &point); - - /** - * Causes the specified substring to be selected just as if the user - * selected the substring interactively. - */ - void selectSubString(unsigned long charnum, unsigned long nchars) - throw(DOMException); - - - - - - //#################################################################### - //# SVGTextPathElement - //#################################################################### - - - /** - * textPath Method Types - */ - typedef enum - { - TEXTPATH_METHODTYPE_UNKNOWN = 0, - TEXTPATH_METHODTYPE_ALIGN = 1, - TEXTPATH_METHODTYPE_STRETCH = 2 - } TextPathMethodType; - - /** - * textPath Spacing Types - */ - typedef enum - { - TEXTPATH_SPACINGTYPE_UNKNOWN = 0, - TEXTPATH_SPACINGTYPE_AUTO = 1, - TEXTPATH_SPACINGTYPE_EXACT = 2 - } TextPathSpacingType; - - - /** - * Corresponds to attribute startOffset on the given 'textPath' element. - */ - SVGAnimatedValue getStartOffset(); - - /** - * Corresponds to attribute method on the given 'textPath' element. The value - * must be one of the method type constants specified above. - */ - SVGAnimatedValue getMethod(); - - /** - * Corresponds to attribute spacing on the given 'textPath' element. - * The value must be one of the spacing type constants specified above. - */ - SVGAnimatedValue getSpacing(); - - - //#################################################################### - //# SVGTextPositioningElement - //#################################################################### - - - /** - * Corresponds to attribute x on the given element. - */ - // SVGAnimatedValue getX(); - - /** - * Corresponds to attribute y on the given element. - */ - // SVGAnimatedValue getY(); - - /** - * Corresponds to attribute dx on the given element. - */ - // SVGAnimatedValue getDx(); - - /** - * Corresponds to attribute dy on the given element. - */ - // SVGAnimatedValue getDy(); - - - /** - * Corresponds to attribute rotate on the given element. - */ - SVGAnimatedValueList getRotate(); - - - //#################################################################### - //# SVGTitleElement - //#################################################################### - - //#################################################################### - //# SVGTRefElement - //#################################################################### - - //#################################################################### - //# SVGTSpanElement - //#################################################################### - - //#################################################################### - //# SVGSwitchElement - //#################################################################### - - //#################################################################### - //# SVGUseElement - //#################################################################### - - /** - * Corresponds to attribute x on the given 'use' element. - */ - // SVGAnimatedValue getX(); - - /** - * Corresponds to attribute y on the given 'use' element. - */ - // SVGAnimatedValue getY(); - - /** - * Corresponds to attribute width on the given 'use' element. - */ - // SVGAnimatedValue getWidth(); - - /** - * Corresponds to attribute height on the given 'use' element. - */ - // SVGAnimatedValue getHeight(); - - /** - * The root of the "instance tree". See description of SVGElementInstance for - * a discussion on the instance tree. - * */ - SVGElementInstance getInstanceRoot(); - - /** - * If the 'href' attribute is being animated, contains the current animated root - * of the "instance tree". If the 'href' attribute is not currently being - * animated, contains the same value as 'instanceRoot'. The root of the "instance - * tree". See description of SVGElementInstance for a discussion on the instance - * tree. - */ - SVGElementInstance getAnimatedInstanceRoot(); - - //#################################################################### - //# SVGVKernElement - //#################################################################### - - //#################################################################### - //# SVGViewElement - //#################################################################### - - - /** - * - */ - SVGValueList getViewTarget(); - - - - - //################## - //# Non-API methods - //################## - - - /** - * - */ - ~SVGElement() {} - - -}; - - - -/*######################################################################### -## SVGDocument -#########################################################################*/ - -/** - * When an 'svg' element is embedded inline as a component of a document from - * another namespace, such as when an 'svg' element is embedded inline within an - * XHTML document [XHTML], then an SVGDocument object will not exist; instead, - * the root object in the document object hierarchy will be a Document object of - * a different type, such as an HTMLDocument object. - * - * However, an SVGDocument object will indeed exist when the root element of the - * XML document hierarchy is an 'svg' element, such as when viewing a stand-alone - * SVG file(i.e., a file with MIME type "image/svg+xml"). In this case, the - * SVGDocument object will be the root object of the document object model - * hierarchy. - * - * In the case where an SVG document is embedded by reference, such as when an - * XHTML document has an 'object' element whose href attribute references an SVG - * document(i.e., a document whose MIME type is "image/svg+xml" and whose root - * element is thus an 'svg' element), there will exist two distinct DOM - * hierarchies. The first DOM hierarchy will be for the referencing document - *(e.g., an XHTML document). The second DOM hierarchy will be for the referenced - * SVG document. In this second DOM hierarchy, the root object of the document - * object model hierarchy is an SVGDocument object. - */ -class SVGDocument : public Document, - public events::DocumentEvent -{ -public: - - - /** - * The title of a document as specified by the title sub-element of the 'svg' - * root element(i.e., Here is the title...) - */ - DOMString getTitle(); - - /** - * Returns the URI of the page that linked to this page. The value is an empty - * string if the user navigated to the page directly(not through a link, but, - * for example, via a bookmark). - */ - DOMString getReferrer(); - - /** - * The domain name of the server that served the document, or a null string if - * the server cannot be identified by a domain name. - */ - DOMString getDomain(); - - /** - * The complete URI of the document. - */ - DOMString getURL(); - - /** - * The root 'svg' element in the document hierarchy. - */ - SVGElementPtr getRootElement(); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - ~SVGDocument() {} - -}; - - - -/*######################################################################### -## GetSVGDocument -#########################################################################*/ - -/** - * In the case where an SVG document is embedded by reference, such as when an - * XHTML document has an 'object' element whose href(or equivalent) attribute - * references an SVG document(i.e., a document whose MIME type is - * "image/svg+xml" and whose root element is thus an 'svg' element), the SVG user - * agent is required to implement the GetSVGDocument interface for the element - * which references the SVG document(e.g., the HTML 'object' or comparable - * referencing elements). - */ -class GetSVGDocument -{ -public: - - /** - * Returns the SVGDocument object for the referenced SVG document. - */ - SVGDocumentPtr getSVGDocument() - throw(DOMException); - - //################## - //# Non-API methods - //################## - - /** - * - */ - ~GetSVGDocument() {} - -}; - - - - - - - -} //namespace svg -} //namespace dom -} //namespace w3c -} //namespace org - -#endif // __SVG_H__ -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - +#ifndef __SVG_H__ +#define __SVG_H__ + +/** + * Phoebe DOM Implementation. + * + * This is a C++ approximation of the W3C DOM model, which follows + * fairly closely the specifications in the various .idl files, copies of + * which are provided for reference. Most important is this one: + * + * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html + * + * Authors: + * Bob Jamison + * + * Copyright(C) 2005-2008 Bob Jamison + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or(at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * ======================================================================= + * NOTES + * + * This API follows: + * http://www.w3.org/TR/SVG11/svgdom.html + * + * This file defines the main SVG-DOM Node types. Other non-Node types are + * defined in svgtypes.h. + * + */ + + +// For access to DOM2 core +#include "dom/dom.h" + +// For access to DOM2 events +#include "dom/events.h" + +// For access to those parts from DOM2 CSS OM used by SVG DOM. +#include "dom/css.h" + +// For access to those parts from DOM2 Views OM used by SVG DOM. +#include "dom/views.h" + +// For access to the SMIL OM used by SVG DOM. +#include "dom/smil.h" + + +#include + +#define SVG_NAMESPACE "http://www.w3.org/2000/svg" + + +namespace org +{ +namespace w3c +{ +namespace dom +{ +namespace svg +{ + + +//local definitions +typedef dom::DOMString DOMString; +typedef dom::DOMException DOMException; +typedef dom::Element Element; +typedef dom::ElementPtr ElementPtr; +typedef dom::Document Document; +typedef dom::DocumentPtr DocumentPtr; +typedef dom::NodeList NodeList; + + + + +class SVGElement; +typedef Ptr SVGElementPtr; +class SVGUseElement; +typedef Ptr SVGUseElementPtr; +class SVGDocument; +typedef Ptr SVGDocumentPtr; + +/*######################################################################### +## SVGException +#########################################################################*/ + +/** + * + */ +class SVGException +{ +public: + + /** + * SVGExceptionCode + */ + typedef enum + { + SVG_WRONG_TYPE_ERR = 0, + SVG_INVALID_VALUE_ERR = 1, + SVG_MATRIX_NOT_INVERTABLE = 2 + } SVGExceptionCode; + + unsigned short code; +}; + + + + + + + +//######################################################################## +//######################################################################## +//# V A L U E S +//######################################################################## +//######################################################################## + + + + + +/*######################################################################### +## SVGAngle +#########################################################################*/ + +/** + * + */ +class SVGAngle +{ +public: + + /** + * Angle Unit Types + */ + typedef enum + { + SVG_ANGLETYPE_UNKNOWN = 0, + SVG_ANGLETYPE_UNSPECIFIED = 1, + SVG_ANGLETYPE_DEG = 2, + SVG_ANGLETYPE_RAD = 3, + SVG_ANGLETYPE_GRAD = 4 + } AngleUnitType; + + /** + * + */ + unsigned short getUnitType(); + + /** + * + */ + double getValue(); + + /** + * + */ + void setValue(double val) throw(DOMException); + + /** + * + */ + double getValueInSpecifiedUnits(); + + /** + * + */ + void setValueInSpecifiedUnits(double /*val*/) + throw(DOMException); + + /** + * + */ + DOMString getValueAsString(); + + /** + * + */ + void setValueAsString(const DOMString &/*val*/) + throw(DOMException); + + /** + * + */ + void newValueSpecifiedUnits(unsigned short /*unitType*/, + double /*valueInSpecifiedUnits*/); + + /** + * + */ + void convertToSpecifiedUnits(unsigned short /*unitType*/); + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGAngle(); + + /** + * + */ + SVGAngle(const SVGAngle &other); + + /** + * + */ + ~SVGAngle(); + +protected: + + int unitType; + + double value; + +}; + + +/*######################################################################### +## SVGLength +#########################################################################*/ + +/** + * + */ +class SVGLength +{ +public: + + /** + * Length Unit Types + */ + typedef enum + { + SVG_LENGTHTYPE_UNKNOWN = 0, + SVG_LENGTHTYPE_NUMBER = 1, + SVG_LENGTHTYPE_PERCENTAGE = 2, + SVG_LENGTHTYPE_EMS = 3, + SVG_LENGTHTYPE_EXS = 4, + SVG_LENGTHTYPE_PX = 5, + SVG_LENGTHTYPE_CM = 6, + SVG_LENGTHTYPE_MM = 7, + SVG_LENGTHTYPE_IN = 8, + SVG_LENGTHTYPE_PT = 9, + SVG_LENGTHTYPE_PC = 10 + } LengthUnitType; + + /** + * + */ + unsigned short getUnitType(); + + /** + * + */ + double getValue(); + + /** + * + */ + void setValue(double val) throw(DOMException); + + /** + * + */ + double getValueInSpecifiedUnits(); + + /** + * + */ + void setValueInSpecifiedUnits(double /*val*/) throw(DOMException); + + /** + * + */ + DOMString getValueAsString(); + + /** + * + */ + void setValueAsString(const DOMString& /*val*/) throw(DOMException); + + /** + * + */ + void newValueSpecifiedUnits(unsigned short /*unitType*/, double /*val*/); + + /** + * + */ + void convertToSpecifiedUnits(unsigned short /*unitType*/); + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGLength(); + + /** + * + */ + SVGLength(const SVGLength &other); + + /** + * + */ + ~SVGLength(); + +protected: + + int unitType; + + double value; + +}; + +/*######################################################################### +## SVGMatrix +#########################################################################*/ + +/** + * In SVG, a Matrix is defined like this: + * + * | a c e | + * | b d f | + * | 0 0 1 | + * + */ +class SVGMatrix +{ +public: + + + /** + * + */ + double getA(); + + /** + * + */ + void setA(double val) throw(DOMException); + + /** + * + */ + double getB(); + + /** + * + */ + void setB(double val) throw(DOMException); + + /** + * + */ + double getC(); + + /** + * + */ + void setC(double val) throw(DOMException); + + /** + * + */ + double getD(); + + /** + * + */ + void setD(double val) throw(DOMException); + + /** + * + */ + double getE(); + + /** + * + */ + void setE(double val) throw(DOMException); + + /** + * + */ + double getF(); + + /** + * + */ + void setF(double val) throw(DOMException); + + + /** + * Return the result of postmultiplying this matrix with another. + */ + SVGMatrix multiply(const SVGMatrix &other); + + /** + * Calculate the inverse of this matrix + * + * + * The determinant of a 3x3 matrix E + * (let's use our own notation for a bit) + * + * A B C + * D E F + * G H I + * is + * AEI - AFH - BDI + BFG + CDH - CEG + * + * Since in our affine transforms, G and H==0 and I==1, + * this reduces to: + * AE - BD + * In SVG's naming scheme, that is: a * d - c * b . SIMPLE! + * + * In a similar method of attack, SVG's adjunct matrix is: + * + * d -c cf-ed + * -b a eb-af + * 0 0 ad-cb + * + * To get the inverse matrix, we divide the adjunct matrix by + * the determinant. Notice that(ad-cb)/(ad-cb)==1. Very cool. + * So what we end up with is this: + * + * a = d/(ad-cb) c = -c/(ad-cb) e =(cf-ed)/(ad-cb) + * b = -b/(ad-cb) d = a/(ad-cb) f =(eb-af)/(ad-cb) + * + * (Since this would be in all SVG-DOM implementations, + * somebody needed to document this! ^^) + * + */ + SVGMatrix inverse() throw(SVGException); + + /** + * Equivalent to multiplying by: + * | 1 0 x | + * | 0 1 y | + * | 0 0 1 | + * + */ + SVGMatrix translate(double x, double y); + + /** + * Equivalent to multiplying by: + * | scale 0 0 | + * | 0 scale 0 | + * | 0 0 1 | + * + */ + SVGMatrix scale(double scale); + + /** + * Equivalent to multiplying by: + * | scaleX 0 0 | + * | 0 scaleY 0 | + * | 0 0 1 | + * + */ + SVGMatrix scaleNonUniform(double scaleX, double scaleY); + + /** + * Equivalent to multiplying by: + * | cos(a) -sin(a) 0 | + * | sin(a) cos(a) 0 | + * | 0 0 1 | + * + */ + SVGMatrix rotate(double angle); + + /** + * Equivalent to multiplying by: + * | cos(a) -sin(a) 0 | + * | sin(a) cos(a) 0 | + * | 0 0 1 | + * In this case, angle 'a' is computed as the artangent + * of the slope y/x . It is negative if the slope is negative. + */ + SVGMatrix rotateFromVector(double x, double y) throw(SVGException); + + /** + * Equivalent to multiplying by: + * | -1 0 0 | + * | 0 1 0 | + * | 0 0 1 | + * + */ + SVGMatrix flipX(); + + /** + * Equivalent to multiplying by: + * | 1 0 0 | + * | 0 -1 0 | + * | 0 0 1 | + * + */ + SVGMatrix flipY(); + + /** + * | 1 tan(a) 0 | + * | 0 1 0 | + * | 0 0 1 | + * + */ + SVGMatrix skewX(double angle); + + /** + * Equivalent to multiplying by: + * | 1 0 0 | + * | tan(a) 1 0 | + * | 0 0 1 | + * + */ + SVGMatrix skewY(double angle); + + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGMatrix(); + + /** + * + */ + SVGMatrix(double aArg, double bArg, double cArg, + double dArg, double eArg, double fArg); + + /** + * Copy constructor + */ + SVGMatrix(const SVGMatrix &other); + + /** + * + */ + ~SVGMatrix() {} + +protected: + +friend class SVGTransform; + + /* + * Set to the identify matrix + */ + void identity(); + + double a, b, c, d, e, f; + +}; + + +/*######################################################################### +## SVGNumber +#########################################################################*/ + +/** + * + */ +class SVGNumber +{ +public: + + /** + * + */ + double getValue(); + + /** + * + */ + void setValue(double val) throw(DOMException); + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGNumber(); + + /** + * + */ + SVGNumber(const SVGNumber &other); + + /** + * + */ + ~SVGNumber(); + +protected: + + double value; + +}; + +/*######################################################################### +## SVGPoint +#########################################################################*/ + +/** + * + */ +class SVGPoint +{ +public: + + /** + * + */ + double getX(); + + /** + * + */ + void setX(double val) throw(DOMException); + + /** + * + */ + double getY(); + + /** + * + */ + void setY(double val) throw(DOMException); + + /** + * + */ + SVGPoint matrixTransform(const SVGMatrix &/*matrix*/); + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGPoint(); + + /** + * + */ + SVGPoint(const SVGPoint &other); + + /** + * + */ + ~SVGPoint(); + +protected: + + double x, y; +}; + + +/*######################################################################### +## SVGPathSeg +#########################################################################*/ + +/** + * + */ +class SVGPathSeg +{ +public: + + /** + * Path Segment Types + */ + typedef enum + { + PATHSEG_UNKNOWN = 0, + PATHSEG_CLOSEPATH = 1, + PATHSEG_MOVETO_ABS = 2, + PATHSEG_MOVETO_REL = 3, + PATHSEG_LINETO_ABS = 4, + PATHSEG_LINETO_REL = 5, + PATHSEG_CURVETO_CUBIC_ABS = 6, + PATHSEG_CURVETO_CUBIC_REL = 7, + PATHSEG_CURVETO_QUADRATIC_ABS = 8, + PATHSEG_CURVETO_QUADRATIC_REL = 9, + PATHSEG_ARC_ABS = 10, + PATHSEG_ARC_REL = 11, + PATHSEG_LINETO_HORIZONTAL_ABS = 12, + PATHSEG_LINETO_HORIZONTAL_REL = 13, + PATHSEG_LINETO_VERTICAL_ABS = 14, + PATHSEG_LINETO_VERTICAL_REL = 15, + PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16, + PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17, + PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18, + PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19 + } PathSegmentType; + + /** + * + */ + unsigned short getPathSegType(); + + /** + * + */ + DOMString getPathSegTypeAsLetter(); + + /** + * From the various subclasses + */ + + /** + * + */ + double getX(); + + /** + * + */ + void setX(double val) throw(DOMException); + + /** + * + */ + double getX1(); + + /** + * + */ + void setX1(double val) throw(DOMException); + + /** + * + */ + double getX2(); + + /** + * + */ + void setX2(double val) throw(DOMException); + + /** + * + */ + double getY(); + + /** + * + */ + void setY(double val) throw(DOMException); + + /** + * + */ + double getY1(); + + /** + * + */ + void setY1(double val) throw(DOMException); + + /** + * + */ + double getY2(); + + /** + * + */ + void setY2(double val) throw(DOMException); + + /** + * + */ + double getR1(); + + /** + * + */ + void setR1(double val) throw(DOMException); + + /** + * + */ + double getR2(); + + /** + * + */ + void setR2(double val) throw(DOMException); + + /** + * + */ + double getAngle(); + + /** + * + */ + void setAngle(double val) throw(DOMException); + + /** + * + */ + bool getLargeArcFlag(); + + /** + * + */ + void setLargeArcFlag(bool val) throw(DOMException); + + /** + * + */ + bool getSweepFlag(); + + /** + * + */ + void setSweepFlag(bool val) throw(DOMException); + + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGPathSeg(); + + /** + * + */ + SVGPathSeg(int typeArg); + + /** + * + */ + SVGPathSeg(const SVGPathSeg &other); + + /** + * + */ + SVGPathSeg &operator=(const SVGPathSeg &other); + + /** + * + */ + ~SVGPathSeg(); + +protected: + + void init(); + + void assign(const SVGPathSeg &other); + + int type; + double x, y, x1, y1, x2, y2; + double r1, r2; + double angle; + bool largeArcFlag; + bool sweepFlag; +}; + + +/*######################################################################### +## SVGPreserveAspectRatio +#########################################################################*/ + +/** + * + */ +class SVGPreserveAspectRatio +{ +public: + + + /** + * Alignment Types + */ + typedef enum + { + SVG_PRESERVEASPECTRATIO_UNKNOWN = 0, + SVG_PRESERVEASPECTRATIO_NONE = 1, + SVG_PRESERVEASPECTRATIO_XMINYMIN = 2, + SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3, + SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4, + SVG_PRESERVEASPECTRATIO_XMINYMID = 5, + SVG_PRESERVEASPECTRATIO_XMIDYMID = 6, + SVG_PRESERVEASPECTRATIO_XMAXYMID = 7, + SVG_PRESERVEASPECTRATIO_XMINYMAX = 8, + SVG_PRESERVEASPECTRATIO_XMIDYMAX = 9, + SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10 + } AlignmentType; + + + /** + * Meet-or-slice Types + */ + typedef enum + { + SVG_MEETORSLICE_UNKNOWN = 0, + SVG_MEETORSLICE_MEET = 1, + SVG_MEETORSLICE_SLICE = 2 + } MeetOrSliceType; + + + /** + * + */ + unsigned short getAlign(); + + /** + * + */ + void setAlign(unsigned short val) throw(DOMException); + + /** + * + */ + unsigned short getMeetOrSlice(); + + /** + * + */ + void setMeetOrSlice(unsigned short val) throw(DOMException); + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGPreserveAspectRatio(); + + /** + * + */ + SVGPreserveAspectRatio(const SVGPreserveAspectRatio &other); + + /** + * + */ + ~SVGPreserveAspectRatio(); + +protected: + + unsigned short align; + unsigned short meetOrSlice; + +}; + + + +/*######################################################################### +## SVGRect +#########################################################################*/ + +/** + * + */ +class SVGRect +{ +public: + + /** + * + */ + double getX(); + + /** + * + */ + void setX(double val) throw(DOMException); + + /** + * + */ + double getY(); + + /** + * + */ + void setY(double val) throw(DOMException); + + /** + * + */ + double getWidth(); + + /** + * + */ + void setWidth(double val) throw(DOMException); + + /** + * + */ + double getHeight(); + + /** + * + */ + void setHeight(double val) throw(DOMException); + + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGRect(); + + /** + * + */ + SVGRect(const SVGRect &other); + + /** + * + */ + ~SVGRect(); + +protected: + + double x, y, width, height; + +}; + +/*######################################################################### +## SVGTransform +#########################################################################*/ + +/** + * + */ +class SVGTransform +{ +public: + + /** + * Transform Types + */ + typedef enum + { + SVG_TRANSFORM_UNKNOWN = 0, + SVG_TRANSFORM_MATRIX = 1, + SVG_TRANSFORM_TRANSLATE = 2, + SVG_TRANSFORM_SCALE = 3, + SVG_TRANSFORM_ROTATE = 4, + SVG_TRANSFORM_SKEWX = 5, + SVG_TRANSFORM_SKEWY = 6, + } TransformType; + + /** + * + */ + unsigned short getType(); + + + /** + * + */ + SVGMatrix getMatrix(); + + /** + * + */ + double getAngle(); + + /** + * + */ + void setMatrix(const SVGMatrix &matrixArg); + + /** + * + */ + void setTranslate(double tx, double ty); + + /** + * + */ + void setScale(double sx, double sy); + + /** + * + */ + void setRotate(double angleArg, double cx, double cy); + + /** + * + */ + void setSkewX(double angleArg); + + /** + * + */ + void setSkewY(double angleArg); + + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGTransform(); + + /** + * + */ + SVGTransform(const SVGTransform &other); + + /** + * + */ + ~SVGTransform(); + +protected: + + int type; + double angle; + + SVGMatrix matrix; +}; + + + + +/*######################################################################### +## SVGUnitTypes +#########################################################################*/ + +/** + * + */ +class SVGUnitTypes +{ +public: + + /** + * Unit Types + */ + typedef enum + { + SVG_UNIT_TYPE_UNKNOWN = 0, + SVG_UNIT_TYPE_USERSPACEONUSE = 1, + SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2 + } UnitType; + + + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGUnitTypes(); + + /** + * + */ + ~SVGUnitTypes(); + +}; + + + + +/*######################################################################### +## SVGValue +#########################################################################*/ + +/** + * This is a helper class that will hold several types of data. It will + * be used in those situations where methods are common to different + * interfaces, except for the data type. This class holds the following: + * SVGAngle + * SVGBoolean + * SVGEnumeration + * SVGInteger + * SVGLength + * SVGNumber + * SVGPreserveAspectRatio + * SVGRect + * SVGString + */ +class SVGValue +{ +public: + + /** + * + */ + typedef enum + { + SVG_ANGLE, + SVG_BOOLEAN, + SVG_ENUMERATION, + SVG_INTEGER, + SVG_LENGTH, + SVG_NUMBER, + SVG_PRESERVE_ASPECT_RATIO, + SVG_RECT, + SVG_STRING, + } SVGValueType; + + /** + * Constructor + */ + SVGValue(); + + /** + * Copy constructor + */ + SVGValue(const SVGValue &other); + + /** + * Assignment + */ + SVGValue &operator=(const SVGValue &other); + + /** + * + */ + ~SVGValue(); + + //########################### + // TYPES + //########################### + + /** + * Angle + */ + SVGValue(const SVGAngle &v); + + SVGAngle angleValue(); + + /** + * Boolean + */ + SVGValue(bool v); + + bool booleanValue(); + + + /** + * Enumeration + */ + SVGValue(short v); + + short enumerationValue(); + + /** + * Integer + */ + SVGValue(long v); + + long integerValue(); + + /** + * Length + */ + SVGValue(const SVGLength &v); + + SVGLength lengthValue(); + + /** + * Number + */ + SVGValue(double v); + + double numberValue(); + + /** + * PathSegment + */ + SVGValue(const SVGPathSeg &v); + + SVGPathSeg pathDataValue(); + + + /** + * Points + */ + SVGValue(const SVGPoint &v); + + SVGPoint pointValue(); + + + /** + * PreserveAspectRatio + */ + SVGValue(const SVGPreserveAspectRatio &v); + + SVGPreserveAspectRatio preserveAspectRatioValue(); + + /** + * Rect + */ + SVGValue(const SVGRect &v); + + SVGRect rectValue(); + + /** + * String + */ + SVGValue(const DOMString &v); + + DOMString stringValue(); + + /** + * TransformList + */ + SVGValue(const SVGTransform &v); + + SVGTransform transformValue(); + + +private: + + void init(); + + void assign(const SVGValue &other); + + short type; + SVGAngle angleval; // SVGAngle + bool bval; // SVGBoolean + short eval; // SVGEnumeration + long ival; // SVGInteger + SVGLength lengthval; // SVGLength + double dval; // SVGNumber + SVGPathSeg segval; // SVGPathSeg + SVGPoint pointval; // SVGPoint + SVGPreserveAspectRatio parval; // SVGPreserveAspectRatio + SVGRect rval; // SVGRect + DOMString sval; // SVGString + SVGTransform transformval; // SVGTransform + +}; + + +/*######################################################################### +## SVGValueList +#########################################################################*/ + +/** + * THis is used to generify a bit the several different types of lists: + * + * SVGLengthList -> SVGValueList + * SVGValueList -> SVGValueList + * SVGPathData -> SVGValueList + * SVGPoints -> SVGValueList + * SVGTransformList -> SVGValueList + */ +class SVGValueList +{ +public: + + /** + * + */ + typedef enum + { + SVG_LIST_LENGTH, + SVG_LIST_NUMBER, + SVG_LIST_PATHSEG, + SVG_LIST_POINT, + SVG_LIST_TRANSFORM + } SVGValueListTypes; + + /** + * + */ + unsigned long getNumberOfItems(); + + + /** + * + */ + void clear() throw(DOMException); + + /** + * + */ + SVGValue getItem(unsigned long index) throw(DOMException); + + /** + * + */ + SVGValue insertItemBefore(const SVGValue &newItem, + unsigned long index) + throw(DOMException, SVGException); + + /** + * + */ + SVGValue replaceItem(const SVGValue &newItem, + unsigned long index) + throw(DOMException, SVGException); + + /** + * + */ + SVGValue removeItem(unsigned long index) throw(DOMException); + + /** + * + */ + SVGValue appendItem(const SVGValue &newItem) + throw(DOMException, SVGException); + + /** + * Matrix + */ + SVGValue initialize(const SVGValue &newItem) + throw(DOMException, SVGException); + + /** + * Matrix + */ + SVGValue createSVGTransformFromMatrix(const SVGValue &matrix); + + /** + * Matrix + */ + SVGValue consolidate(); + + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGValueList(); + + /** + * + */ + SVGValueList(const SVGValueList &other); + + /** + * + */ + ~SVGValueList(); + +protected: + + std::vector items; + +}; + + + + + +/*######################################################################### +## SVGAnimatedValue +#########################################################################*/ + +/** + * This class is used to merge all of the "Animated" values, with only + * a different type, into a single API. This class subsumes the following: + * SVGAnimatedValue + * SVGAnimatedValue + * SVGAnimatedValue + * SVGAnimatedValue + * SVGAnimatedValue + * SVGAnimatedValue + * SVGAnimatedPathData + * SVGAnimatedPoints + * SVGAnimatedPreserveAspectRatio + * SVGAnimatedValue + * SVGAnimatedValue + */ +class SVGAnimatedValue +{ +public: + + /** + * + */ + SVGValue &getBaseVal(); + + /** + * + */ + void setBaseVal(const SVGValue &val) throw (DOMException); + + /** + * + */ + SVGValue &getAnimVal(); + + /** + * + */ + SVGAnimatedValue(); + + /** + * + */ + SVGAnimatedValue(const SVGValue &baseValue); + + /** + * + */ + SVGAnimatedValue(const SVGValue &baseValue, const SVGValue &animValue); + + /** + * + */ + SVGAnimatedValue(const SVGAnimatedValue &other); + + /** + * + */ + SVGAnimatedValue &operator=(const SVGAnimatedValue &other); + + /** + * + */ + SVGAnimatedValue &operator=(const SVGValue &baseVal); + + /** + * + */ + ~SVGAnimatedValue(); + +private: + + void init(); + + void assign(const SVGAnimatedValue &other); + + SVGValue baseVal; + + SVGValue animVal; + +}; + + +/*######################################################################### +## SVGAnimatedValueList +#########################################################################*/ + +/** + * This class is used to merge all of the "Animated" values, with only + * a different type, into a single API. This class subsumes the following: + * SVGAnimatedValueList + * SVGAnimatedValueList + * SVGAnimatedTransformList + */ +class SVGAnimatedValueList +{ +public: + + /** + * + */ + SVGValueList &getBaseVal(); + + /** + * + */ + void setBaseVal(const SVGValueList &val) throw (DOMException); + + /** + * + */ + SVGValueList &getAnimVal(); + + /** + * + */ + SVGAnimatedValueList(); + + /** + * + */ + SVGAnimatedValueList(const SVGValueList &baseValue); + + /** + * + */ + SVGAnimatedValueList(const SVGValueList &baseValue, const SVGValueList &animValue); + + /** + * + */ + SVGAnimatedValueList(const SVGAnimatedValueList &other); + + /** + * + */ + SVGAnimatedValueList &operator=(const SVGAnimatedValueList &other); + + /** + * + */ + SVGAnimatedValueList &operator=(const SVGValueList &baseVal); + + /** + * + */ + ~SVGAnimatedValueList(); + +private: + + void init(); + + void assign(const SVGAnimatedValueList &other); + + SVGValueList baseVal; + + SVGValueList animVal; + +}; + + + +/*######################################################################### +## SVGICCColor +#########################################################################*/ + +/** + * + */ +class SVGICCColor +{ +public: + + /** + * + */ + DOMString getColorProfile(); + + /** + * + */ + void setColorProfile(const DOMString &val) throw(DOMException); + + /** + * + */ + SVGValueList &getColors(); + + + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGICCColor(); + + /** + * + */ + SVGICCColor(const SVGICCColor &other); + + /** + * + */ + ~SVGICCColor(); + +protected: + + DOMString colorProfile; + + SVGValueList colors; + +}; + + + +/*######################################################################### +## SVGColor +#########################################################################*/ + +/** + * + */ +class SVGColor : public css::CSSValue +{ +public: + + + /** + * Color Types + */ + typedef enum + { + SVG_COLORTYPE_UNKNOWN = 0, + SVG_COLORTYPE_RGBCOLOR = 1, + SVG_COLORTYPE_RGBCOLOR_ICCCOLOR = 2, + SVG_COLORTYPE_CURRENTCOLOR = 3 + } ColorType; + + + /** + * + */ + unsigned short getColorType(); + + /** + * + */ + css::RGBColor getRgbColor(); + + /** + * + */ + SVGICCColor getIccColor(); + + + /** + * + */ + void setRGBColor(const DOMString& /*rgbColor*/) + throw(SVGException); + + /** + * + */ + void setRGBColorICCColor(const DOMString& /*rgbColor*/, + const DOMString& /*iccColor*/) + throw(SVGException); + + /** + * + */ + void setColor(unsigned short /*colorType*/, + const DOMString& /*rgbColor*/, + const DOMString& /*iccColor*/) + throw(SVGException); + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGColor(); + + /** + * + */ + SVGColor(const SVGColor &other); + + /** + * + */ + ~SVGColor(); + +protected: + + int colorType; + +}; + + + +/*######################################################################### +## SVGPaint +#########################################################################*/ + +/** + * + */ +class SVGPaint : public SVGColor +{ +public: + + /** + * Paint Types + */ + typedef enum + { + SVG_PAINTTYPE_UNKNOWN = 0, + SVG_PAINTTYPE_RGBCOLOR = 1, + SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR = 2, + SVG_PAINTTYPE_NONE = 101, + SVG_PAINTTYPE_CURRENTCOLOR = 102, + SVG_PAINTTYPE_URI_NONE = 103, + SVG_PAINTTYPE_URI_CURRENTCOLOR = 104, + SVG_PAINTTYPE_URI_RGBCOLOR = 105, + SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR = 106, + SVG_PAINTTYPE_URI = 107 + } PaintType; + + + /** + * + */ + unsigned short getPaintType(); + + /** + * + */ + DOMString getUri(); + + /** + * + */ + void setUri(const DOMString& uriArg); + + /** + * + */ + void setPaint(unsigned short paintTypeArg, + const DOMString& uriArg, + const DOMString& /*rgbColor*/, + const DOMString& /*iccColor*/) + throw(SVGException); + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGPaint(); + + /** + * + */ + SVGPaint(const SVGPaint &other); + + /** + * + */ + ~SVGPaint(); + +protected: + + unsigned int paintType; + DOMString uri; + +}; + + + + +//######################################################################## +//######################################################################## +//# I N T E R F A C E S +//######################################################################## +//######################################################################## + + + + + + + +/*######################################################################### +## SVGStylable +#########################################################################*/ + +/** + * + */ +class SVGStylable +{ +public: + + /** + * + */ + SVGAnimatedValue getClassName(); + + /** + * + */ + css::CSSStyleDeclaration getStyle(); + + + /** + * + */ + css::CSSValue getPresentationAttribute(const DOMString& /*name*/); + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGStylable(); + + /** + * + */ + SVGStylable(const SVGStylable &other); + + /** + * + */ + ~SVGStylable(); + +protected: + + SVGAnimatedValue className; + css::CSSStyleDeclaration style; + +}; + + + + + +/*######################################################################### +## SVGLocatable +#########################################################################*/ + +/** + * + */ +class SVGLocatable +{ +public: + + /** + * + */ + SVGElementPtr getNearestViewportElement(); + + /** + * + */ + SVGElementPtr getFarthestViewportElement(); + + /** + * + */ + SVGRect getBBox(); + + /** + * + */ + SVGMatrix getCTM(); + + /** + * + */ + SVGMatrix getScreenCTM(); + + /** + * + */ + SVGMatrix getTransformToElement(const SVGElement &/*element*/) + throw(SVGException); + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGLocatable(); + + /** + * + */ + SVGLocatable(const SVGLocatable &/*other*/); + + /** + * + */ + ~SVGLocatable(); + +protected: + + SVGRect bbox; + SVGMatrix ctm; + SVGMatrix screenCtm; + +}; + + +/*######################################################################### +## SVGTransformable +#########################################################################*/ + +/** + * + */ +class SVGTransformable : public SVGLocatable +{ +public: + + + /** + * + */ + SVGAnimatedValueList &getTransform(); + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGTransformable(); + + /** + * + */ + SVGTransformable(const SVGTransformable &other); + + /** + * + */ + ~SVGTransformable(); + +protected: + + SVGAnimatedValueList transforms; +}; + + + +/*######################################################################### +## SVGTests +#########################################################################*/ + +/** + * + */ +class SVGTests +{ +public: + + /** + * + */ + SVGValueList &getRequiredFeatures(); + + /** + * + */ + SVGValueList &getRequiredExtensions(); + + /** + * + */ + SVGValueList &getSystemLanguage(); + + /** + * + */ + bool hasExtension(const DOMString& /*extension*/); + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGTests(); + + /** + * + */ + SVGTests(const SVGTests &other); + + /** + * + */ + ~SVGTests(); + +protected: + + SVGValueList requiredFeatures; + SVGValueList requiredExtensions; + SVGValueList systemLanguage; + +}; + + + + + + +/*######################################################################### +## SVGLangSpace +#########################################################################*/ + +/** + * + */ +class SVGLangSpace +{ +public: + + + /** + * + */ + DOMString getXmlLang(); + + /** + * + */ + void setXmlLang(const DOMString &val) throw(DOMException); + + /** + * + */ + DOMString getXmlSpace(); + + /** + * + */ + void setXmlSpace(const DOMString &val) throw(DOMException); + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGLangSpace(); + + /** + * + */ + SVGLangSpace(const SVGLangSpace &other); + + /** + * + */ + ~SVGLangSpace(); + +protected: + + DOMString xmlLang; + DOMString xmlSpace; + +}; + + + +/*######################################################################### +## SVGExternalResourcesRequired +#########################################################################*/ + +/** + * + */ +class SVGExternalResourcesRequired +{ +public: + + /** + * boolean + */ + SVGAnimatedValue getExternalResourcesRequired(); + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGExternalResourcesRequired(); + + /** + * + */ + SVGExternalResourcesRequired(const SVGExternalResourcesRequired &other); + + /** + * + */ + ~SVGExternalResourcesRequired(); + +protected: + + SVGAnimatedValue required; //boolean + +}; + + + + + + + + + +/*######################################################################### +## SVGFitToViewBox +#########################################################################*/ + +/** + * + */ +class SVGFitToViewBox +{ +public: + + /** + * rect + */ + SVGAnimatedValue getViewBox(); + + /** + * preserveAspectRatio + */ + SVGAnimatedValue getPreserveAspectRatio(); + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGFitToViewBox(); + + /** + * + */ + SVGFitToViewBox(const SVGFitToViewBox &other); + + /** + * + */ + ~SVGFitToViewBox(); + +protected: + + SVGAnimatedValue viewBox; //rect + SVGAnimatedValue preserveAspectRatio; + +}; + + +/*######################################################################### +## SVGZoomAndPan +#########################################################################*/ + +/** + * + */ +class SVGZoomAndPan +{ +public: + + /** + * Zoom and Pan Types + */ + typedef enum + { + SVG_ZOOMANDPAN_UNKNOWN = 0, + SVG_ZOOMANDPAN_DISABLE = 1, + SVG_ZOOMANDPAN_MAGNIFY = 2 + } ZoomAndPanType; + + /** + * + */ + unsigned short getZoomAndPan(); + + /** + * + */ + void setZoomAndPan(unsigned short val) throw(DOMException); + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGZoomAndPan(); + + /** + * + */ + SVGZoomAndPan(const SVGZoomAndPan &other); + + /** + * + */ + ~SVGZoomAndPan(); + +protected: + + unsigned short zoomAndPan; + +}; + + + + + + +/*######################################################################### +## SVGViewSpec +#########################################################################*/ + +/** + * + */ +class SVGViewSpec : public SVGZoomAndPan, + public SVGFitToViewBox +{ +public: + + /** + * + */ + SVGValueList getTransform(); + + /** + * + */ + SVGElementPtr getViewTarget(); + + /** + * + */ + DOMString getViewBoxString(); + + /** + * + */ + DOMString getPreserveAspectRatioString(); + + /** + * + */ + DOMString getTransformString(); + + /** + * + */ + DOMString getViewTargetString(); + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGViewSpec(); + + /** + * + */ + SVGViewSpec(const SVGViewSpec &other); + + /** + * + */ + ~SVGViewSpec(); + +protected: + + SVGElementPtr viewTarget; + SVGValueList transform; +}; + + +/*######################################################################### +## SVGURIReference +#########################################################################*/ + +/** + * + */ +class SVGURIReference +{ +public: + + /** + * string + */ + SVGAnimatedValue getHref(); + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGURIReference(); + + /** + * + */ + SVGURIReference(const SVGURIReference &other); + + /** + * + */ + ~SVGURIReference(); + +protected: + + SVGAnimatedValue href; + +}; + + + + + + +/*######################################################################### +## SVGCSSRule +#########################################################################*/ + +/** + * + */ +class SVGCSSRule : public css::CSSRule +{ +public: + + + /** + * Additional CSS RuleType to support ICC color specifications + */ + typedef enum + { + COLOR_PROFILE_RULE = 7 + } ColorProfileRuleType; + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGCSSRule(); + + /** + * + */ + SVGCSSRule(const SVGCSSRule &other); + + /** + * + */ + ~SVGCSSRule(); + +}; + + + +/*######################################################################### +## SVGRenderingIntent +#########################################################################*/ + +/** + * + */ +class SVGRenderingIntent +{ +public: + + /** + * Rendering Intent Types + */ + typedef enum + { + RENDERING_INTENT_UNKNOWN = 0, + RENDERING_INTENT_AUTO = 1, + RENDERING_INTENT_PERCEPTUAL = 2, + RENDERING_INTENT_RELATIVE_COLORIMETRIC = 3, + RENDERING_INTENT_SATURATION = 4, + RENDERING_INTENT_ABSOLUTE_COLORIMETRIC = 5 + } RenderingIntentType; + + + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGRenderingIntent(); + + /** + * + */ + SVGRenderingIntent(const SVGRenderingIntent &other); + + /** + * + */ + ~SVGRenderingIntent(); + +protected: + + unsigned short renderingIntentType; +}; + + + + + + + + + +/*######################################################################### +## SVGColorProfileRule +#########################################################################*/ + +/** + * + */ +class SVGColorProfileRule : public SVGCSSRule, + public SVGRenderingIntent +{ + +public: + + /** + * + */ + DOMString getSrc(); + + /** + * + */ + void setSrc(const DOMString &val) throw(DOMException); + + /** + * + */ + DOMString getName(); + + /** + * + */ + void setName(const DOMString &val) throw(DOMException); + + /** + * + */ + unsigned short getRenderingIntent(); + + /** + * + */ + void setRenderingIntent(unsigned short val) throw(DOMException); + + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGColorProfileRule(); + + /** + * + */ + SVGColorProfileRule(const SVGColorProfileRule &other); + + /** + * + */ + ~SVGColorProfileRule(); + +protected: + + unsigned short renderingIntent; + DOMString src; + DOMString name; + +}; + + + +/*######################################################################### +## SVGFilterPrimitiveStandardAttributes +#########################################################################*/ + +/** + * + */ +class SVGFilterPrimitiveStandardAttributes : public SVGStylable +{ +public: + + /** + * length + */ + SVGAnimatedValue getX(); + + /** + * length + */ + SVGAnimatedValue getY(); + + /** + * length + */ + SVGAnimatedValue getWidth(); + + /** + * length + */ + SVGAnimatedValue getHeight(); + + /** + * string + */ + SVGAnimatedValue getResult(); + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGFilterPrimitiveStandardAttributes(); + + /** + * + */ + SVGFilterPrimitiveStandardAttributes( + const SVGFilterPrimitiveStandardAttributes &other); + + /** + * + */ + ~SVGFilterPrimitiveStandardAttributes(); + +protected: + + SVGAnimatedValue x; + SVGAnimatedValue y; + SVGAnimatedValue width; + SVGAnimatedValue height; + SVGAnimatedValue result; + +}; + + +/*######################################################################### +## SVGEvent +#########################################################################*/ + +/** + * + */ +class SVGEvent : events::Event +{ +public: + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGEvent(); + + /** + * + */ + SVGEvent(const SVGEvent &other); + + /** + * + */ + ~SVGEvent(); + +}; + + + + +/*######################################################################### +## SVGZoomEvent +#########################################################################*/ + +/** + * + */ +class SVGZoomEvent : events::UIEvent +{ +public: + + /** + * + */ + SVGRect getZoomRectScreen(); + + /** + * + */ + double getPreviousScale(); + + /** + * + */ + SVGPoint getPreviousTranslate(); + + /** + * + */ + double getNewScale(); + + /** + * + */ + SVGPoint getNewTranslate(); + + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGZoomEvent(); + + /** + * + */ + SVGZoomEvent(const SVGZoomEvent &other); + + /** + * + */ + ~SVGZoomEvent(); + +protected: + + SVGRect zoomRectScreen; + double previousScale; + SVGPoint previousTranslate; + double newScale; + SVGPoint newTranslate; + +}; + + + +/*######################################################################### +## SVGElementInstance +#########################################################################*/ + +/** + * + */ +class SVGElementInstance : public events::EventTarget +{ +public: + + /** + * + */ + SVGElementPtr getCorrespondingElement(); + + /** + * + */ + SVGUseElementPtr getCorrespondingUseElement(); + + /** + * + */ + SVGElementInstance getParentNode(); + + /** + * Since we are using stack types and this is a circular definition, + * we will instead implement this as a global function below: + * SVGElementInstanceList getChildNodes(const SVGElementInstance instance); + */ + //SVGElementInstanceList getChildNodes(); + + /** + * + */ + SVGElementInstance getFirstChild(); + + /** + * + */ + SVGElementInstance getLastChild(); + + /** + * + */ + SVGElementInstance getPreviousSibling(); + + /** + * + */ + SVGElementInstance getNextSibling(); + + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGElementInstance(); + + /** + * + */ + SVGElementInstance(const SVGElementInstance &other); + + /** + * + */ + ~SVGElementInstance(); + +protected: + + SVGElementPtr correspondingElement; + SVGUseElementPtr correspondingUseElement; + +}; + + + + + + +/*######################################################################### +## SVGElementInstanceList +#########################################################################*/ + +/** + * + */ +class SVGElementInstanceList +{ +public: + + /** + * + */ + unsigned long getLength(); + + /** + * + */ + SVGElementInstance item(unsigned long index); + + /** + * This static method replaces the circular definition of: + * SVGElementInstanceList SVGElementInstance::getChildNodes() + * + */ + static SVGElementInstanceList getChildNodes(const SVGElementInstance &/*instance*/); + + + //################## + //# Non-API methods + //################## + + /** + * + */ + SVGElementInstanceList(); + + /** + * + */ + SVGElementInstanceList(const SVGElementInstanceList &other); + + /** + * + */ + ~SVGElementInstanceList(); + +protected: + + std::vector items; + + +}; + + + + + + + + +//######################################################################## +//######################################################################## +//######################################################################## +//# D O M +//######################################################################## +//######################################################################## +//######################################################################## + + + + + +/*######################################################################### +## Types +#########################################################################*/ + +/** + * Bitmasks for has_an interface for SVGElement + */ +#define SVG_ANGLE 0x00000001 +#define SVG_ANIMATED_ANGLE 0x00000002 +#define SVG_ANIMATED_BOOLEAN 0x00000004 +#define SVG_ANIMATED_ENUMERATION 0x00000008 +#define SVG_ANIMATED_INTEGER 0x00000010 +#define SVG_ANIMATED_LENGTH 0x00000020 +#define SVG_ANIMATED_LENGTH_LIST 0x00000040 +#define SVG_ANIMATED_NUMBER 0x00000080 +#define SVG_ANIMATED_NUMBER_LIST 0x00000100 +#define SVG_ANIMATED_RECT 0x00000200 +#define SVG_ANIMATED_STRING 0x00000400 +#define SVG_COLOR 0x00000800 +#define SVG_CSS_RULE 0x00001000 +#define SVG_EXTERNAL_RESOURCES_REQUIRED 0x00002000 +#define SVG_FIT_TO_VIEWBOX 0x00004000 +#define SVG_ICCCOLOR 0x00008000 +#define SVG_LANG_SPACE 0x00010000 +#define SVG_LENGTH 0x00020000 +#define SVG_LENGTH_LIST 0x00040000 +#define SVG_LOCATABLE 0x00080000 +#define SVG_NUMBER 0x00100000 +#define SVG_NUMBER_LIST 0x00200000 +#define SVG_RECT 0x00400000 +#define SVG_RENDERING_INTENT 0x00800000 +#define SVG_STRING_LIST 0x01000000 +#define SVG_STYLABLE 0x02000000 +#define SVG_TESTS 0x04000000 +#define SVG_TRANSFORMABLE 0x08000000 +#define SVG_UNIT_TYPES 0x10000000 +#define SVG_URI_REFERENCE 0x20000000 +#define SVG_VIEW_SPEC 0x40000000 +#define SVG_ZOOM_AND_PAN 0x80000000 + +/** + * How many above? Quite handy + */ +#define SVG_NR_INTERFACES 32 + + +/** + * Enumerations for SVGElement types + */ +typedef enum +{ + SVG_A_ELEMENT = 0, + SVG_ALTGLYPH_ELEMENT, + SVG_ALTGLYPHDEF_ELEMENT, + SVG_ALTGLYPHITEM_ELEMENT, + SVG_ANIMATE_ELEMENT, + SVG_ANIMATECOLOR_ELEMENT, + SVG_ANIMATEMOTION_ELEMENT, + SVG_ANIMATETRANSFORM_ELEMENT, + SVG_CIRCLE_ELEMENT, + SVG_CLIPPATH_ELEMENT, + SVG_COLOR_PROFILE_ELEMENT, + SVG_CURSOR_ELEMENT, + SVG_DEFINITION_SRC_ELEMENT, + SVG_DEFS_ELEMENT, + SVG_DESC_ELEMENT, + SVG_ELLIPSE_ELEMENT, + SVG_FEBLEND_ELEMENT, + SVG_FECOLORMATRIX_ELEMENT, + SVG_FECOMPONENTTRANSFER_ELEMENT, + SVG_FECOMPOSITE_ELEMENT, + SVG_FECONVOLVEMATRIX_ELEMENT, + SVG_FEDIFFUSELIGHTING_ELEMENT, + SVG_FEDISPLACEMENTMAP_ELEMENT, + SVG_FEDISTANTLIGHT_ELEMENT, + SVG_FEFLOOD_ELEMENT, + SVG_FEFUNCA_ELEMENT, + SVG_FEFUNCB_ELEMENT, + SVG_FEFUNCG_ELEMENT, + SVG_FEFUNCR_ELEMENT, + SVG_FEGAUSSIANBLUR_ELEMENT, + SVG_FEIMAGE_ELEMENT, + SVG_FEMERGE_ELEMENT, + SVG_FEMERGENODE_ELEMENT, + SVG_FEMORPHOLOGY_ELEMENT, + SVG_FEOFFSET_ELEMENT, + SVG_FEPOINTLIGHT_ELEMENT, + SVG_FESPECULARLIGHTING_ELEMENT, + SVG_FESPOTLIGHT_ELEMENT, + SVG_FETILE_ELEMENT, + SVG_FETURBULENCE_ELEMENT, + SVG_FILTER_ELEMENT, + SVG_FONT_ELEMENT, + SVG_FONT_FACE_ELEMENT, + SVG_FONT_FACE_FORMAT_ELEMENT, + SVG_FONT_FACE_NAME_ELEMENT, + SVG_FONT_FACE_SRC_ELEMENT, + SVG_FONT_FACE_URI_ELEMENT, + SVG_FOREIGNOBJECT_ELEMENT, + SVG_G_ELEMENT, + SVG_GLYPH_ELEMENT, + SVG_GLYPHREF_ELEMENT, + SVG_HKERN_ELEMENT, + SVG_IMAGE_ELEMENT, + SVG_LINE_ELEMENT, + SVG_LINEARGRADIENT_ELEMENT, + SVG_MARKER_ELEMENT, + SVG_MASK_ELEMENT, + SVG_METADATA_ELEMENT, + SVG_MISSING_GLYPH_ELEMENT, + SVG_MPATH_ELEMENT, + SVG_PATH_ELEMENT, + SVG_PATTERN_ELEMENT, + SVG_POLYGON_ELEMENT, + SVG_POLYLINE_ELEMENT, + SVG_RADIALGRADIENT_ELEMENT, + SVG_RECT_ELEMENT, + SVG_SCRIPT_ELEMENT, + SVG_SET_ELEMENT, + SVG_STOP_ELEMENT, + SVG_STYLE_ELEMENT, + SVG_SVG_ELEMENT, + SVG_SWITCH_ELEMENT, + SVG_SYMBOL_ELEMENT, + SVG_TEXT_ELEMENT, + SVG_TEXTPATH_ELEMENT, + SVG_TITLE_ELEMENT, + SVG_TREF_ELEMENT, + SVG_TSPAN_ELEMENT, + SVG_USE_ELEMENT, + SVG_VIEW_ELEMENT, + SVG_VKERN_ELEMENT, + SVG_MAX_ELEMENT +} SVGElementType; + + + + +/** + * Look up the SVG Element type enum for a given string + * Return -1 if not found + */ +int svgElementStrToEnum(const char *str); + + +/** + * Return the string corresponding to a given SVG element type enum + * Return "unknown" if not found + */ +const char *svgElementEnumToStr(int type); + + + + +/*######################################################################### +## SVGElement +#########################################################################*/ + +/** + * All of the SVG DOM interfaces that correspond directly to elements in the SVG + * language(e.g., the SVGPathElement interface corresponds directly to the + * 'path' element in the language) are derivative from base class SVGElement. + */ +class SVGElement : public Element +{ +public: + + //#################################################################### + //# BASE METHODS FOR SVGElement + //#################################################################### + + /** + * Get the value of the id attribute on the given element. + */ + DOMString getId(); + + /** + * Set the value of the id attribute on the given element. + */ + void setId(const DOMString &val) throw(DOMException); + + /** + * Corresponds to attribute xml:base on the given element. + */ + DOMString getXmlBase(); + + /** + * Corresponds to attribute xml:base on the given element. + */ + void setXmlBase(const DOMString &val) throw(DOMException); + + /** + * The nearest ancestor 'svg' element. Null if the given element is the + * outermost 'svg' element. + */ + SVGElementPtr getOwnerSVGElement(); + + /** + * The element which established the current viewport. Often, the nearest + * ancestor 'svg' element. Null if the given element is the outermost 'svg' + * element. + */ + SVGElementPtr getViewportElement(); + + + + //#################################################################### + //#################################################################### + //# E L E M E N T S + //#################################################################### + //#################################################################### + + //#################################################################### + //# SVGAElement + //#################################################################### + + + /** + * + */ + SVGAnimatedValue getTarget(); + + + + //#################################################################### + //# SVGAltGlyphElement + //#################################################################### + + + /** + * Get the attribute glyphRef on the given element. + */ + DOMString getGlyphRef(); + + /** + * Set the attribute glyphRef on the given element. + */ + void setGlyphRef(const DOMString &val) throw(DOMException); + + /** + * Get the attribute format on the given element. + */ + DOMString getFormat(); + + /** + * Set the attribute format on the given element. + */ + void setFormat(const DOMString &val) throw(DOMException); + + + //#################################################################### + //# SVGAltGlyphDefElement + //#################################################################### + + //#################################################################### + //# SVGAltGlyphItemElement + //#################################################################### + + + //#################################################################### + //# SVGAnimateElement + //#################################################################### + + + //#################################################################### + //# SVGAnimateColorElement + //#################################################################### + + //#################################################################### + //# SVGAnimateMotionElement + //#################################################################### + + + //#################################################################### + //# SVGAnimateTransformElement + //#################################################################### + + + //#################################################################### + //# SVGAnimationElement + //#################################################################### + + + /** + * + */ + SVGElementPtr getTargetElement(); + + /** + * + */ + double getStartTime(); + + /** + * + */ + double getCurrentTime(); + + /** + * + */ + double getSimpleDuration() throw(DOMException); + + + + //#################################################################### + //# SVGCircleElement + //#################################################################### + + /** + * Corresponds to attribute cx on the given 'circle' element. + */ + SVGAnimatedValue getCx(); + + /** + * Corresponds to attribute cy on the given 'circle' element. + */ + SVGAnimatedValue getCy(); + + /** + * Corresponds to attribute r on the given 'circle' element. + */ + SVGAnimatedValue getR(); + + //#################################################################### + //# SVGClipPathElement + //#################################################################### + + + /** + * Corresponds to attribute clipPathUnits on the given 'clipPath' element. + * Takes one of the constants defined in SVGUnitTypes. + */ + SVGAnimatedValue getClipPathUnits(); + + + + //#################################################################### + //# SVGColorProfileElement + //#################################################################### + + + /** + * Get the attribute local on the given element. + */ + DOMString getLocal(); + + /** + * Set the attribute local on the given element. + */ + void setLocal(const DOMString &val) throw(DOMException); + + /** + * Get the attribute name on the given element. + */ + DOMString getName(); + + /** + * Set the attribute name on the given element. + */ + void setName(const DOMString &val) throw(DOMException); + + /** + * Set the attribute rendering-intent on the given element. + * The type of rendering intent, identified by one of the + * SVGRenderingIntent constants. + */ + unsigned short getRenderingIntent(); + + /** + * Get the attribute rendering-intent on the given element. + */ + void setRenderingIntent(unsigned short val) throw(DOMException); + + + //#################################################################### + //# SVGComponentTransferFunctionElement + //#################################################################### + + + /** + * Component Transfer Types + */ + typedef enum + { + SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0, + SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1, + SVG_FECOMPONENTTRANSFER_TYPE_TABLE = 2, + SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3, + SVG_FECOMPONENTTRANSFER_TYPE_LINEAR = 4, + SVG_FECOMPONENTTRANSFER_TYPE_GAMMA = 5 + } ComponentTransferType; + + + /** + * Corresponds to attribute type on the given element. Takes one\ + * of the Component Transfer Types. + * -- also in SVGCSSRule + */ + // SVGAnimatedValue getType(); + + /** + * Corresponds to attribute tableValues on the given element. + */ + SVGAnimatedValueList getTableValues(); + + /** + * Corresponds to attribute slope on the given element. + */ + SVGAnimatedValue getSlope(); + + /** + * Corresponds to attribute intercept on the given element. + */ + SVGAnimatedValue getIntercept(); + + /** + * Corresponds to attribute amplitude on the given element. + */ + SVGAnimatedValue getAmplitude(); + + /** + * Corresponds to attribute exponent on the given element. + */ + SVGAnimatedValue getExponent(); + + /** + * Corresponds to attribute offset on the given element. + */ + SVGAnimatedValue getOffset(); + + //#################################################################### + //# SVGCursorElement + //#################################################################### + + /** + * -- also in SVGRect + */ + // SVGAnimatedValue getX(); + + /** + * -- also in SVGRect + */ + // SVGAnimatedValue getY(); + + + //#################################################################### + //# SVGDefinitionSrcElement + //#################################################################### + + //#################################################################### + //# SVGDefsElement + //#################################################################### + + //#################################################################### + //# SVGDescElement + //#################################################################### + + //#################################################################### + //# SVGEllipseElement + //#################################################################### + + /** + * Corresponds to attribute cx on the given 'ellipse' element. + * -- also in Circle + */ + // SVGAnimatedValue getCx(); + + /** + * Corresponds to attribute cy on the given 'ellipse' element. + * -- also in Circle + */ + // SVGAnimatedValue getCy(); + + /** + * Corresponds to attribute rx on the given 'ellipse' element. + */ + SVGAnimatedValue getRx(); + + /** + * Corresponds to attribute ry on the given 'ellipse' element. + */ + SVGAnimatedValue getRy(); + + + //#################################################################### + //# SVGFEBlendElement + //#################################################################### + + /** + * Blend Mode Types + */ + typedef enum + { + SVG_FEBLEND_MODE_UNKNOWN = 0, + SVG_FEBLEND_MODE_NORMAL = 1, + SVG_FEBLEND_MODE_MULTIPLY = 2, + SVG_FEBLEND_MODE_SCREEN = 3, + SVG_FEBLEND_MODE_DARKEN = 4, + SVG_FEBLEND_MODE_LIGHTEN = 5 + } BlendModeType; + + /** + * Corresponds to attribute in on the given 'feBlend' element. + */ + SVGAnimatedValue getIn1(); + + /** + * Corresponds to attribute in2 on the given 'feBlend' element. + */ + SVGAnimatedValue getIn2(); + + /** + * Corresponds to attribute mode on the given 'feBlend' element. + * Takes one of the Blend Mode Types. + */ + SVGAnimatedValue getMode(); + + + //#################################################################### + //# SVGFEColorMatrixElement + //#################################################################### + + /** + * Color Matrix Types + */ + typedef enum + { + SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0, + SVG_FECOLORMATRIX_TYPE_MATRIX = 1, + SVG_FECOLORMATRIX_TYPE_SATURATE = 2, + SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3, + SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4 + } ColorMatrixType; + + + /** + * Corresponds to attribute in on the given 'feColorMatrix' element. + * - also in feBlend + */ + // SVGAnimatedValue getIn1(); + + /** + * Corresponds to attribute type on the given 'feColorMatrix' element. + * Takes one of the Color Matrix Types. + * -- also in CSSRule + */ + // SVGAnimatedValue getType(); + + /** + * Corresponds to attribute values on the given 'feColorMatrix' element. + * Provides access to the contents of the values attribute. + */ + SVGAnimatedValueList getValues(); + + + //#################################################################### + //# SVGFEComponentTransferElement + //#################################################################### + + + /** + * Corresponds to attribute in on the given 'feComponentTransfer' element. + * -- also in feBlend + */ + // SVGAnimatedValue getIn1(); + + //#################################################################### + //# SVGFECompositeElement + //#################################################################### + + /** + * Composite Operators + */ + typedef enum + { + SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0, + SVG_FECOMPOSITE_OPERATOR_OVER = 1, + SVG_FECOMPOSITE_OPERATOR_IN = 2, + SVG_FECOMPOSITE_OPERATOR_OUT = 3, + SVG_FECOMPOSITE_OPERATOR_ATOP = 4, + SVG_FECOMPOSITE_OPERATOR_XOR = 5, + SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6 + } CompositeOperatorType; + + /** + * Corresponds to attribute in on the given 'feComposite' element. + * -- also in feBlend + */ + // SVGAnimatedValue getIn1(); + + /** + * Corresponds to attribute in2 on the given 'feComposite' element. + * -- also in feBlend + */ + // SVGAnimatedValue getIn2(); + + /** + * Corresponds to attribute operator on the given 'feComposite' element. + * Takes one of the Composite Operators. + */ + SVGAnimatedValue getOperator(); + + /** + * Corresponds to attribute k1 on the given 'feComposite' element. + */ + SVGAnimatedValue getK1(); + + /** + * Corresponds to attribute k2 on the given 'feComposite' element. + */ + SVGAnimatedValue getK2(); + + /** + * Corresponds to attribute k3 on the given 'feComposite' element. + */ + SVGAnimatedValue getK3(); + + /** + * Corresponds to attribute k4 on the given 'feComposite' element. + */ + SVGAnimatedValue getK4(); + + + //#################################################################### + //# SVGFEConvolveMatrixElement + //#################################################################### + + + /** + * Edge Mode Values + */ + typedef enum + { + SVG_EDGEMODE_UNKNOWN = 0, + SVG_EDGEMODE_DUPLICATE = 1, + SVG_EDGEMODE_WRAP = 2, + SVG_EDGEMODE_NONE = 3 + } EdgeModeType; + + + /** + * Corresponds to attribute order on the given 'feConvolveMatrix' element. + */ + SVGAnimatedValue getOrderX(); + + /** + * Corresponds to attribute order on the given 'feConvolveMatrix' element. + */ + SVGAnimatedValue getOrderY(); + + /** + * Corresponds to attribute kernelMatrix on the given element. + */ + SVGAnimatedValueList getKernelMatrix(); + + /** + * Corresponds to attribute divisor on the given 'feConvolveMatrix' element. + */ + SVGAnimatedValue getDivisor(); + + /** + * Corresponds to attribute bias on the given 'feConvolveMatrix' element. + */ + SVGAnimatedValue getBias(); + + /** + * Corresponds to attribute targetX on the given 'feConvolveMatrix' element. + */ + SVGAnimatedValue getTargetX(); + + /** + * Corresponds to attribute targetY on the given 'feConvolveMatrix' element. + */ + SVGAnimatedValue getTargetY(); + + /** + * Corresponds to attribute edgeMode on the given 'feConvolveMatrix' + * element. Takes one of the Edge Mode Types. + */ + SVGAnimatedValue getEdgeMode(); + + /** + * Corresponds to attribute kernelUnitLength on the + * given 'feConvolveMatrix' element. + */ + SVGAnimatedValue getKernelUnitLengthX(); + + /** + * Corresponds to attribute kernelUnitLength on the given + * 'feConvolveMatrix' element. + */ + SVGAnimatedValue getKernelUnitLengthY(); + + /** + * Corresponds to attribute preserveAlpha on the + * given 'feConvolveMatrix' element. + */ + SVGAnimatedValue getPreserveAlpha(); + + + + //#################################################################### + //# SVGFEDiffuseLightingElement + //#################################################################### + + + /** + * Corresponds to attribute in on the given 'feDiffuseLighting' element. + * -- also in feBlend + */ + // SVGAnimatedValue getIn1(); + + /** + * Corresponds to attribute surfaceScale on the given + * 'feDiffuseLighting' element. + */ + SVGAnimatedValue getSurfaceScale(); + + /** + * Corresponds to attribute diffuseConstant on the given + * 'feDiffuseLighting' element. + */ + SVGAnimatedValue getDiffuseConstant(); + + /** + * Corresponds to attribute kernelUnitLength on the given + * 'feDiffuseLighting' element. + */ + // SVGAnimatedValue getKernelUnitLengthX(); + + /** + * Corresponds to attribute kernelUnitLength on the given + * 'feDiffuseLighting' element. + */ + // SVGAnimatedValue getKernelUnitLengthY(); + + + + + //#################################################################### + //# SVGFEDisplacementMapElement + //#################################################################### + + + /** + * Channel Selectors + */ + typedef enum + { + SVG_CHANNEL_UNKNOWN = 0, + SVG_CHANNEL_R = 1, + SVG_CHANNEL_G = 2, + SVG_CHANNEL_B = 3, + SVG_CHANNEL_A = 4 + } ChannelSelector; + + /** + * + * -- also in feBlend + */ + // SVGAnimatedValue getIn1(); + + /** + * + * -- also in feBlend + */ + // SVGAnimatedValue getIn2(); + + + /** + * + */ + SVGAnimatedValue getScale(); + + /** + * + */ + SVGAnimatedValue getXChannelSelector(); + + /** + * + */ + SVGAnimatedValue getYChannelSelector(); + + //#################################################################### + //# SVGFEDistantLightElement + //#################################################################### + + + /** + * Corresponds to attribute azimuth on the given 'feDistantLight' element. + */ + SVGAnimatedValue getAzimuth(); + + + /** + * Corresponds to attribute elevation on the given 'feDistantLight' + * element + */ + SVGAnimatedValue getElevation(); + + + //#################################################################### + //# SVGFEFloodElement + //#################################################################### + + + /** + * + * -- also in feBlend + */ + // SVGAnimatedValue getIn1(); + + + //#################################################################### + //# SVGFEFuncAElement + //#################################################################### + + //#################################################################### + //# SVGFEFuncBElement + //#################################################################### + + //#################################################################### + //# SVGFEFuncGElement + //#################################################################### + + //#################################################################### + //# SVGFEFuncRElement + //#################################################################### + + + //#################################################################### + //# SVGFEGaussianBlurElement + //#################################################################### + + + /** + * + * -- also in feBlend + */ + // SVGAnimatedValue getIn1(); + + + /** + * + */ + SVGAnimatedValue getStdDeviationX(); + + /** + * + */ + SVGAnimatedValue getStdDeviationY(); + + + /** + * + */ + void setStdDeviation(double stdDeviationX, double stdDeviationY); + + + //#################################################################### + //# SVGFEImageElement + //#################################################################### + + + //#################################################################### + //# SVGFEMergeElement + //#################################################################### + + //#################################################################### + //# SVGFEMergeNodeElement + //#################################################################### + + //#################################################################### + //# SVGFEMorphologyElement + //#################################################################### + + + + /** + * Morphology Operators + */ + typedef enum + { + SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0, + SVG_MORPHOLOGY_OPERATOR_ERODE = 1, + SVG_MORPHOLOGY_OPERATOR_DILATE = 2 + } MorphologyOperatorType; + + + /** + * + * -- also in feBlend + */ + // SVGAnimatedValue getIn1(); + + + /** + * + */ + // SVGAnimatedValue getOperator(); + + /** + * + */ + SVGAnimatedValue getRadiusX(); + + /** + * + */ + SVGAnimatedValue getRadiusY(); + + //#################################################################### + //# SVGFEOffsetElement + //#################################################################### + + /** + * + * -- also in feBlend + */ + // SVGAnimatedValue getIn1(); + + /** + * + */ + SVGAnimatedValue getDx(); + + /** + * + */ + SVGAnimatedValue getDy(); + + + //#################################################################### + //# SVGFEPointLightElement + //#################################################################### + + /** + * Corresponds to attribute x on the given 'fePointLight' element. + */ + SVGAnimatedValue getX(); + + /** + * Corresponds to attribute y on the given 'fePointLight' element. + */ + SVGAnimatedValue getY(); + + /** + * Corresponds to attribute z on the given 'fePointLight' element. + */ + SVGAnimatedValue getZ(); + + //#################################################################### + //# SVGFESpecularLightingElement + //#################################################################### + + + /** + * + * -- also in feBlend + */ + // SVGAnimatedValue getIn1(); + + /** + * + */ + // SVGAnimatedValue getSurfaceScale(); + + /** + * + */ + SVGAnimatedValue getSpecularConstant(); + + /** + * + */ + SVGAnimatedValue getSpecularExponent(); + + + //#################################################################### + //# SVGFESpotLightElement + //#################################################################### + + /** + * Corresponds to attribute x on the given 'feSpotLight' element. + */ + // SVGAnimatedValue getX(); + + /** + * Corresponds to attribute y on the given 'feSpotLight' element. + */ + // SVGAnimatedValue getY(); + + /** + * Corresponds to attribute z on the given 'feSpotLight' element. + */ + // SVGAnimatedValue getZ(); + + /** + * Corresponds to attribute pointsAtX on the given 'feSpotLight' element. + */ + SVGAnimatedValue getPointsAtX(); + + /** + * Corresponds to attribute pointsAtY on the given 'feSpotLight' element. + */ + SVGAnimatedValue getPointsAtY(); + + /** + * Corresponds to attribute pointsAtZ on the given 'feSpotLight' element. + */ + SVGAnimatedValue getPointsAtZ(); + + /** + * Corresponds to attribute specularExponent on the + * given 'feSpotLight' element. + */ + // SVGAnimatedValue getSpecularExponent(); + + /** + * Corresponds to attribute limitingConeAngle on the + * given 'feSpotLight' element. + */ + SVGAnimatedValue getLimitingConeAngle(); + + + //#################################################################### + //# SVGFETileElement + //#################################################################### + + + /** + * + * -- also in feBlend + */ + // SVGAnimatedValue getIn1(); + + + //#################################################################### + //# SVGFETurbulenceElement + //#################################################################### + + + /** + * Turbulence Types + */ + typedef enum + { + SVG_TURBULENCE_TYPE_UNKNOWN = 0, + SVG_TURBULENCE_TYPE_FRACTALNOISE = 1, + SVG_TURBULENCE_TYPE_TURBULENCE = 2 + } TurbulenceType; + + /** + * Stitch Options + */ + typedef enum + { + SVG_STITCHTYPE_UNKNOWN = 0, + SVG_STITCHTYPE_STITCH = 1, + SVG_STITCHTYPE_NOSTITCH = 2 + } StitchOption; + + + + /** + * + */ + SVGAnimatedValue getBaseFrequencyX(); + + /** + * + */ + SVGAnimatedValue getBaseFrequencyY(); + + /** + * + */ + SVGAnimatedValue getNumOctaves(); + + /** + * + */ + SVGAnimatedValue getSeed(); + + /** + * + */ + SVGAnimatedValue getStitchTiles(); + + /** + * + */ + SVGAnimatedValue getType(); + + + + //#################################################################### + //# SVGFilterElement + //#################################################################### + + + /** + * Corresponds to attribute filterUnits on the given 'filter' element. Takes one + * of the constants defined in SVGUnitTypes. + */ + SVGAnimatedValue getFilterUnits(); + + /** + * Corresponds to attribute primitiveUnits on the given 'filter' element. Takes + * one of the constants defined in SVGUnitTypes. + */ + SVGAnimatedValue getPrimitiveUnits(); + + /** + * + */ + // SVGAnimatedValue getX(); + + /** + * Corresponds to attribute x on the given 'filter' element. + */ + // SVGAnimatedValue getY(); + + /** + * Corresponds to attribute y on the given 'filter' element. + */ + // SVGAnimatedValue getWidth(); + + /** + * Corresponds to attribute height on the given 'filter' element. + */ + // SVGAnimatedValue getHeight(); + + + /** + * Corresponds to attribute filterRes on the given 'filter' element. + * Contains the X component of attribute filterRes. + */ + SVGAnimatedValue getFilterResX(); + + /** + * Corresponds to attribute filterRes on the given 'filter' element. + * Contains the Y component(possibly computed automatically) + * of attribute filterRes. + */ + SVGAnimatedValue getFilterResY(); + + /** + * Sets the values for attribute filterRes. + */ + void setFilterRes(unsigned long filterResX, unsigned long filterResY); + + + //#################################################################### + //# SVGFontElement + //#################################################################### + + //#################################################################### + //# SVGFontFaceElement + //#################################################################### + + //#################################################################### + //# SVGFontFaceFormatElement + //#################################################################### + + //#################################################################### + //# SVGFontFaceNameElement + //#################################################################### + + //#################################################################### + //# SVGFontFaceSrcElement + //#################################################################### + + //#################################################################### + //# SVGFontFaceUriElement + //#################################################################### + + //#################################################################### + //# SVGForeignObjectElement + //#################################################################### + + /** + * + */ + // SVGAnimatedValue getX(); + + /** + * + */ + // SVGAnimatedValue getY(); + + /** + * + */ + // SVGAnimatedValue getWidth(); + + /** + * + */ + // SVGAnimatedValue getHeight(); + + + + //#################################################################### + //# SVGGlyphRefElement + //#################################################################### + + + /** + * Get the attribute glyphRef on the given element. + */ + // DOMString getGlyphRef(); + + /** + * Set the attribute glyphRef on the given element. + */ + // void setGlyphRef(const DOMString &val) throw(DOMException); + + /** + * Get the attribute format on the given element. + */ + // DOMString getFormat(); + + /** + * Set the attribute format on the given element. + */ + // void setFormat(const DOMString &val) throw(DOMException); + + /** + * Get the attribute x on the given element. + */ + // double getX(); + + /** + * Set the attribute x on the given element. + */ + // void setX(double val) throw(DOMException); + + /** + * Get the attribute y on the given element. + */ + // double getY(); + + /** + * Set the attribute y on the given element. + */ + // void setY(double val) throw(DOMException); + + /** + * Get the attribute dx on the given element. + */ + // double getDx(); + + /** + * Set the attribute dx on the given element. + */ + // void setDx(double val) throw(DOMException); + + /** + * Get the attribute dy on the given element. + */ + // double getDy(); + + /** + * Set the attribute dy on the given element. + */ + // void setDy(double val) throw(DOMException); + + + //#################################################################### + //# SVGGradientElement + //#################################################################### + + + /** + * Spread Method Types + */ + typedef enum + { + SVG_SPREADMETHOD_UNKNOWN = 0, + SVG_SPREADMETHOD_PAD = 1, + SVG_SPREADMETHOD_REFLECT = 2, + SVG_SPREADMETHOD_REPEAT = 3 + } SpreadMethodType; + + + /** + * Corresponds to attribute gradientUnits on the given element. + * Takes one of the constants defined in SVGUnitTypes. + */ + SVGAnimatedValue &getGradientUnits(); + + /** + * Corresponds to attribute gradientTransform on the given element. + */ + SVGAnimatedValueList &getGradientTransform(); + + /** + * Corresponds to attribute spreadMethod on the given element. + * One of the Spread Method Types. + */ + SVGAnimatedValue &getSpreadMethod(); + + + + //#################################################################### + //# SVGHKernElement + //#################################################################### + + //#################################################################### + //# SVGImageElement + //#################################################################### + + /** + * Corresponds to attribute x on the given 'image' element. + */ + // SVGAnimatedValue getX(); + + /** + * Corresponds to attribute y on the given 'image' element. + */ + // SVGAnimatedValue getY(); + + /** + * Corresponds to attribute width on the given 'image' element. + */ + // SVGAnimatedValue getWidth(); + + /** + * Corresponds to attribute height on the given 'image' element. + */ + // SVGAnimatedValue getHeight(); + + + /** + * Corresponds to attribute preserveAspectRatio on the given element. + */ + // SVGAnimatedPreserveAspectRatio getPreserveAspectRatio(); + + //#################################################################### + //# SVGLinearGradientElement + //#################################################################### + + /** + * Corresponds to attribute x1 on the given 'linearGradient' element. + */ + // SVGAnimatedValue getX1(); + + /** + * Corresponds to attribute y1 on the given 'linearGradient' element. + */ + // SVGAnimatedValue getY1(); + + /** + * Corresponds to attribute x2 on the given 'linearGradient' element. + */ + // SVGAnimatedValue getX2(); + + /** + * Corresponds to attribute y2 on the given 'linearGradient' element. + */ + // SVGAnimatedValue getY2(); + + + + //#################################################################### + //# SVGLineElement + //#################################################################### + + /** + * Corresponds to attribute x1 on the given 'line' element. + */ + // SVGAnimatedValue getX1(); + + /** + * Corresponds to attribute y1 on the given 'line' element. + */ + // SVGAnimatedValue getY1(); + + /** + * Corresponds to attribute x2 on the given 'line' element. + */ + // SVGAnimatedValue getX2(); + + /** + * Corresponds to attribute y2 on the given 'line' element. + */ + // SVGAnimatedValue getY2(); + + + //#################################################################### + //# SVGMarkerElement + //#################################################################### + + + /** + * Marker Unit Types + */ + typedef enum + { + SVG_MARKERUNITS_UNKNOWN = 0, + SVG_MARKERUNITS_USERSPACEONUSE = 1, + SVG_MARKERUNITS_STROKEWIDTH = 2 + } MarkerUnitType; + + /** + * Marker Orientation Types + */ + typedef enum + { + SVG_MARKER_ORIENT_UNKNOWN = 0, + SVG_MARKER_ORIENT_AUTO = 1, + SVG_MARKER_ORIENT_ANGLE = 2 + } MarkerOrientationType; + + + /** + * Corresponds to attribute refX on the given 'marker' element. + */ + SVGAnimatedValue getRefX(); + + /** + * Corresponds to attribute refY on the given 'marker' element. + */ + SVGAnimatedValue getRefY(); + + /** + * Corresponds to attribute markerUnits on the given 'marker' element. + * One of the Marker Units Types defined above. + */ + SVGAnimatedValue getMarkerUnits(); + + /** + * Corresponds to attribute markerWidth on the given 'marker' element. + */ + SVGAnimatedValue getMarkerWidth(); + + /** + * Corresponds to attribute markerHeight on the given 'marker' element. + */ + SVGAnimatedValue getMarkerHeight(); + + /** + * Corresponds to attribute orient on the given 'marker' element. + * One of the Marker Orientation Types defined above. + */ + SVGAnimatedValue getOrientType(); + + /** + * Corresponds to attribute orient on the given 'marker' element. + * If markerUnits is SVG_MARKER_ORIENT_ANGLE, the angle value for + * attribute orient; otherwise, it will be set to zero. + */ + SVGAnimatedValue getOrientAngle(); + + + /** + * Sets the value of attribute orient to 'auto'. + */ + void setOrientToAuto(); + + /** + * Sets the value of attribute orient to the given angle. + */ + void setOrientToAngle(const SVGAngle &angle); + + + //#################################################################### + //# SVGMaskElement + //#################################################################### + + + /** + * Corresponds to attribute maskUnits on the given 'mask' element. Takes one of + * the constants defined in SVGUnitTypes. + */ + SVGAnimatedValue getMaskUnits(); + + /** + * Corresponds to attribute maskContentUnits on the given 'mask' element. Takes + * one of the constants defined in SVGUnitTypes. + */ + SVGAnimatedValue getMaskContentUnits(); + + /** + * Corresponds to attribute x on the given 'mask' element. + */ + // SVGAnimatedValue getX(); + + /** + * Corresponds to attribute y on the given 'mask' element. + */ + // SVGAnimatedValue getY(); + + /** + * Corresponds to attribute width on the given 'mask' element. + */ + // SVGAnimatedValue getWidth(); + + /** + * Corresponds to attribute height on the given 'mask' element. + */ + // SVGAnimatedValue getHeight(); + + //#################################################################### + //# SVGMetadataElement + //#################################################################### + + //#################################################################### + //# SVGMissingGlyphElement + //#################################################################### + + + //#################################################################### + //# SVGMPathElement + //#################################################################### + + /** + * Corresponds to attribute pathLength on the given 'path' element. + */ + SVGAnimatedValue getPathLength(); + + /** + * Returns the user agent's computed value for the total length of the path using + * the user agent's distance-along-a-path algorithm, as a distance in the current + * user coordinate system. + */ + double getTotalLength(); + + /** + * Returns the(x,y) coordinate in user space which is distance units along the + * path, utilizing the user agent's distance-along-a-path algorithm. + */ + SVGPoint getPointAtLength(double distance); + + /** + * Returns the index into pathSegList which is distance units along the path, + * utilizing the user agent's distance-along-a-path algorithm. + */ + unsigned long getPathSegAtLength(double distance); + + /** + * Returns a stand-alone, parentless SVGPathSegClosePath object. + */ + SVGPathSeg createSVGPathSegClosePath(); + + /** + * Returns a stand-alone, parentless SVGPathSegMovetoAbs object. + */ + SVGPathSeg createSVGPathSegMovetoAbs(double x, double y); + + /** + * Returns a stand-alone, parentless SVGPathSegMovetoRel object. + */ + SVGPathSeg createSVGPathSegMovetoRel(double x, double y); + + /** + * Returns a stand-alone, parentless SVGPathSegLinetoAbs object. + */ + SVGPathSeg createSVGPathSegLinetoAbs(double x, double y); + + /** + * Returns a stand-alone, parentless SVGPathSegLinetoRel object. + */ + SVGPathSeg createSVGPathSegLinetoRel(double x, double y); + + /** + * Returns a stand-alone, parentless SVGPathSegCurvetoCubicAbs object. + */ + SVGPathSeg createSVGPathSegCurvetoCubicAbs(double x, double y, + double x1, double y1, double x2, double y2); + + /** + * Returns a stand-alone, parentless SVGPathSegCurvetoCubicRel object. + */ + SVGPathSeg createSVGPathSegCurvetoCubicRel(double x, double y, + double x1, double y1, double x2, double y2); + + /** + * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticAbs object. + */ + SVGPathSeg createSVGPathSegCurvetoQuadraticAbs(double x, double y, + double x1, double y1); + + /** + * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticRel object. + */ + SVGPathSeg createSVGPathSegCurvetoQuadraticRel(double x, double y, + double x1, double y1); + + /** + * Returns a stand-alone, parentless SVGPathSegArcAbs object. + */ + SVGPathSeg createSVGPathSegArcAbs(double x, double y, + double r1, double r2, double angle, + bool largeArcFlag, bool sweepFlag); + + /** + * Returns a stand-alone, parentless SVGPathSegArcRel object. + */ + SVGPathSeg createSVGPathSegArcRel(double x, double y, double r1, + double r2, double angle, bool largeArcFlag, + bool sweepFlag); + + /** + * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalAbs object. + */ + SVGPathSeg createSVGPathSegLinetoHorizontalAbs(double x); + + /** + * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalRel object. + */ + SVGPathSeg createSVGPathSegLinetoHorizontalRel(double x); + + /** + * Returns a stand-alone, parentless SVGPathSegLinetoVerticalAbs object. + */ + SVGPathSeg createSVGPathSegLinetoVerticalAbs(double y); + + /** + * Returns a stand-alone, parentless SVGPathSegLinetoVerticalRel object. + */ + SVGPathSeg createSVGPathSegLinetoVerticalRel(double y); + + /** + * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothAbs object. + */ + SVGPathSeg createSVGPathSegCurvetoCubicSmoothAbs(double x, double y, + double x2, double y2); + + /** + * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothRel object. + */ + SVGPathSeg createSVGPathSegCurvetoCubicSmoothRel(double x, double y, + double x2, double y2); + + /** + * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothAbs + * object. + */ + SVGPathSeg createSVGPathSegCurvetoQuadraticSmoothAbs(double x, double y); + + /** + * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothRel + * object. + */ + SVGPathSeg createSVGPathSegCurvetoQuadraticSmoothRel(double x, double y); + + //#################################################################### + //# SVGPathElement + //#################################################################### + + //#################################################################### + //# SVGPatternElement + //#################################################################### + + /** + * Corresponds to attribute patternUnits on the given 'pattern' element. + * Takes one of the constants defined in SVGUnitTypes. + */ + SVGAnimatedValue getPatternUnits(); + + /** + * Corresponds to attribute patternContentUnits on the given 'pattern' + * element. Takes one of the constants defined in SVGUnitTypes. + */ + SVGAnimatedValue getPatternContentUnits(); + + /** + * Corresponds to attribute patternTransform on the given 'pattern' element. + */ + SVGAnimatedValueList &getPatternTransform(); + + /** + * Corresponds to attribute x on the given 'pattern' element. + */ + // SVGAnimatedValue getX(); + + /** + * + */ + // SVGAnimatedValue getY(); + + /** + * Corresponds to attribute width on the given 'pattern' element. + */ + // SVGAnimatedValue getWidth(); + + /** + * Corresponds to attribute height on the given 'pattern' element. + */ + // SVGAnimatedValue getHeight(); + + + //#################################################################### + //# SVGPolyLineElement + //#################################################################### + + //#################################################################### + //# SVGPolygonElement + //#################################################################### + + //#################################################################### + //# SVGRadialGradientElement + //#################################################################### + + + /** + * Corresponds to attribute cx on the given 'radialGradient' element. + */ + // SVGAnimatedValue getCx(); + + + /** + * Corresponds to attribute cy on the given 'radialGradient' element. + */ + // SVGAnimatedValue getCy(); + + + /** + * Corresponds to attribute r on the given 'radialGradient' element. + */ + // SVGAnimatedValue getR(); + + + /** + * Corresponds to attribute fx on the given 'radialGradient' element. + */ + SVGAnimatedValue getFx(); + + + /** + * Corresponds to attribute fy on the given 'radialGradient' element. + */ + SVGAnimatedValue getFy(); + + + //#################################################################### + //# SVGRectElement + //#################################################################### + + /** + * Corresponds to attribute x on the given 'rect' element. + */ + // SVGAnimatedValue getX(); + + /** + * Corresponds to attribute y on the given 'rect' element. + */ + // SVGAnimatedValue getY(); + + /** + * Corresponds to attribute width on the given 'rect' element. + */ + // SVGAnimatedValue getWidth(); + + /** + * Corresponds to attribute height on the given 'rect' element. + */ + // SVGAnimatedValue getHeight(); + + + /** + * Corresponds to attribute rx on the given 'rect' element. + */ + // SVGAnimatedValue getRx(); + + /** + * Corresponds to attribute ry on the given 'rect' element. + */ + // SVGAnimatedValue getRy(); + + + //#################################################################### + //# SVGScriptElement + //#################################################################### + + /** + * + */ + // DOMString getType(); + + /** + * + */ + // void setType(const DOMString &val) throw(DOMException); + + //#################################################################### + //# SVGSetElement + //#################################################################### + + //#################################################################### + //# SVGStopElement + //#################################################################### + + + /** + * Corresponds to attribute offset on the given 'stop' element. + */ + // SVGAnimatedValue getOffset(); + + + //#################################################################### + //# SVGStyleElement + //#################################################################### + + /** + * Get the attribute xml:space on the given element. + */ + DOMString getXmlspace(); + + /** + * Set the attribute xml:space on the given element. + */ + void setXmlspace(const DOMString &val) throw(DOMException); + + /** + * Get the attribute type on the given 'style' element. + */ + // DOMString getType(); + + /** + * Set the attribute type on the given 'style' element. + */ + // void setType(const DOMString &val) throw(DOMException); + + /** + * Get the attribute media on the given 'style' element. + */ + DOMString getMedia(); + + /** + * Set the attribute media on the given 'style' element. + */ + void setMedia(const DOMString &val) throw(DOMException); + + /** + * Get the attribute title on the given 'style' element. + */ + DOMString getTitle(); + + /** + * Set the attribute title on the given 'style' element. + */ + void setTitle(const DOMString &val) throw(DOMException); + + //#################################################################### + //# SVGSymbolElement + //#################################################################### + + //#################################################################### + //# SVGSVGElement + //#################################################################### + + /** + * Corresponds to attribute x on the given 'svg' element. + */ + // SVGAnimatedValue getX(); + + /** + * Corresponds to attribute y on the given 'svg' element. + */ + // SVGAnimatedValue getY(); + + /** + * Corresponds to attribute width on the given 'svg' element. + */ + // SVGAnimatedValue getWidth(); + + /** + * Corresponds to attribute height on the given 'svg' element. + */ + // SVGAnimatedValue getHeight(); + + /** + * Get the attribute contentScriptType on the given 'svg' element. + */ + DOMString getContentScriptType(); + + /** + * Set the attribute contentScriptType on the given 'svg' element. + */ + void setContentScriptType(const DOMString &val) throw(DOMException); + + + /** + * Get the attribute contentStyleType on the given 'svg' element. + */ + DOMString getContentStyleType(); + + /** + * Set the attribute contentStyleType on the given 'svg' element. + */ + void setContentStyleType(const DOMString &val) throw(DOMException); + + /** + * The position and size of the viewport(implicit or explicit) that corresponds + * to this 'svg' element. When the user agent is actually rendering the content, + * then the position and size values represent the actual values when rendering. + * The position and size values are unitless values in the coordinate system of + * the parent element. If no parent element exists(i.e., 'svg' element + * represents the root of the document tree), if this SVG document is embedded as + * part of another document(e.g., via the HTML 'object' element), then the + * position and size are unitless values in the coordinate system of the parent + * document.(If the parent uses CSS or XSL layout, then unitless values + * represent pixel units for the current CSS or XSL viewport, as described in the + * CSS2 specification.) If the parent element does not have a coordinate system, + * then the user agent should provide reasonable default values for this attribute. + * */ + SVGRect getViewport(); + + /** + * Size of a pixel units(as defined by CSS2) along the x-axis of the viewport, + * which represents a unit somewhere in the range of 70dpi to 120dpi, and, on + * systems that support this, might actually match the characteristics of the + * target medium. On systems where it is impossible to know the size of a pixel, + * a suitable default pixel size is provided. + */ + double getPixelUnitToMillimeterX(); + + /** + * Corresponding size of a pixel unit along the y-axis of the viewport. + */ + double getPixelUnitToMillimeterY(); + + /** + * User interface(UI) events in DOM Level 2 indicate the screen positions at + * which the given UI event occurred. When the user agent actually knows the + * physical size of a "screen unit", this attribute will express that information; + * otherwise, user agents will provide a suitable default value such as .28mm. + */ + double getScreenPixelToMillimeterX(); + + /** + * Corresponding size of a screen pixel along the y-axis of the viewport. + */ + double getScreenPixelToMillimeterY(); + + + /** + * The initial view(i.e., before magnification and panning) of the current + * innermost SVG document fragment can be either the "standard" view(i.e., based + * on attributes on the 'svg' element such as fitBoxToViewport) or to a "custom" + * view(i.e., a hyperlink into a particular 'view' or other element - see + * Linking into SVG content: URI fragments and SVG views). If the initial view is + * the "standard" view, then this attribute is false. If the initial view is a + * "custom" view, then this attribute is true. + */ + bool getUseCurrentView(); + + /** + * Set the value above + */ + void setUseCurrentView(bool val) throw(DOMException); + + /** + * The definition of the initial view(i.e., before magnification and panning) of + * the current innermost SVG document fragment. The meaning depends on the + * situation: + * + * * If the initial view was a "standard" view, then: + * o the values for viewBox, preserveAspectRatio and zoomAndPan within + * currentView will match the values for the corresponding DOM attributes that + * are on SVGSVGElement directly + * o the values for transform and viewTarget within currentView will be null + * * If the initial view was a link into a 'view' element, then: + * o the values for viewBox, preserveAspectRatio and zoomAndPan within + * currentView will correspond to the corresponding attributes for the given + * 'view' element + * o the values for transform and viewTarget within currentView will be null + * * If the initial view was a link into another element(i.e., other than a + * 'view'), then: + * o the values for viewBox, preserveAspectRatio and zoomAndPan within + * currentView will match the values for the corresponding DOM attributes that + * are on SVGSVGElement directly for the closest ancestor 'svg' element + * o the values for transform within currentView will be null + * o the viewTarget within currentView will represent the target of the link + * * If the initial view was a link into the SVG document fragment using an SVG + * view specification fragment identifier(i.e., #svgView(...)), then: + * o the values for viewBox, preserveAspectRatio, zoomAndPan, transform and + * viewTarget within currentView will correspond to the values from the SVG view + * specification fragment identifier + * + */ + SVGViewSpec getCurrentView(); + + + /** + * This attribute indicates the current scale factor relative to the initial view + * to take into account user magnification and panning operations, as described + * under Magnification and panning. DOM attributes currentScale and + * currentTranslate are equivalent to the 2x3 matrix [a b c d e f] = + * [currentScale 0 0 currentScale currentTranslate.x currentTranslate.y]. If + * "magnification" is enabled(i.e., zoomAndPan="magnify"), then the effect is as + * if an extra transformation were placed at the outermost level on the SVG + * document fragment(i.e., outside the outermost 'svg' element). + */ + double getCurrentScale(); + + /** + * Set the value above. + */ + void setCurrentScale(double val) throw(DOMException); + + /** + * The corresponding translation factor that takes into account + * user "magnification". + */ + SVGPoint getCurrentTranslate(); + + /** + * Takes a time-out value which indicates that redraw shall not occur until:(a) + * the corresponding unsuspendRedraw(suspend_handle_id) call has been made,(b) + * an unsuspendRedrawAll() call has been made, or(c) its timer has timed out. In + * environments that do not support interactivity(e.g., print media), then + * redraw shall not be suspended. suspend_handle_id = + * suspendRedraw(max_wait_milliseconds) and unsuspendRedraw(suspend_handle_id) + * must be packaged as balanced pairs. When you want to suspend redraw actions as + * a collection of SVG DOM changes occur, then precede the changes to the SVG DOM + * with a method call similar to suspend_handle_id = + * suspendRedraw(max_wait_milliseconds) and follow the changes with a method call + * similar to unsuspendRedraw(suspend_handle_id). Note that multiple + * suspendRedraw calls can be used at once and that each such method call is + * treated independently of the other suspendRedraw method calls. + */ + unsigned long suspendRedraw(unsigned long max_wait_milliseconds); + + /** + * Cancels a specified suspendRedraw() by providing a unique suspend_handle_id. + */ + void unsuspendRedraw(unsigned long suspend_handle_id) throw(DOMException); + + /** + * Cancels all currently active suspendRedraw() method calls. This method is most + * useful at the very end of a set of SVG DOM calls to ensure that all pending + * suspendRedraw() method calls have been cancelled. + */ + void unsuspendRedrawAll(); + + /** + * In rendering environments supporting interactivity, forces the user agent to + * immediately redraw all regions of the viewport that require updating. + */ + void forceRedraw(); + + /** + * Suspends(i.e., pauses) all currently running animations that are defined + * within the SVG document fragment corresponding to this 'svg' element, causing + * the animation clock corresponding to this document fragment to stand still + * until it is unpaused. + */ + void pauseAnimations(); + + /** + * Unsuspends(i.e., unpauses) currently running animations that are defined + * within the SVG document fragment, causing the animation clock to continue from + * the time at which it was suspended. + */ + void unpauseAnimations(); + + /** + * Returns true if this SVG document fragment is in a paused state. + */ + bool animationsPaused(); + + /** + * Returns the current time in seconds relative to the start time for + * the current SVG document fragment. + */ + // double getCurrentTime(); + + /** + * Adjusts the clock for this SVG document fragment, establishing + * a new current time. + */ + void setCurrentTime(double seconds); + + /** + * Returns the list of graphics elements whose rendered content intersects the + * supplied rectangle, honoring the 'pointer-events' property value on each + * candidate graphics element. + */ + NodeList getIntersectionList(const SVGRect &rect, + const SVGElementPtr referenceElement); + + /** + * Returns the list of graphics elements whose rendered content is entirely + * contained within the supplied rectangle, honoring the 'pointer-events' + * property value on each candidate graphics element. + */ + NodeList getEnclosureList(const SVGRect &rect, + const SVGElementPtr referenceElement); + + /** + * Returns true if the rendered content of the given element intersects the + * supplied rectangle, honoring the 'pointer-events' property value on each + * candidate graphics element. + */ + bool checkIntersection(const SVGElementPtr element, const SVGRect &rect); + + /** + * Returns true if the rendered content of the given element is entirely + * contained within the supplied rectangle, honoring the 'pointer-events' + * property value on each candidate graphics element. + */ + bool checkEnclosure(const SVGElementPtr element, const SVGRect &rect); + + /** + * Unselects any selected objects, including any selections of text + * strings and type-in bars. + */ + void deselectAll(); + + /** + * Creates an SVGNumber object outside of any document trees. The object + * is initialized to a value of zero. + */ + SVGNumber createSVGNumber(); + + /** + * Creates an SVGLength object outside of any document trees. The object + * is initialized to the value of 0 user units. + */ + SVGLength createSVGLength(); + + /** + * Creates an SVGAngle object outside of any document trees. The object + * is initialized to the value 0 degrees(unitless). + */ + SVGAngle createSVGAngle(); + + /** + * Creates an SVGPoint object outside of any document trees. The object + * is initialized to the point(0,0) in the user coordinate system. + */ + SVGPoint createSVGPoint(); + + /** + * Creates an SVGMatrix object outside of any document trees. The object + * is initialized to the identity matrix. + */ + SVGMatrix createSVGMatrix(); + + /** + * Creates an SVGRect object outside of any document trees. The object + * is initialized such that all values are set to 0 user units. + */ + SVGRect createSVGRect(); + + /** + * Creates an SVGTransform object outside of any document trees. + * The object is initialized to an identity matrix transform + * (SVG_TRANSFORM_MATRIX). + */ + SVGTransform createSVGTransform(); + + /** + * Creates an SVGTransform object outside of any document trees. + * The object is initialized to the given matrix transform + * (i.e., SVG_TRANSFORM_MATRIX). + */ + SVGTransform createSVGTransformFromMatrix(const SVGMatrix &matrix); + + /** + * Searches this SVG document fragment(i.e., the search is restricted to a + * subset of the document tree) for an Element whose id is given by elementId. If + * an Element is found, that Element is returned. If no such element exists, + * returns null. Behavior is not defined if more than one element has this id. + */ + ElementPtr getElementById(const DOMString& elementId); + + + //#################################################################### + //# SVGTextElement + //#################################################################### + + + //#################################################################### + //# SVGTextContentElement + //#################################################################### + + + /** + * lengthAdjust Types + */ + typedef enum + { + LENGTHADJUST_UNKNOWN = 0, + LENGTHADJUST_SPACING = 1, + LENGTHADJUST_SPACINGANDGLYPHS = 2 + } LengthAdjustType; + + + /** + * Corresponds to attribute textLength on the given element. + */ + SVGAnimatedValue getTextLength(); + + + /** + * Corresponds to attribute lengthAdjust on the given element. The value must be + * one of the length adjust constants specified above. + */ + SVGAnimatedValue getLengthAdjust(); + + + /** + * Returns the total number of characters to be rendered within the current + * element. Includes characters which are included via a 'tref' reference. + */ + long getNumberOfChars(); + + /** + * The total sum of all of the advance values from rendering all of the + * characters within this element, including the advance value on the glyphs + *(horizontal or vertical), the effect of properties 'kerning', 'letter-spacing' + * and 'word-spacing' and adjustments due to attributes dx and dy on 'tspan' + * elements. For non-rendering environments, the user agent shall make reasonable + * assumptions about glyph metrics. + */ + double getComputedTextLength(); + + /** + * The total sum of all of the advance values from rendering the specified + * substring of the characters, including the advance value on the glyphs + *(horizontal or vertical), the effect of properties 'kerning', 'letter-spacing' + * and 'word-spacing' and adjustments due to attributes dx and dy on 'tspan' + * elements. For non-rendering environments, the user agent shall make reasonable + * assumptions about glyph metrics. + */ + double getSubStringLength(unsigned long charnum, unsigned long nchars) + throw(DOMException); + + /** + * Returns the current text position before rendering the character in the user + * coordinate system for rendering the glyph(s) that correspond to the specified + * character. The current text position has already taken into account the + * effects of any inter-character adjustments due to properties 'kerning', + * 'letter-spacing' and 'word-spacing' and adjustments due to attributes x, y, dx + * and dy. If multiple consecutive characters are rendered inseparably(e.g., as + * a single glyph or a sequence of glyphs), then each of the inseparable + * characters will return the start position for the first glyph. + */ + SVGPoint getStartPositionOfChar(unsigned long charnum) throw(DOMException); + + /** + * Returns the current text position after rendering the character in the user + * coordinate system for rendering the glyph(s) that correspond to the specified + * character. This current text position does not take into account the effects + * of any inter-character adjustments to prepare for the next character, such as + * properties 'kerning', 'letter-spacing' and 'word-spacing' and adjustments due + * to attributes x, y, dx and dy. If multiple consecutive characters are rendered + * inseparably(e.g., as a single glyph or a sequence of glyphs), then each of + * the inseparable characters will return the end position for the last glyph. + */ + SVGPoint getEndPositionOfChar(unsigned long charnum) throw(DOMException); + + /** + * Returns a tightest rectangle which defines the minimum and maximum X and Y + * values in the user coordinate system for rendering the glyph(s) that + * correspond to the specified character. The calculations assume that all glyphs + * occupy the full standard glyph cell for the font. If multiple consecutive + * characters are rendered inseparably(e.g., as a single glyph or a sequence of + * glyphs), then each of the inseparable characters will return the same extent. + */ + SVGRect getExtentOfChar(unsigned long charnum) throw(DOMException); + + /** + * Returns the rotation value relative to the current user coordinate system used + * to render the glyph(s) corresponding to the specified character. If multiple + * glyph(s) are used to render the given character and the glyphs each have + * different rotations(e.g., due to text-on-a-path), the user agent shall return + * an average value(e.g., the rotation angle at the midpoint along the path for + * all glyphs used to render this character). The rotation value represents the + * rotation that is supplemental to any rotation due to properties + * 'glyph-orientation-horizontal' and 'glyph-orientation-vertical'; thus, any + * glyph rotations due to these properties are not included into the returned + * rotation value. If multiple consecutive characters are rendered inseparably + *(e.g., as a single glyph or a sequence of glyphs), then each of the + * inseparable characters will return the same rotation value. + */ + double getRotationOfChar(unsigned long charnum) throw(DOMException); + + /** + * Returns the index of the character whose corresponding glyph cell bounding box + * contains the specified point. The calculations assume that all glyphs occupy + * the full standard glyph cell for the font. If no such character exists, a + * value of -1 is returned. If multiple such characters exist, the character + * within the element whose glyphs were rendered last(i.e., take into account + * any reordering such as for bidirectional text) is used. If multiple + * consecutive characters are rendered inseparably(e.g., as a single glyph or a + * sequence of glyphs), then the user agent shall allocate an equal percentage of + * the text advance amount to each of the contributing characters in determining + * which of the characters is chosen. + */ + long getCharNumAtPosition(const SVGPoint &point); + + /** + * Causes the specified substring to be selected just as if the user + * selected the substring interactively. + */ + void selectSubString(unsigned long charnum, unsigned long nchars) + throw(DOMException); + + + + + + //#################################################################### + //# SVGTextPathElement + //#################################################################### + + + /** + * textPath Method Types + */ + typedef enum + { + TEXTPATH_METHODTYPE_UNKNOWN = 0, + TEXTPATH_METHODTYPE_ALIGN = 1, + TEXTPATH_METHODTYPE_STRETCH = 2 + } TextPathMethodType; + + /** + * textPath Spacing Types + */ + typedef enum + { + TEXTPATH_SPACINGTYPE_UNKNOWN = 0, + TEXTPATH_SPACINGTYPE_AUTO = 1, + TEXTPATH_SPACINGTYPE_EXACT = 2 + } TextPathSpacingType; + + + /** + * Corresponds to attribute startOffset on the given 'textPath' element. + */ + SVGAnimatedValue getStartOffset(); + + /** + * Corresponds to attribute method on the given 'textPath' element. The value + * must be one of the method type constants specified above. + */ + SVGAnimatedValue getMethod(); + + /** + * Corresponds to attribute spacing on the given 'textPath' element. + * The value must be one of the spacing type constants specified above. + */ + SVGAnimatedValue getSpacing(); + + + //#################################################################### + //# SVGTextPositioningElement + //#################################################################### + + + /** + * Corresponds to attribute x on the given element. + */ + // SVGAnimatedValue getX(); + + /** + * Corresponds to attribute y on the given element. + */ + // SVGAnimatedValue getY(); + + /** + * Corresponds to attribute dx on the given element. + */ + // SVGAnimatedValue getDx(); + + /** + * Corresponds to attribute dy on the given element. + */ + // SVGAnimatedValue getDy(); + + + /** + * Corresponds to attribute rotate on the given element. + */ + SVGAnimatedValueList getRotate(); + + + //#################################################################### + //# SVGTitleElement + //#################################################################### + + //#################################################################### + //# SVGTRefElement + //#################################################################### + + //#################################################################### + //# SVGTSpanElement + //#################################################################### + + //#################################################################### + //# SVGSwitchElement + //#################################################################### + + //#################################################################### + //# SVGUseElement + //#################################################################### + + /** + * Corresponds to attribute x on the given 'use' element. + */ + // SVGAnimatedValue getX(); + + /** + * Corresponds to attribute y on the given 'use' element. + */ + // SVGAnimatedValue getY(); + + /** + * Corresponds to attribute width on the given 'use' element. + */ + // SVGAnimatedValue getWidth(); + + /** + * Corresponds to attribute height on the given 'use' element. + */ + // SVGAnimatedValue getHeight(); + + /** + * The root of the "instance tree". See description of SVGElementInstance for + * a discussion on the instance tree. + * */ + SVGElementInstance getInstanceRoot(); + + /** + * If the 'href' attribute is being animated, contains the current animated root + * of the "instance tree". If the 'href' attribute is not currently being + * animated, contains the same value as 'instanceRoot'. The root of the "instance + * tree". See description of SVGElementInstance for a discussion on the instance + * tree. + */ + SVGElementInstance getAnimatedInstanceRoot(); + + //#################################################################### + //# SVGVKernElement + //#################################################################### + + //#################################################################### + //# SVGViewElement + //#################################################################### + + + /** + * + */ + SVGValueList getViewTarget(); + + + + + //################## + //# Non-API methods + //################## + + + /** + * + */ + ~SVGElement() {} + + +}; + + + +/*######################################################################### +## SVGDocument +#########################################################################*/ + +/** + * When an 'svg' element is embedded inline as a component of a document from + * another namespace, such as when an 'svg' element is embedded inline within an + * XHTML document [XHTML], then an SVGDocument object will not exist; instead, + * the root object in the document object hierarchy will be a Document object of + * a different type, such as an HTMLDocument object. + * + * However, an SVGDocument object will indeed exist when the root element of the + * XML document hierarchy is an 'svg' element, such as when viewing a stand-alone + * SVG file(i.e., a file with MIME type "image/svg+xml"). In this case, the + * SVGDocument object will be the root object of the document object model + * hierarchy. + * + * In the case where an SVG document is embedded by reference, such as when an + * XHTML document has an 'object' element whose href attribute references an SVG + * document(i.e., a document whose MIME type is "image/svg+xml" and whose root + * element is thus an 'svg' element), there will exist two distinct DOM + * hierarchies. The first DOM hierarchy will be for the referencing document + *(e.g., an XHTML document). The second DOM hierarchy will be for the referenced + * SVG document. In this second DOM hierarchy, the root object of the document + * object model hierarchy is an SVGDocument object. + */ +class SVGDocument : public Document, + public events::DocumentEvent +{ +public: + + + /** + * The title of a document as specified by the title sub-element of the 'svg' + * root element(i.e., Here is the title...) + */ + DOMString getTitle(); + + /** + * Returns the URI of the page that linked to this page. The value is an empty + * string if the user navigated to the page directly(not through a link, but, + * for example, via a bookmark). + */ + DOMString getReferrer(); + + /** + * The domain name of the server that served the document, or a null string if + * the server cannot be identified by a domain name. + */ + DOMString getDomain(); + + /** + * The complete URI of the document. + */ + DOMString getURL(); + + /** + * The root 'svg' element in the document hierarchy. + */ + SVGElementPtr getRootElement(); + + + //################## + //# Non-API methods + //################## + + /** + * + */ + ~SVGDocument() {} + +}; + + + +/*######################################################################### +## GetSVGDocument +#########################################################################*/ + +/** + * In the case where an SVG document is embedded by reference, such as when an + * XHTML document has an 'object' element whose href(or equivalent) attribute + * references an SVG document(i.e., a document whose MIME type is + * "image/svg+xml" and whose root element is thus an 'svg' element), the SVG user + * agent is required to implement the GetSVGDocument interface for the element + * which references the SVG document(e.g., the HTML 'object' or comparable + * referencing elements). + */ +class GetSVGDocument +{ +public: + + /** + * Returns the SVGDocument object for the referenced SVG document. + */ + SVGDocumentPtr getSVGDocument() + throw(DOMException); + + //################## + //# Non-API methods + //################## + + /** + * + */ + ~GetSVGDocument() {} + +}; + + + + + + + +} //namespace svg +} //namespace dom +} //namespace w3c +} //namespace org + +#endif // __SVG_H__ +/*######################################################################### +## E N D O F F I L E +#########################################################################*/ + diff --git a/src/dom/work/svg2.cpp b/src/dom/work/svg2.cpp index acbdf2a00..f0da61e09 100644 --- a/src/dom/work/svg2.cpp +++ b/src/dom/work/svg2.cpp @@ -1,7049 +1,7049 @@ -/** - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - * - * Authors: - * Bob Jamison - * - * Copyright(C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or(at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * ======================================================================= - * NOTES - * - * This API follows: - * http://www.w3.org/TR/SVG11/svgdom.html - * - * This file defines the main SVG-DOM Node types. Other non-Node types are - * defined in svgtypes.h. - * - */ - -#include "svg.h" - -#include - - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace svg -{ - - - -//######################################################################## -//######################################################################## -//######################################################################## -//# I N T E R F A C E S -//######################################################################## -//######################################################################## -//######################################################################## - - - -/*######################################################################### -## SVGMatrix -#########################################################################*/ - -/** - * - */ -double SVGMatrix::getA() -{ - return a; -} - -/** - * - */ -void SVGMatrix::setA(double val) throw (DOMException) -{ - a = val; -} - -/** - * - */ -double SVGMatrix::getB() -{ - return b; -} - -/** - * - */ -void SVGMatrix::setB(double val) throw (DOMException) -{ - b = val; -} - -/** - * - */ -double SVGMatrix::getC() -{ - return c; -} - -/** - * - */ -void SVGMatrix::setC(double val) throw (DOMException) -{ - c = val; -} - -/** - * - */ -double SVGMatrix::getD() -{ - return d; -} - -/** - * - */ -void SVGMatrix::setD(double val) throw (DOMException) -{ - d = val; -} - -/** - * - */ -double SVGMatrix::getE() -{ - return e; -} - -/** - * - */ -void SVGMatrix::setE(double val) throw (DOMException) -{ - e = val; -} - -/** - * - */ -double SVGMatrix::getF() -{ - return f; -} - -/** - * - */ -void SVGMatrix::setF(double val) throw (DOMException) -{ - f = val; -} - - -/** - * Return the result of postmultiplying this matrix with another. - */ -SVGMatrix SVGMatrix::multiply(const SVGMatrix &other) -{ - SVGMatrix result; - result.a = a * other.a + c * other.b; - result.b = b * other.a + d * other.b; - result.c = a * other.c + c * other.d; - result.d = b * other.c + d * other.d; - result.e = a * other.e + c * other.f + e; - result.f = b * other.e + d * other.f + f; - return result; -} - -/** - * Calculate the inverse of this matrix - * - */ -SVGMatrix SVGMatrix::inverse() throw (SVGException) -{ - /*########################################### - The determinant of a 3x3 matrix E - (let's use our own notation for a bit) - - A B C - D E F - G H I - is - AEI - AFH - BDI + BFG + CDH - CEG - - Since in our affine transforms, G and H==0 and I==1, - this reduces to: - AE - BD - In SVG's naming scheme, that is: a * d - c * b . SIMPLE! - - In a similar method of attack, SVG's adjunct matrix is: - - d -c cf-ed - -b a eb-af - 0 0 ad-cb - - To get the inverse matrix, we divide the adjunct matrix by - the determinant. Notice that (ad-cb)/(ad-cb)==1. Very cool. - So what we end up with is this: - - a = d/(ad-cb) c = -c/(ad-cb) e = (cf-ed)/(ad-cb) - b = -b/(ad-cb) d = a/(ad-cb) f = (eb-af)/(ad-cb) - - (Since this would be in all SVG-DOM implementations, - somebody needed to document this! ^^) - #############################################*/ - - SVGMatrix result; - double determinant = a * d - c * b; - if (determinant < 1.0e-18)//invertible? - { - result.identity();//cop out - return result; - } - - double idet = 1.0 / determinant; - result.a = d * idet; - result.b = -b * idet; - result.c = -c * idet; - result.d = a * idet; - result.e = (c*f - e*d) * idet; - result.f = (e*b - a*f) * idet; - return result; -} - -/** - * Equivalent to multiplying by: - * | 1 0 x | - * | 0 1 y | - * | 0 0 1 | - * - */ -SVGMatrix SVGMatrix::translate(double x, double y) -{ - SVGMatrix result; - result.a = a; - result.b = b; - result.c = c; - result.d = d; - result.e = a * x + c * y + e; - result.f = b * x + d * y + f; - return result; -} - -/** - * Equivalent to multiplying by: - * | scale 0 0 | - * | 0 scale 0 | - * | 0 0 1 | - * - */ -:SVGMatrix SVGMatrix:scale(double scale) -{ - SVGMatrix result; - result.a = a * scale; - result.b = b * scale; - result.c = c * scale; - result.d = d * scale; - result.e = e; - result.f = f; - return result; -} - -/** - * Equivalent to multiplying by: - * | scaleX 0 0 | - * | 0 scaleY 0 | - * | 0 0 1 | - * - */ -SVGMatrix SVGMatrix::scaleNonUniform(double scaleX, - double scaleY) -{ - SVGMatrix result; - result.a = a * scaleX; - result.b = b * scaleX; - result.c = c * scaleY; - result.d = d * scaleY; - result.e = e; - result.f = f; - return result; -} - -/** - * Equivalent to multiplying by: - * | cos(a) -sin(a) 0 | - * | sin(a) cos(a) 0 | - * | 0 0 1 | - * - */ -SVGMatrix SVGMatrix::rotate (double angle) -{ - double sina = sin(angle); - double msina = -sina; - double cosa = cos(angle); - SVGMatrix result; - result.a = a * cosa + c * sina; - result.b = b * cosa + d + sina; - result.c = a * msina + c * cosa; - result.d = b * msina + d * cosa; - result.e = e; - result.f = f; - return result; -} - -/** - * Equivalent to multiplying by: - * | cos(a) -sin(a) 0 | - * | sin(a) cos(a) 0 | - * | 0 0 1 | - * In this case, angle 'a' is computed as the artangent - * of the slope y/x . It is negative if the slope is negative. - */ -SVGMatrix SVGMatrix::rotateFromVector(double x, double y) - throw (SVGException) -{ - double angle = atan(y / x); - if (y < 0.0) - angle = -angle; - SVGMatrix result; - double sina = sin(angle); - double msina = -sina; - double cosa = cos(angle); - result.a = a * cosa + c * sina; - result.b = b * cosa + d + sina; - result.c = a * msina + c * cosa; - result.d = b * msina + d * cosa; - result.e = e; - result.f = f; - return result; -} - -/** - * Equivalent to multiplying by: - * | -1 0 0 | - * | 0 1 0 | - * | 0 0 1 | - * - */ -SVGMatrix SVGMatrix::flipX() -{ - SVGMatrix result; - result.a = -a; - result.b = -b; - result.c = c; - result.d = d; - result.e = e; - result.f = f; - return result; -} - -/** - * Equivalent to multiplying by: - * | 1 0 0 | - * | 0 -1 0 | - * | 0 0 1 | - * - */ -SVGMatrix SVGMatrix::flipY() -{ - SVGMatrix result; - result.a = a; - result.b = b; - result.c = -c; - result.d = -d; - result.e = e; - result.f = f; - return result; -} - -/** - * | 1 tan(a) 0 | - * | 0 1 0 | - * | 0 0 1 | - * - */ -SVGMatrix SVGMatrix::skewX(double angle) -{ - double tana = tan(angle); - SVGMatrix result; - result.a = a; - result.b = b; - result.c = a * tana + c; - result.d = b * tana + d; - result.e = e; - result.f = f; - return result; -} - -/** - * Equivalent to multiplying by: - * | 1 0 0 | - * | tan(a) 1 0 | - * | 0 0 1 | - * - */ -SVGMatrix::SVGMatrix SVGMatrix::skewY(double angle) -{ - double tana = tan(angle); - SVGMatrix result; - result.a = a + c * tana; - result.b = b + d * tana; - result.c = c; - result.d = d; - result.e = e; - result.f = f; - return result; -} - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGMatrix::SVGMatrix() -{ - identity(); -} - -/** - * - */ -SVGMatrix::SVGMatrix(double aArg, double bArg, double cArg, - double dArg, double eArg, double fArg) -{ - a = aArg; b = bArg; c = cArg; - d = dArg; e = eArg; f = fArg; -} - -/** - * Copy constructor - */ -SVGMatrix::SVGMatrix(const SVGMatrix &other) -{ - a = other.a; - b = other.b; - c = other.c; - d = other.d; - e = other.e; - f = other.f; -} - - - -/** - * - */ -SVGMatrix::~SVGMatrix() -{ -} - -/* - * Set to the identity matrix - */ -void SVGMatrix::identity() -{ - a = 1.0; - b = 0.0; - c = 0.0; - d = 1.0; - e = 0.0; - f = 0.0; -} - - -/*######################################################################### -## SVGTransform -#########################################################################*/ - -/** - * - */ -unsigned short SVGTransform::getType() -{ - return type; -} - - -/** - * - */ -SVGMatrix SVGTransform::getMatrix() -{ - return matrix; -} - -/** - * - */ -double SVGTransform::getAngle() -{ - return angle; -} - - -/** - * - */ -void SVGTransform::setMatrix(const SVGMatrix &matrixArg) -{ - type = SVG_TRANSFORM_MATRIX; - matrix = matrixArg; -} - -/** - * - */ -void SVGTransform::setTranslate(double tx, double ty) -{ - type = SVG_TRANSFORM_TRANSLATE; - matrix.setA(1.0); - matrix.setB(0.0); - matrix.setC(0.0); - matrix.setD(1.0); - matrix.setE(tx); - matrix.setF(ty); -} - -/** - * - */ -void SVGTransform::setScale(double sx, double sy) -{ - type = SVG_TRANSFORM_SCALE; - matrix.setA(sx); - matrix.setB(0.0); - matrix.setC(0.0); - matrix.setD(sy); - matrix.setE(0.0); - matrix.setF(0.0); -} - -/** - * - */ -void SVGTransform::setRotate(double angleArg, double cx, double cy) -{ - angle = angleArg; - setTranslate(cx, cy); - type = SVG_TRANSFORM_ROTATE; - matrix.rotate(angle); -} - -/** - * - */ -void SVGTransform::setSkewX(double angleArg) -{ - angle = angleArg; - type = SVG_TRANSFORM_SKEWX; - matrix.identity(); - matrix.skewX(angle); -} - -/** - * - */ -void SVGTransform::setSkewY(double angleArg) -{ - angle = angleArg; - type = SVG_TRANSFORM_SKEWY; - matrix.identity(); - matrix.skewY(angle); -} - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGTransform::SVGTransform() -{ - type = SVG_TRANSFORM_UNKNOWN; - angle = 0.0; -} - -/** - * - */ -SVGTransform::SVGTransform(const SVGTransform &other) -{ - type = other.type; - angle = other.angle; - matrix = other.matrix; -} - -/** - * - */ -~SVGTransform::SVGTransform() -{ -} - - - -/*######################################################################### -## SVGNumber -#########################################################################*/ - -/** - * - */ -double SVGNumber::getValue() -{ - return value; -} - -/** - * - */ -void SVGNumber::setValue(double val) throw (DOMException) -{ - value = val; -} - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGNumber::SVGNumber() -{ - value = 0.0; -} - -/** - * - */ -SVGNumber::SVGNumber(const SVGNumber &other) -{ - value = other.value; -} - -/** - * - */ -SVGNumber::~SVGNumber() -{ -} - - - -/*######################################################################### -## SVGLength -#########################################################################*/ - - -/** - * - */ -unsigned short SVGLength::getUnitType() -{ - return unitType; -} - -/** - * - */ -double SVGLength::getValue() -{ - return value; -} - -/** - * - */ -void SVGLength::setValue(double val) throw (DOMException) -{ - value = val; -} - -/** - * - */ -double SVGLength::getValueInSpecifiedUnits() -{ - double result = 0.0; - //fill this in - return result; -} - -/** - * - */ -void SVGLength::setValueInSpecifiedUnits(double /*val*/) - throw (DOMException) -{ - //fill this in -} - -/** - * - */ -DOMString SVGLength::getValueAsString() -{ - DOMString ret; - char buf[32]; - snprintf(buf, 31, "%f", value); - ret.append(buf); - return ret; -} - -/** - * - */ -void SVGLength::setValueAsString(const DOMString& /*val*/) - throw (DOMException) -{ -} - - -/** - * - */ -void SVGLength::newValueSpecifiedUnits (unsigned short /*unitType*/, double /*val*/) -{ -} - -/** - * - */ -void SVGLength::convertToSpecifiedUnits (unsigned short /*unitType*/) -{ -} - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGLength::SVGLength() -{ - unitType = SVG_LENGTHTYPE_UNKNOWN; - value = 0.0; -} - - -/** - * - */ -SVGLength::SVGLength(const SVGLength &other) -{ - unitType = other.unitType; - value = other.value; -} - -/** - * - */ -SVGLength::~SVGLength() -{ -} - - - - -/*######################################################################### -## SVGAngle -#########################################################################*/ - -/** - * - */ -unsigned short SVGAngle::getUnitType() -{ - return unitType; -} - -/** - * - */ -double SVGAngle::getValue() -{ - return value; -} - -/** - * - */ -void SVGAngle::setValue(double val) throw (DOMException) -{ - value = val; -} - -/** - * - */ -double SVGAngle::getValueInSpecifiedUnits() -{ - double result = 0.0; - //convert here - return result; -} - -/** - * - */ -void SVGAngle::setValueInSpecifiedUnits(double /*val*/) - throw (DOMException) -{ - //do conversion -} - -/** - * - */ -DOMString SVGAngle::getValueAsString() -{ - DOMString result; - char buf[32]; - snprintf(buf, 31, "%f", value); - result.append(buf); - return result; -} - -/** - * - */ -void SVGAngle::setValueAsString(const DOMString &/*val*/) - throw (DOMException) -{ - //convert here -} - - -/** - * - */ -void SVGAngle::newValueSpecifiedUnits (unsigned short /*unitType*/, - double /*valueInSpecifiedUnits*/) -{ - //convert here -} - -/** - * - */ -void SVGAngle::convertToSpecifiedUnits (unsigned short /*unitType*/) -{ - //convert here -} - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGAngle::SVGAngle() -{ - unitType = SVG_ANGLETYPE_UNKNOWN; - value = 0.0; -} - -/** - * - */ -SVGAngle::SVGAngle(const SVGAngle &other) -{ - unitType = other.unitType; - value = other.value; -} - -/** - * - */ -SVGAngle::~SVGAngle() -{ -} - - - - -/*######################################################################### -## SVGICCColor -#########################################################################*/ - - -/** - * - */ -DOMString SVGICCColor::getColorProfile() -{ - return colorProfile; -} - -/** - * - */ -void SVGICCColor::setColorProfile(const DOMString &val) throw (DOMException) -{ - colorProfile = val; -} - -/** - * - */ -SVGNumberList &SVGICCColor::getColors() -{ - return colors; -} - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGICCColor::SVGICCColor() -{ -} - -/** - * - */ -SVGICCColor::SVGICCColor(const SVGICCColor &other) -{ - colorProfile = other.colorProfile; - colors = other.colors; -} - -/** - * - */ -SVGICCColor::~SVGICCColor() -{ -} - - - -/*######################################################################### -## SVGColor -#########################################################################*/ - - - -/** - * - */ -unsigned short SVGColor::getColorType() -{ - return colorType; -} - -/** - * - */ -css::RGBColor SVGColor::getRgbColor() -{ - css::RGBColor col; - return col; -} - -/** - * - */ -SVGICCColor SVGColor::getIccColor() -{ - SVGICCColor col; - return col; -} - - -/** - * - */ -void SVGColor::setRGBColor(const DOMString& /*rgbColor*/) - throw (SVGException) -{ -} - -/** - * - */ -void SVGColor::setRGBColorICCColor(const DOMString& /*rgbColor*/, - const DOMString& /*iccColor*/) - throw (SVGException) -{ -} - -/** - * - */ -void SVGColor::setColor (unsigned short /*colorType*/, - const DOMString& /*rgbColor*/, - const DOMString& /*iccColor*/) - throw (SVGException) -{ -} - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGColor::SVGColor() -{ - colorType = SVG_COLORTYPE_UNKNOWN; -} - -/** - * - */ -SVGColor::SVGColor(const SVGColor &other) : css::CSSValue(other) -{ - colorType = other.colorType; -} - -/** - * - */ -SVGColor::~SVGColor() -{ -} - - - -/*######################################################################### -## SVGRect -#########################################################################*/ - - -/** - * - */ -double SVGRect::getX() -{ - return x; -} - -/** - * - */ -void SVGRect::setX(double val) throw (DOMException) -{ - x = val; -} - -/** - * - */ -double SVGRect::getY() -{ - return y; -} - -/** - * - */ -void SVGRect::setY(double val) throw (DOMException) -{ - y = val; -} - -/** - * - */ -double SVGRect::getWidth() -{ - return width; -} - -/** - * - */ -void SVGRect::setWidth(double val) throw (DOMException) -{ - width = val; -} - -/** - * - */ -double SVGRect::getHeight() -{ - return height; -} - -/** - * - */ -void SVGRect::setHeight(double val) throw (DOMException) -{ - height = val; -} - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGRect::SVGRect() -{ - x = y = width = height = 0.0; -} - -/** - * - */ -SVGRect::SVGRect(const SVGRect &other) -{ - x = other.x; - y = other.y; - width = other.width; - height = other.height; -} - -/** - * - */ -SVGRect::~SVGRect() -{ -} - - - -/*######################################################################### -## SVGPoint -#########################################################################*/ - - -/** - * - */ -double SVGPoint::getX() -{ - return x; -} - -/** - * - */ -void SVGPoint::setX(double val) throw (DOMException) -{ - x = val; -} - -/** - * - */ -double SVGPoint::getY() -{ - return y; -} - -/** - * - */ -void SVGPoint::setY(double val) throw (DOMException) -{ - y = val; -} - -/** - * - */ -SVGPoint SVGPoint::matrixTransform(const SVGMatrix &/*matrix*/) -{ - SVGPoint point; - return point; -} - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGPoint::SVGPoint() -{ - x = y = 0; -} - -/** - * - */ -SVGPoint::SVGPoint(const SVGPoint &other) -{ - x = other.x; - y = other.y; -} - -/** - * - */ -SVGPoint::~SVGPoint() -{ -} - - -/*######################################################################### -## SVGUnitTypes -#########################################################################*/ - -/** - * - */ -SVGUnitTypes::SVGUnitTypes() -{ -} - - - -/** - * - */ -SVGUnitTypes::~SVGUnitTypes() -{ -} - - -/*######################################################################### -## SVGStylable -#########################################################################*/ - - -/** - * - */ -SVGAnimatedString SVGStylable::getClassName() -{ - return className; -} - -/** - * - */ -css::CSSStyleDeclaration SVGStylable::getStyle() -{ - return style; -} - - -/** - * - */ -css::CSSValue SVGStylable::getPresentationAttribute(const DOMString& /*name*/) -{ - css::CSSValue val; - //perform a lookup - return val; -} - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGStylable::SVGStylable() -{ -} - -/** - * - */ -SVGStylable::SVGStylable(const SVGStylable &other) -{ - className = other.className; - style = other.style; -} - -/** - * - */ -SVGStylable::~SVGStylable() -{ -} - - - - -/*######################################################################### -## SVGLocatable -#########################################################################*/ - - -/** - * - */ -SVGElementPtr SVGLocatable::getNearestViewportElement() -{ - SVGElementPtr result; - return result; -} - -/** - * - */ -SVGElementPtr SVGLocatable::getFarthestViewportElement() -{ - SVGElementPtr result; - return result; -} - -/** - * - */ -SVGRect SVGLocatable::getBBox () -{ - return bbox; -} - -/** - * - */ -SVGMatrix SVGLocatable::getCTM () -{ - return ctm; -} - -/** - * - */ -SVGMatrix SVGLocatable::getScreenCTM () -{ - return screenCtm; -} - -/** - * - */ -SVGMatrix SVGLocatable::getTransformToElement (const SVGElement &/*element*/) - throw (SVGException) -{ - SVGMatrix result; - //do calculations - return result; -} - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGLocatable::SVGLocatable() -{ -} - -/** - * - */ -SVGLocatable::SVGLocatable(const SVGLocatable &/*other*/) -{ -} - -/** - * - */ -SVGLocatable::~SVGLocatable() -{ -} - - -/*######################################################################### -## SVGTransformable -#########################################################################*/ - - -/** - * - */ -SVGAnimatedTransformList &SVGTransformable::getTransform() -{ - return transforms; -} - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGTransformable::SVGTransformable() {} - -/** - * - */ -SVGTransformable::SVGTransformable(const SVGTransformable &other) : SVGLocatable(other) -{ - transforms = other.transforms; -} - -/** - * - */ -SVGTransformable::~SVGTransformable() -{ -} - - - - - - - -/*######################################################################### -## SVGTests -#########################################################################*/ - - -/** - * - */ -SVGStringList &SVGTests::getRequiredFeatures() -{ - return requiredFeatures; -} - -/** - * - */ -SVGStringList &SVGTests::getRequiredExtensions() -{ - return requiredExtensions; -} - -/** - * - */ -SVGStringList &SVGTests::getSystemLanguage() -{ - return systemLanguage; -} - - -/** - * - */ -bool SVGTests::hasExtension (const DOMString& /*extension*/) -{ - return false; -} - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGTests::SVGTests() -{ -} - -/** - * - */ -SVGTests::SVGTests(const SVGTests &other) -{ - requiredFeatures = other.requiredFeatures; - requiredExtensions = other.requiredExtensions; - systemLanguage = other.systemLanguage; -} - -/** - * - */ -SVGTests::~SVGTests() -{ -} - - - -/*######################################################################### -## SVGLangSpace -#########################################################################*/ - - -/** - * - */ -DOMString SVGLangSpace::getXmllang() -{ - return xmlLang; -} - -/** - * - */ -void SVGLangSpace::setXmllang(const DOMString &val) throw (DOMException) -{ - xmlLang = val; -} - -/** - * - */ -DOMString SVGLangSpace::getXmlspace() -{ - return xmlSpace; -} - -/** - * - */ -void SVGLangSpace::setXmlspace(const DOMString &val) - throw (DOMException) -{ - xmlSpace = val; -} - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGLangSpace::SVGLangSpace() -{ -} - -/** - * - */ -SVGLangSpace::SVGLangSpace(const SVGLangSpace &other) -{ - xmlLang = other.xmlLang; - xmlSpace = other.xmlSpace; -} - -/** - * - */ -SVGLangSpace::~SVGLangSpace() -{ -} - - - -/*######################################################################### -## SVGExternalResourcesRequired -#########################################################################*/ - -/** - * - */ -SVGAnimatedBoolean SVGExternalResourcesRequired::getExternalResourcesRequired() -{ - return required; -} - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGExternalResourcesRequired::SVGExternalResourcesRequired() -{ -} - - -/** - * - */ -SVGExternalResourcesRequired::SVGExternalResourcesRequired( - const SVGExternalResourcesRequired &other) -{ - required = other.required; -} - -/** - * - */ -SVGExternalResourcesRequired::~SVGExternalResourcesRequired() {} - - -/*######################################################################### -## SVGPreserveAspectRatio -#########################################################################*/ - -/** - * - */ -unsigned short SVGPreserveAspectRatio::getAlign() -{ - return align; -} - -/** - * - */ -void SVGPreserveAspectRatio::setAlign(unsigned short val) throw (DOMException) -{ - align = val; -} - -/** - * - */ -unsigned short SVGPreserveAspectRatio::getMeetOrSlice() -{ - return meetOrSlice; -} - -/** - * - */ -void SVGPreserveAspectRatio::setMeetOrSlice(unsigned short val) throw (DOMException) -{ - meetOrSlice = val; -} - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGPreserveAspectRatio::SVGPreserveAspectRatio() -{ - align = SVG_PRESERVEASPECTRATIO_UNKNOWN; - meetOrSlice = SVG_MEETORSLICE_UNKNOWN; -} - -/** - * - */ -SVGPreserveAspectRatio::SVGPreserveAspectRatio(const SVGPreserveAspectRatio &other) -{ - align = other.align; - meetOrSlice = other.meetOrSlice; -} - -/** - * - */ -SVGPreserveAspectRatio::~SVGPreserveAspectRatio() -{ -} - - - -/*######################################################################### -## SVGFitToViewBox -#########################################################################*/ - - -/** - * - */ -SVGAnimatedRect SVGFitToViewBox::getViewBox() -{ - return viewBox; -} - -/** - * - */ -SVGAnimatedPreserveAspectRatio SVGFitToViewBox::getPreserveAspectRatio() -{ - return preserveAspectRatio; -} - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGFitToViewBox::SVGFitToViewBox() -{ -} - -/** - * - */ - -SVGFitToViewBox::SVGFitToViewBox(const SVGFitToViewBox &other) -{ - viewBox = other.viewBox; - preserveAspectRatio = other.preserveAspectRatio; -} - -/** - * - */ -SVGFitToViewBox::~SVGFitToViewBox() -{ -} - -/*######################################################################### -## SVGZoomAndPan -#########################################################################*/ - -/** - * - */ -unsigned short SVGZoomAndPan::getZoomAndPan() -{ - return zoomAndPan; -} - -/** - * - */ -void SVGZoomAndPan::setZoomAndPan(unsigned short val) throw (DOMException) -{ - zoomAndPan = val; -} - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGZoomAndPan::SVGZoomAndPan() -{ - zoomAndPan = SVG_ZOOMANDPAN_UNKNOWN; -} - -/** - * - */ -SVGZoomAndPan::SVGZoomAndPan(const SVGZoomAndPan &other) -{ - zoomAndPan = other.zoomAndPan; -} - -/** - * - */ -SVGZoomAndPan::~SVGZoomAndPan() -{ -} - - -/*######################################################################### -## SVGViewSpec -#########################################################################*/ - -/** - * - */ -SVGTransformList SVGViewSpec::getTransform() -{ - return transform; -} - -/** - * - */ -SVGElementPtr SVGViewSpec::getViewTarget() -{ - return viewTarget; -} - -/** - * - */ -DOMString SVGViewSpec::getViewBoxString() -{ - DOMString ret; - return ret; -} - -/** - * - */ -DOMString SVGViewSpec::getPreserveAspectRatioString() -{ - DOMString ret; - return ret; -} - -/** - * - */ -DOMString SVGViewSpec::getTransformString() -{ - DOMString ret; - return ret; -} - -/** - * - */ -DOMString SVGViewSpec::getViewTargetString() -{ - DOMString ret; - return ret; -} - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGViewSpec::SVGViewSpec() -{ - viewTarget = NULL; -} - -/** - * - */ -SVGViewSpec::SVGViewSpec(const SVGViewSpec &other) : SVGZoomAndPan(other), SVGFitToViewBox(other) -{ - viewTarget = other.viewTarget; - transform = other.transform; -} - -/** - * - */ -SVGViewSpec::~SVGViewSpec() -{ -} - - - -/*######################################################################### -## SVGURIReference -#########################################################################*/ - - -/** - * - */ -SVGAnimatedString SVGURIReference::getHref() -{ - return href; -} - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGURIReference::SVGURIReference() -{ -} - -/** - * - */ -SVGURIReference::SVGURIReference(const SVGURIReference &other) -{ - href = other.href; -} - -/** - * - */ -SVGURIReference::~SVGURIReference() -{ -} - - - -/*######################################################################### -## SVGCSSRule -#########################################################################*/ - - - - -/*######################################################################### -## SVGRenderingIntent -#########################################################################*/ - - - - - -/*######################################################################### -## SVGPathSeg -#########################################################################*/ - -static const char *pathSegLetters[] = -{ - '@', // PATHSEG_UNKNOWN, - 'z', // PATHSEG_CLOSEPATH - 'M', // PATHSEG_MOVETO_ABS - 'm', // PATHSEG_MOVETO_REL, - 'L', // PATHSEG_LINETO_ABS - 'l', // PATHSEG_LINETO_REL - 'C', // PATHSEG_CURVETO_CUBIC_ABS - 'c', // PATHSEG_CURVETO_CUBIC_REL - 'Q', // PATHSEG_CURVETO_QUADRATIC_ABS, - 'q', // PATHSEG_CURVETO_QUADRATIC_REL - 'A', // PATHSEG_ARC_ABS - 'a', // PATHSEG_ARC_REL, - 'H', // PATHSEG_LINETO_HORIZONTAL_ABS, - 'h', // PATHSEG_LINETO_HORIZONTAL_REL - 'V', // PATHSEG_LINETO_VERTICAL_ABS - 'v', // PATHSEG_LINETO_VERTICAL_REL - 'S', // PATHSEG_CURVETO_CUBIC_SMOOTH_ABS - 's', // PATHSEG_CURVETO_CUBIC_SMOOTH_REL - 'T', // PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS - 't' // PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL -}; - - - -/** - * - */ -unsigned short getPathSegType() -{ - return type; -} - -/** - * - */ -DOMString getPathSegTypeAsLetter() -{ - int typ = type; - if (typ<0 || typ>PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL) - typ = PATHSEG_UNKNOWN; - char const ch = pathSegLetters[typ]; - DOMString letter = ch; - return letter; -} - - -/** - * - */ -unsigned short getPathSegType() -{ - return type; -} - -/** - * - */ -DOMString getPathSegTypeAsLetter() -{ - int typ = type; - if (typ<0 || typ>PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL) - typ = PATHSEG_UNKNOWN; - char const *ch = pathSegLetters[typ]; - DOMString letter = ch; - return letter; -} - -/** - * From the various subclasses - */ - -/** - * - */ -double SVGPathSeg::getX() -{ - return x; -} - -/** - * - */ -void SVGPathSeg::setX(double val) throw (DOMException) -{ - x = val; -} - -/** - * - */ -double SVGPathSeg::getX1() -{ - return x; -} - -/** - * - */ -void SVGPathSeg::setX1(double val) throw (DOMException) -{ - x = val; -} - -/** - * - */ -double SVGPathSeg::getX2() -{ - return x; -} - -/** - * - */ -void SVGPathSeg::setX2(double val) throw (DOMException) -{ - x = val; -} - -/** - * - */ -double SVGPathSeg::getY() -{ - return y; -} - -/** - * - */ -void SVGPathSeg::setY(double val) throw (DOMException) -{ - y = val; -} - -/** - * - */ -double SVGPathSeg::getY1() -{ - return y; -} - -/** - * - */ -void SVGPathSeg::setY1(double val) throw (DOMException) -{ - y = val; -} - -/** - * - */ -double SVGPathSeg::getY2() -{ - return y; -} - -/** - * - */ -void SVGPathSeg::setY2(double val) throw (DOMException) -{ - y = val; -} - -/** - * - */ -double SVGPathSeg::getR1() -{ - return r1; -} - -/** - * - */ -void SVGPathSeg::setR1(double val) throw (DOMException) -{ - r1 = val; -} - -/** - * - */ -double SVGPathSeg::getR2() -{ - return r2; -} - -/** - * - */ -void SVGPathSeg::setR2(double val) throw (DOMException) -{ - r2 = val; -} - -/** - * - */ -double SVGPathSeg::getAngle() -{ - return angle; -} - -/** - * - */ -void SVGPathSeg::setAngle(double val) throw (DOMException) -{ - angle = val; -} - -/** - * - */ -bool SVGPathSeg::getLargeArcFlag() -{ - return largeArcFlag; -} - -/** - * - */ -void SVGPathSeg::setLargeArcFlag(bool val) throw (DOMException) -{ - largeArcFlag = val; -} - -/** - * - */ -bool SVGPathSeg::getSweepFlag() -{ - return sweepFlag; -} - -/** - * - */ -void SVGPathSeg::setSweepFlag(bool val) throw (DOMException) -{ - sweepFlag = val; -} - - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGPathSeg::SVGPathSeg() -{ - init(); -} - -/** - * - */ -SVGPathSeg::SVGPathSeg(const SVGPathSeg &other) -{ - assign(other); -} - -/** - * - */ -SVGPathSeg &operator=(const SVGPathSeg &other) -{ - assign(other); - return *this; -} - -/** - * - */ -void SVGPathSeg::init() -{ - type = PATHSEG_UNKNOWN; - x = y = x1 = y1 = x2 = y2 = 0.0; - r1 = r2 = 0.0; - angle = 0.0; - largeArcFlag = false; - sweepFlag = false; -} - -/** - * - */ -void SVGPathSeg::assign(const SVGPathSeg &other) -{ - type = other.type; - x = other.x; - y = other.y; - x1 = other.x1; - y1 = other.y1; - x2 = other.x2; - y2 = other.y2; - r1 = other.r1; - r2 = other.r2; - angle = other.angle; - largeArcFlag = other.largeArcFlag; - sweepFlag = other.sweepFlag; -} - - -/** - * - */ -SVGPathSeg::~SVGPathSeg() -{ -} - - - - -/*######################################################################### -## SVGPaint -#########################################################################*/ - - -/** - * - */ -unsigned short SVGPaint::getPaintType() -{ return paintType; } - -/** - * - */ -DOMString SVGPaint::getUri() -{ return uri; } - -/** - * - */ -void SVGPaint::setUri(const DOMString& uriArg) -{ - uri = uriArg; -} - -/** - * - */ -void SVGPaint::setPaint (unsigned short paintTypeArg, - const DOMString& uriArg, - const DOMString& /*rgbColor*/, - const DOMString& /*iccColor*/) - throw (SVGException) -{ - paintType = paintTypeArg; - uri = uriArg; - //do something with rgbColor - //do something with iccColor; -} - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGPaint::SVGPaint() -{ - uri = ""; - paintType = SVG_PAINTTYPE_UNKNOWN; -} - -/** - * - */ -SVGPaint::SVGPaint(const SVGPaint &other) : css::CSSValue(other), SVGColor(other) -{ - uri = ""; - paintType = SVG_PAINTTYPE_UNKNOWN; -} - -/** - * - */ -SVGPaint::~SVGPaint() {} - - -/*######################################################################### -## SVGColorProfileRule -#########################################################################*/ - - -/** - * - */ -DOMString SVGColorProfileRule::getSrc() -{ return src; } - -/** - * - */ -void SVGColorProfileRule::setSrc(const DOMString &val) throw (DOMException) -{ src = val; } - -/** - * - */ -DOMString SVGColorProfileRule::getName() -{ return name; } - -/** - * - */ -void SVGColorProfileRule::setName(const DOMString &val) throw (DOMException) -{ name = val; } - -/** - * - */ -unsigned short SVGColorProfileRule::getRenderingIntent() -{ return renderingIntent; } - -/** - * - */ -void SVGColorProfileRule::setRenderingIntent(unsigned short val) throw (DOMException) -{ renderingIntent = val; } - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGColorProfileRule::SVGColorProfileRule() -{ -} - -/** - * - */ -SVGColorProfileRule::SVGColorProfileRule(const SVGColorProfileRule &other) - : SVGCSSRule(other), SVGRenderingIntent(other) -{ - renderingIntent = other.renderingIntent; - src = other.src; - name = other.name; -} - -/** - * - */ -SVGColorProfileRule::~SVGColorProfileRule() -{ -} - - -/*######################################################################### -## SVGFilterPrimitiveStandardAttributes -#########################################################################*/ - -/** - * - */ -SVGAnimatedLength SVGFilterPrimitiveStandardAttributes::getX() -{ return x; } - -/** - * - */ -SVGAnimatedLength SVGFilterPrimitiveStandardAttributes::getY() -{ return y; } - -/** - * - */ -SVGAnimatedLength SVGFilterPrimitiveStandardAttributes::getWidth() -{ return width; } - -/** - * - */ -SVGAnimatedLength SVGFilterPrimitiveStandardAttributes::getHeight() -{ return height; } - -/** - * - */ -SVGAnimatedString SVGFilterPrimitiveStandardAttributes::getResult() -{ return result; } - - - -//################## -//# Non-API methods -//################## - - -/** - * - */ -SVGFilterPrimitiveStandardAttributes::SVGFilterPrimitiveStandardAttributes() -{ -} - -/** - * - */ -SVGFilterPrimitiveStandardAttributes::SVGFilterPrimitiveStandardAttributes( - const SVGFilterPrimitiveStandardAttributes &other) - : SVGStylable(other) -{ - x = other.x; - y = other.y; - width = other.width; - height = other.height; - result = other.result; -} - -/** - * - */ -SVGFilterPrimitiveStandardAttributes::~SVGFilterPrimitiveStandardAttributes() -{ -} - - -/*######################################################################### -## SVGEvent -#########################################################################*/ - -/** - * - */ -SVGEvent:SVGEvent() -{ -} - -/** - * - */ -SVGEvent:SVGEvent(const SVGEvent &other) : events::Event(other) -{ -} - -/** - * - */ -SVGEvent::~SVGEvent() -{ -} - - -/*######################################################################### -## SVGZoomEvent -#########################################################################*/ - -/** - * - */ -SVGRect SVGZoomEvent::getZoomRectScreen() -{ - return zoomRectScreen; -} - -/** - * - */ -double SVGZoomEvent::getPreviousScale() -{ - return previousScale; -} - -/** - * - */ -SVGPoint SVGZoomEvent::getPreviousTranslate() -{ - return previousTranslate; -} - -/** - * - */ -double SVGZoomEvent::getNewScale() -{ - return newScale; -} - -/** - * - */ -SVGPoint SVGZoomEvent::getNewTranslate() -{ - return newTranslate; -} - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGZoomEvent::SVGZoomEvent() -{ -} - -/** - * - */ -SVGZoomEvent::SVGZoomEvent(const SVGZoomEvent &other) : - events::Event(other), events::UIEvent(other) -{ - zoomRectScreen = other.zoomRectScreen; - previousScale = other.previousScale; - previousTranslate = other.previousTranslate; - newScale = other.newScale; - newTranslate = other.newTranslate; -} - -/** - * - */ -SVGZoomEvent::~SVGZoomEvent() -{ -} - - -/*######################################################################### -## SVGElementInstance -#########################################################################*/ - - -/** - * - */ -SVGElementPtr SVGElementInstance::getCorrespondingElement() -{ - return correspondingElement; -} - -/** - * - */ -SVGUseElementPtr SVGElementInstance::getCorrespondingUseElement() -{ - return correspondingUseElement; -} - -/** - * - */ -SVGElementInstance SVGElementInstance::getParentNode() -{ - SVGElementInstance ret; - return ret; -} - -/** - * Since we are using stack types and this is a circular definition, - * we will instead implement this as a global function below: - * SVGElementInstanceList getChildNodes(const SVGElementInstance instance); - */ -//SVGElementInstanceList getChildNodes(); - -/** - * - */ -SVGElementInstance SVGElementInstance::getFirstChild() -{ - SVGElementInstance ret; - return ret; -} - -/** - * - */ -SVGElementInstance SVGElementInstance::getLastChild() -{ - SVGElementInstance ret; - return ret; -} - -/** - * - */ -SVGElementInstance SVGElementInstance::getPreviousSibling() -{ - SVGElementInstance ret; - return ret; -} - -/** - * - */ -SVGElementInstance SVGElementInstance::getNextSibling() -{ - SVGElementInstance ret; - return ret; -} - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGElementInstance::SVGElementInstance() -{ -} - -/** - * - */ -SVGElementInstance::SVGElementInstance(const SVGElementInstance &other) - : events::EventTarget(other) -{ -} - -/** - * - */ -SVGElementInstance::~SVGElementInstance() -{ -} - - -/*######################################################################### -## SVGElementInstanceList -#########################################################################*/ - -/** - * - */ -unsigned long SVGElementInstanceList::getLength() -{ return items.size(); } - -/** - * - */ -SVGElementInstance SVGElementInstanceList::item(unsigned long index) -{ - if (index >= items.size()) - { - SVGElementInstance ret; - return ret; - } - return items[index]; -} - -/** - * This static method replaces the circular definition of: - * SVGElementInstanceList SVGElementInstance::getChildNodes() - * - */ -static SVGElementInstanceList SVGElementInstanceList::getChildNodes(const SVGElementInstance &/*instance*/) -{ - SVGElementInstanceList list; - return list; -} - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGElementInstanceList::SVGElementInstanceList() -{ -} - -/** - * - */ -SVGElementInstanceList::SVGElementInstanceList(const SVGElementInstanceList &other) -{ - items = other.items; -} - -/** - * - */ -SVGElementInstanceList::~SVGElementInstanceList() -{ -} - - - - -/*######################################################################### -## SVGValue -#########################################################################*/ - -/** - * Constructor - */ -SVGValue() -{ - init(); -} - -/** - * Copy constructor - */ -SVGValue(const SVGValue &other) -{ - assign(other); -} - -/** - * Assignment - */ -SVGValue &operator=(const SVGValue &other) -{ - assign(other); - return *this; -} - -/** - * - */ -~SVGValue() -{ -} - -//########################### -// TYPES -//########################### - -/** - * Angle - */ -SVGValue::SVGValue(const SVGAngle &v) -{ - type = SVG_ANGLE; - angleval = v; -} - -SVGAngle SVGValue::angleValue() -{ - return algleval; -} - -/** - * Boolean - */ -SVGValue::SVGValue(bool v) -{ - type = SVG_BOOLEAN; - bval = v; -} - -bool SVGValue::booleanValue() -{ - return bval; -} - - -/** - * Enumeration - */ -SVGValue::SVGValue(short v) -{ - type = SVG_ENUMERATION; - eval = v; -} - -short SVGValue::enumerationValue() -{ - return eval; -} - -/** - * Integer - */ -SVGValue::SVGValue(long v) -{ - type = SVG_INTEGER; - ival = v; -} - -long SVGValue::integerValue() -{ - return ival; -} - -/** - * Length - */ -SVGValue::SVGValue(const SVGLength &v) -{ - type = SVG_LENGTH; - lengthval = v; -} - -SVGLength SVGValue::lengthValue() -{ - return lengthval; -} - -/** - * Number - */ -SVGValue::SVGValue(double v) -{ - type = SVG_NUMBER; - dval = v; -} - -double SVGValue::numberValue() -{ - return dval; -} - -/** - * Points - */ -SVGValue::SVGValue(const SVGPointList &v) -{ - type = SVG_POINTS; - plistval = v; -} - -SVGPointList SVGValue::pointListValue() -{ - return plistval; -} - - -/** - * PreserveAspectRatio - */ -SVGValue::SVGValue(const SVGPreserveAspectRatio &v) -{ - type = SVG_PRESERVE_ASPECT_RATIO; - parval = v; -} - -SVGPreserveAspectRatio SVGValue::preserveAspectRatioValue() -{ - return parval; -} - -/** - * Rect - */ -SVGValue::SVGValue(const SVGRect &v) -{ - type = SVG_RECT; - rectval = v; -} - -SVGRect SVGValue::rectValue() -{ - return rectval; -} - -/** - * String - */ -SVGValue::SVGValue(const DOMString &v) -{ - type = SVG_STRING; - sval = v; -} - -DOMString SVGValue::stringValue() -{ - return sval; -} - - -void SVGValue::init() -{ - type = SVG_NUMBER; - bval = false; - eval = 0; - ival = 0; - dval = 0.0; -} - -void SVGValue::assign(const SVGValue &other) -{ - type = other.type; - angleval = other.angleval; - bval = other.bval; - eval = other.eval; - ival = other.ival; - lengthval = other.lengthval; - dval = other.dval; - parval = other.parval; - rval = other.rval; - sval = other.sval; -} - - -/*######################################################################### -## SVGTransformList -#########################################################################*/ - - -/*######################################################################### -## SVGStringList -#########################################################################*/ - - -/*######################################################################### -## SVGNumberList -#########################################################################*/ - - -/*######################################################################### -## SVGLengthList -#########################################################################*/ - - -/*######################################################################### -## SVGPointList -#########################################################################*/ - -/*######################################################################### -## SVGPathSegList -#########################################################################*/ - -/*######################################################################### -## SVGValueList -#########################################################################*/ - - -/** - * - */ -unsigned long SVGValueList::getNumberOfItems() -{ - return items.size(); -} - -/** - * - */ -void SVGValueList::clear() throw (DOMException) -{ - items.clear(); -} - -/** - * - */ -SVGValue SVGValueList::initialize(const SVGValue& newItem) - throw (DOMException, SVGException) -{ - items.clear(); - items.push_back(newItem); - return newItem; -} - -/** - * - */ -SVGValue SVGValueList::getItem(unsigned long index) throw (DOMException) -{ - if (index >= items.size()) - return ""; - return items[index]; -} - -/** - * - */ -SVGValue SVGValueList::insertItemBefore(const SVGValue& newItem, - unsigned long index) - throw (DOMException, SVGException) -{ - if (index>=items.size()) - { - items.push_back(newItem); - } - else - { - std::vector::iterator iter = items.begin() + index; - items.insert(iter, newItem); - } - return newItem; -} - -/** - * - */ -SVGValue SVGValueList::replaceItem (const SVGValue& newItem, - unsigned long index) - throw (DOMException, SVGException) -{ - if (index>=items.size()) - return ""; - std::vector::iterator iter = items.begin() + index; - *iter = newItem; - return newItem; -} - -/** - * - */ -SVGValue SVGValueList::removeItem (unsigned long index) - throw (DOMException) -{ - if (index>=items.size()) - return ""; - std::vector::iterator iter = items.begin() + index; - SVGValue oldval = *iter; - items.erase(iter); - return oldval; -} - -/** - * - */ -SVGValue SVGValueList::appendItem (const SVGValue& newItem) - throw (DOMException, SVGException) -{ - items.push_back(newItem); - return newItem; -} - - -/** - * Matrix - */ -SVGValue SVGValueList::createSVGTransformFromMatrix(const SVGValue &matrix) -{ -} - -/** - * Matrix - */ -SVGValue SVGValueList::consolidate() -{ -} - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGValueList::SVGValueList() -{ -} - -/** - * - */ -SVGValueList::SVGValueList(const SVGValueList &other) -{ - items = other.items; -} - -/** - * - */ -SVGValueList::~SVGValueList() -{ -} - - - - - -/*######################################################################### -## SVGAnimatedValue -#########################################################################*/ - - - - -/** - * - */ -SVGValue &SVGAnimatedValue::getBaseVal() -{ - return baseVal; -} - -/** - * - */ -void SVGAnimatedValue::setBaseVal(const SVGValue &val) throw (DOMException) -{ - baseVal = val; -} - -/** - * - */ -SVGValue &SVGAnimatedValue::getAnimVal() -{ - return animVal; -} - - -/** - * - */ -SVGAnimatedValue::SVGAnimatedValue() -{ - init(); -} - - -/** - * - */ -SVGAnimatedValue::SVGAnimatedValue(const SVGValue &v) -{ - init(); - baseVal = v; -} - - -/** - * - */ -SVGAnimatedValue::SVGAnimatedValue(const SVGValue &bv, const SVGValue &av) -{ - init(); - baseVal = bv; - animVal = av; -} - - -/** - * - */ -SVGAnimatedValue::SVGAnimatedValue(const SVGAnimatedValue &other) -{ - assign(other); -} - - -/** - * - */ -SVGAnimatedValue &SVGAnimatedValue::operator=(const SVGAnimatedValue &other) -{ - assign(other); - return *this; -} - - -/** - * - */ -SVGAnimatedValue &SVGAnimatedValue::operator=(const SVGValue &bv) -{ - init(); - baseVal = bv; -} - - -/** - * - */ -SVGAnimatedValue::~SVGAnimatedValue() -{ -} - - - -void SVGAnimatedValue::init() -{ -} - - -void SVGAnimatedValue::assign(const SVGAnimatedValue &other) -{ - baseVal = other.baseVal; - animVal = other.animVal; -} - - - - - - - - - - - - - - - - - - - - - -//######################################################################## -//######################################################################## -//######################################################################## -//# D O M -//######################################################################## -//######################################################################## -//######################################################################## - - - - - - - -/*######################################################################### -## SVGElement -#########################################################################*/ - - -//#################################################################### -//# BASE METHODS FOR SVGElement -//#################################################################### - -/** - * Get the value of the id attribute on the given element. - */ -DOMString getId() -{ -} - -/** - * Set the value of the id attribute on the given element. - */ -void setId(const DOMString &val) throw (DOMException) -{ -} - - -/** - * Corresponds to attribute xml:base on the given element. - */ -DOMString getXmlBase() -{ -} - - -/** - * Corresponds to attribute xml:base on the given element. - */ -void setXmlBase(const DOMString &val) throw (DOMException) -{ -} - -/** - * The nearest ancestor 'svg' element. Null if the given element is the - * outermost 'svg' element. - */ -SVGElementPtr getOwnerSVGElement() -{ -} - -/** - * The element which established the current viewport. Often, the nearest - * ancestor 'svg' element. Null if the given element is the outermost 'svg' - * element. - */ -SVGElementPtr getViewportElement() -{ -} - - -//#################################################################### -//#################################################################### -//# I N T E R F A C E S -//#################################################################### -//#################################################################### - -//#################################################################### -//# SVGAngle -//#################################################################### - -/** - * - */ -unsigned short getUnitType() -{ -} - -/** - * - */ -double getValue() -{ -} - -/** - * - */ -void setValue(double val) throw (DOMException) -{ -} - -/** - * - */ -double getValueInSpecifiedUnits() -{ -} - -/** - * - */ -void setValueInSpecifiedUnits(double /*val*/) throw (DOMException) -{ -} - -/** - * - */ -DOMString getValueAsString() -{ -} - -/** - * - */ -void setValueAsString(const DOMString &/*val*/) throw (DOMException) -{ -} - - -/** - * - */ -void newValueSpecifiedUnits(unsigned short /*unitType*/, - double /*valueInSpecifiedUnits*/) -{ -} - -/** - * - */ -void convertToSpecifiedUnits(unsigned short /*unitType*/) -{ -} - -//#################################################################### -//## The following animated types are rolled up into a single -//## SVGAnimatedValue interface -//#################################################################### - -//#################################################################### -//## SVGAnimatedAngle -//#################################################################### - -//#################################################################### -//## SVGAnimatedBoolean -//#################################################################### - -//#################################################################### -//## SVGAnimatedEnumeration -//#################################################################### - -//#################################################################### -//## SVGAnimatedInteger -//#################################################################### - -//#################################################################### -//## SVGAnimatedLength -//#################################################################### - -//#################################################################### -//## SVGAnimatedLengthList -//#################################################################### - -//#################################################################### -//## SVGAnimatedNumber -//#################################################################### - -//#################################################################### -//## SVGAnimatedNumberList -//#################################################################### - -//#################################################################### -//## SVGAnimatedPathData -//#################################################################### - -//#################################################################### -//## SVGAnimatedPoints -//#################################################################### - -//#################################################################### -//## SVGAnimatedPreserveAspectRatio -//#################################################################### - -//#################################################################### -//## SVGAnimatedRect -//#################################################################### - -//#################################################################### -//## SVGAnimatedString -//#################################################################### - -//#################################################################### -//## SVGAnimatedTransformList -//#################################################################### - -//#################################################################### -//# SVGAnimatedValue -//#################################################################### - -/** - * - */ -SVGValue &getBaseVal() -{ - return baseVal(); -} - -/** - * - */ -void setBaseVal(const SVGValue &val) throw (DOMException) -{ - baseVal = val; -} - -/** - * - */ -SVGValue &getAnimVal() -{ - return animVal; -} - - - -//#################################################################### -//# SVGColor -//#################################################################### - -/** - * From CSSValue - * A code defining the type of the value as defined above. - */ -unsigned short getCssValueType() -{ -} - -/** - * From CSSValue - * A string representation of the current value. - */ -DOMString getCssText() -{ -} - -/** - * From CSSValue - * A string representation of the current value. - * Note that setting implies parsing. - */ -void setCssText(const DOMString &val) throw (dom::DOMException) -{ -} - - -/** - * - */ -unsigned short getColorType() -{ -} - -/** - * - */ -css::RGBColor getRgbColor() -{ -} - -/** - * - */ -SVGICCColor getIccColor() -{ -} - - -/** - * - */ -void setRGBColor(const DOMString& /*rgbColor*/) throw (SVGException) -{ -} - -/** - * - */ -void setRGBColorICCColor(const DOMString& /*rgbColor*/, - const DOMString& /*iccColor*/) - throw (SVGException) -{ -} - -/** - * - */ -void setColor(unsigned short /*colorType*/, - const DOMString& /*rgbColor*/, - const DOMString& /*iccColor*/) - throw (SVGException) -{ -} - -//#################################################################### -//# SVGCSSRule -//#################################################################### - -/** - * From CSSRule - * The type of the rule, as defined above. The expectation is that - * binding-specific casting methods can be used to cast down from an instance of - * the CSSRule interface to the specific derived interface implied by the type. - */ -unsigned short getType() -{ -} - -/** - * From CSSRule - * The parsable textual representation of the rule. This reflects the current - * state of the rule and not its initial value. - */ -DOMString getCssText() -{ -} - -/** - * From CSSRule - * The parsable textual representation of the rule. This reflects the current - * state of the rule and not its initial value. - * Note that setting involves reparsing. - */ -void setCssText(const DOMString &val) throw (DOMException) -{ -} - -/** - * From CSSRule - * The style sheet that contains this rule. - */ -css::CSSStyleSheet *getParentStyleSheet() -{ -} - -/** - * From CSSRule - * If this rule is contained inside another rule(e.g. a style rule inside an - * @media block), this is the containing rule. If this rule is not nested inside - * any other rules, this returns null. - */ -css::CSSRule *getParentRule() -{ -} - -//#################################################################### -//# SVGExternalResourcesRequired -//#################################################################### - -/** - * - */ -SVGAnimatedBoolean getExternalResourcesRequired() -{ -} - -//#################################################################### -//# SVGFitToViewBox -//#################################################################### - -/** - * - */ -SVGAnimatedRect getViewBox() -{ -} - -/** - * - */ -SVGAnimatedPreserveAspectRatio getPreserveAspectRatio() -{ -} - -//#################################################################### -//# SVGICCColor -//#################################################################### - -/** - * - */ -DOMString getColorProfile() -{ -} - -/** - * - */ -void setColorProfile(const DOMString &val) throw (DOMException) -{ -} - -/** - * - */ -SVGNumberList &getColors() -{ -} - -//#################################################################### -//# SVGLangSpace -//#################################################################### - -/** - * - */ -DOMString getXmllang() -{ -} - -/** - * - */ -void setXmllang(const DOMString &val) throw (DOMException) -{ -} - -/** - * - */ -DOMString getXmlspace() -{ -} - -/** - * - */ -void setXmlspace(const DOMString &val) throw (DOMException) -{ -} - -//#################################################################### -//# SVGLength -//#################################################################### - -/** - * - */ -unsigned short getUnitType() -{ -} - -/** - * - */ -double getValue() -{ -} - -/** - * - */ -void setValue(double val) throw (DOMException) -{ -} - -/** - * - */ -double getValueInSpecifiedUnits() -{ -} - -/** - * - */ -void setValueInSpecifiedUnits(double /*val*/) throw (DOMException) -{ -} - -/** - * - */ -DOMString getValueAsString() -{ -} - -/** - * - */ -void setValueAsString(const DOMString& /*val*/) throw (DOMException) -{ -} - - -/** - * - */ -void newValueSpecifiedUnits(unsigned short /*unitType*/, double /*val*/) -{ -} - -/** - * - */ -void convertToSpecifiedUnits(unsigned short /*unitType*/) -{ -} - - -//#################################################################### -//## SVGLengthList - see SVGValueList -//#################################################################### - - - -//#################################################################### -//# SVGLocatable -//#################################################################### - -/** - * - */ -SVGElementPtr getNearestViewportElement() -{ -} - -/** - * - */ -SVGElement *getFarthestViewportElement() -{ -} - -/** - * - */ -SVGRect getBBox() -{ -} - -/** - * - */ -SVGMatrix getCTM() -{ -} - -/** - * - */ -SVGMatrix getScreenCTM() -{ -} - -/** - * - */ -SVGMatrix getTransformToElement(const SVGElement &/*element*/) - throw (SVGException) -{ -} - -//#################################################################### -//# SVGNumber -//#################################################################### - -/** - * - */ -double getValue() -{ -} - -/** - * - */ -void setValue(double val) throw (DOMException) -{ -} - -//#################################################################### -//# SVGNumberList - see SVGValueList -//#################################################################### - - -//#################################################################### -//# SVGRect -//#################################################################### - -/** - * - */ -double getX() -{ -} - -/** - * - */ -void setX(double val) throw (DOMException) -{ -} - -/** - * - */ -double getY() -{ -} - -/** - * - */ -void setY(double val) throw (DOMException) -{ -} - -/** - * - */ -double getWidth() -{ -} - -/** - * - */ -void setWidth(double val) throw (DOMException) -{ -} - -/** - * - */ -double getHeight() -{ -} - -/** - * - */ -void setHeight(double val) throw (DOMException) -{ -} - -//#################################################################### -//# SVGRenderingIntent -//#################################################################### - -//#################################################################### -//# SVGStringList - see SVGValueList -//#################################################################### - -//#################################################################### -//# SVGStylable -//#################################################################### - -/** - * - */ -SVGAnimatedString getClassName() -{ -} - -/** - * - */ -css::CSSStyleDeclaration getStyle() -{ -} - -/** - * - */ -css::CSSValue getPresentationAttribute(const DOMString& /*name*/) -{ -} - -//#################################################################### -//# SVGTests -//#################################################################### - -/** - * - */ -SVGValueList &getRequiredFeatures() -{ -} - -/** - * - */ -SVGValueList &getRequiredExtensions() -{ -} - -/** - * - */ -SVGValueList &getSystemLanguage() -{ -} - -/** - * - */ -bool hasExtension(const DOMString& /*extension*/) -{ -} - -//#################################################################### -//# SVGTransformable -//#################################################################### - -/** - * - */ -SVGAnimatedList &getTransform() -{ -} - -//#################################################################### -//# SVGUnitTypes -//#################################################################### - -//#################################################################### -//# SVGURIReference -//#################################################################### - -/** - * - */ -SVGAnimatedValue getHref() -{ -} - -//#################################################################### -//## SVGValueList - consolidation of other lists -//#################################################################### - -/** - * - */ -unsigned long SVGElement::getNumberOfItems() -{ - return items.size(); -} - -/** - * - */ -void SVGElement::clear() throw (DOMException) -{ - items.clear(); -} - -/** - * - */ -SVGValue SVGElement::initialize(const SVGValue& newItem) - throw (DOMException, SVGException) -{ - items.clear(); - items.push_back(newItem); - return newItem; -} - -/** - * - */ -SVGValue SVGElement::getItem(unsigned long index) throw (DOMException) -{ - if (index >= items.size()) - return ""; - return items[index]; -} - -/** - * - */ -SVGValue SVGElement::insertItemBefore(const SVGValue& newItem, - unsigned long index) - throw (DOMException, SVGException) -{ - if (index>=items.size()) - { - items.push_back(newItem); - } - else - { - std::vector::iterator iter = items.begin() + index; - items.insert(iter, newItem); - } - return newItem; -} - -/** - * - */ -SVGValue SVGElement::replaceItem (const SVGValue& newItem, - unsigned long index) - throw (DOMException, SVGException) -{ - if (index>=items.size()) - return ""; - std::vector::iterator iter = items.begin() + index; - *iter = newItem; - return newItem; -} - -/** - * - */ -SVGValue SVGElement::removeItem (unsigned long index) - throw (DOMException) -{ - if (index>=items.size()) - return ""; - std::vector::iterator iter = items.begin() + index; - SVGValue oldval = *iter; - items.erase(iter); - return oldval; -} - -/** - * - */ -SVGValue SVGElement::appendItem (const SVGValue& newItem) - throw (DOMException, SVGException) -{ - items.push_back(newItem); - return newItem; -} - - -/** - * Matrix - */ -SVGValue SVGElement::createSVGTransformFromMatrix(const SVGValue &matrix) -{ -} - -/** - * Matrix - */ -SVGValue SVGElement::consolidate() -{ -} - - -//#################################################################### -//# SVGViewSpec -//#################################################################### - -/** - * - */ -//SVGTransformList getTransform() -//{ -//} - -/** - * - */ -SVGElementPtr getViewTarget() -{ -} - -/** - * - */ -DOMString getViewBoxString() -{ -} - -/** - * - */ -DOMString getPreserveAspectRatioString() -{ -} - -/** - * - */ -DOMString getTransformString() -{ -} - -/** - * - */ -DOMString getViewTargetString() -{ -} - -//#################################################################### -//# SVGZoomAndPan -//#################################################################### - -/** - * - */ -unsigned short getZoomAndPan() -{ -} - -/** - * - */ -void setZoomAndPan(unsigned short val) throw (DOMException) -{ -} - -//#################################################################### -//#################################################################### -//# E L E M E N T S -//#################################################################### -//#################################################################### - -//#################################################################### -//# SVGAElement -//#################################################################### - - -/** - * - */ -SVGAnimatedString getTarget() -{ -} - - - -//#################################################################### -//# SVGAltGlyphElement -//#################################################################### - - -/** - * Get the attribute glyphRef on the given element. - */ -DOMString getGlyphRef() -{ -} - -/** - * Set the attribute glyphRef on the given element. - */ -void setGlyphRef(const DOMString &val) throw (DOMException) -{ -} - -/** - * Get the attribute format on the given element. - */ -DOMString getFormat() -{ -} - -/** - * Set the attribute format on the given element. - */ -void setFormat(const DOMString &val) throw (DOMException) -{ -} - - -//#################################################################### -//# SVGAltGlyphDefElement -//#################################################################### - -//#################################################################### -//# SVGAltGlyphItemElement -//#################################################################### - - -//#################################################################### -//# SVGAnimateElement -//#################################################################### - - -//#################################################################### -//# SVGAnimateColorElement -//#################################################################### - -//#################################################################### -//# SVGAnimateMotionElement -//#################################################################### - - -//#################################################################### -//# SVGAnimateTransformElement -//#################################################################### - - -//#################################################################### -//# SVGAnimationElement -//#################################################################### - - -/** - * - */ -SVGElementPtr getTargetElement() -{ -} - -/** - * - */ -double getStartTime() -{ -} - -/** - * - */ -double getCurrentTime() -{ -} - -/** - * - */ -double getSimpleDuration() throw (DOMException) -{ -} - - - -//#################################################################### -//# SVGCircleElement -//#################################################################### - -/** - * Corresponds to attribute cx on the given 'circle' element. - */ -SVGAnimatedLength getCx() -{ -} - -/** - * Corresponds to attribute cy on the given 'circle' element. - */ -SVGAnimatedLength getCy() -{ -} - -/** - * Corresponds to attribute r on the given 'circle' element. - */ -SVGAnimatedLength getR() -{ -} - -//#################################################################### -//# SVGClipPathElement -//#################################################################### - - -/** - * Corresponds to attribute clipPathUnits on the given 'clipPath' element. - * Takes one of the constants defined in SVGUnitTypes. - */ -SVGAnimatedEnumeration getClipPathUnits() -{ -} - - - -//#################################################################### -//# SVGColorProfileElement -//#################################################################### - - -/** - * Get the attribute local on the given element. - */ -DOMString getLocal() -{ -} - -/** - * Set the attribute local on the given element. - */ -void setLocal(const DOMString &val) throw (DOMException) -{ -} - -/** - * Get the attribute name on the given element. - */ -DOMString getName() -{ -} - -/** - * Set the attribute name on the given element. - */ -void setName(const DOMString &val) throw (DOMException) -{ -} - -/** - * Set the attribute rendering-intent on the given element. - * The type of rendering intent, identified by one of the - * SVGRenderingIntent constants. - */ -unsigned short getRenderingIntent() -{ -} - -/** - * Get the attribute rendering-intent on the given element. - */ -void setRenderingIntent(unsigned short val) throw (DOMException) -{ -} - - -//#################################################################### -//# SVGComponentTransferFunctionElement -//#################################################################### - -/** - * Corresponds to attribute type on the given element. Takes one - * of the Component Transfer Types. - */ -SVGAnimatedEnumeration getType() -{ -} - -/** - * Corresponds to attribute tableValues on the given element. - */ -SVGAnimatedNumberList getTableValues() -{ -} - -/** - * Corresponds to attribute slope on the given element. - */ -SVGAnimatedNumber getSlope() -{ -} - -/** - * Corresponds to attribute intercept on the given element. - */ -SVGAnimatedNumber getIntercept() -{ -} - -/** - * Corresponds to attribute amplitude on the given element. - */ -SVGAnimatedNumber getAmplitude() -{ -} - -/** - * Corresponds to attribute exponent on the given element. - */ -SVGAnimatedNumber getExponent() -{ -} - -/** - * Corresponds to attribute offset on the given element. - */ -SVGAnimatedNumber getOffset() -{ -} - -//#################################################################### -//# SVGCursorElement -//#################################################################### - -/** - * - */ -SVGAnimatedLength getX() -{ -} - -/** - * - */ -SVGAnimatedLength getY() -{ -} - - -//#################################################################### -//# SVGDefinitionSrcElement -//#################################################################### - -//#################################################################### -//# SVGDefsElement -//#################################################################### - -//#################################################################### -//# SVGDescElement -//#################################################################### - -//#################################################################### -//# SVGEllipseElement -//#################################################################### - -/** - * Corresponds to attribute cx on the given 'ellipse' element. - */ -SVGAnimatedLength getCx() -{ -} - -/** - * Corresponds to attribute cy on the given 'ellipse' element. - */ -SVGAnimatedLength getCy() -{ -} - -/** - * Corresponds to attribute rx on the given 'ellipse' element. - */ -SVGAnimatedLength getRx() -{ -} - -/** - * Corresponds to attribute ry on the given 'ellipse' element. - */ -SVGAnimatedLength getRy() -{ -} - - -//#################################################################### -//# SVGFEBlendElement -//#################################################################### - -/** - * Corresponds to attribute in on the given 'feBlend' element. - */ -SVGAnimatedString getIn1() -{ -} - -/** - * Corresponds to attribute in2 on the given 'feBlend' element. - */ -SVGAnimatedString getIn2() -{ -} - -/** - * Corresponds to attribute mode on the given 'feBlend' element. - * Takes one of the Blend Mode Types. - */ -SVGAnimatedEnumeration getMode() -{ -} - - -//#################################################################### -//# SVGFEColorMatrixElement -//#################################################################### - -/** - * Corresponds to attribute in on the given 'feColorMatrix' element. - */ -SVGAnimatedString getIn1() -{ -} - -/** - * Corresponds to attribute type on the given 'feColorMatrix' element. - * Takes one of the Color Matrix Types. - */ -SVGAnimatedEnumeration getType() -{ -} - -/** - * Corresponds to attribute values on the given 'feColorMatrix' element. - * Provides access to the contents of the values attribute. - */ -SVGAnimatedNumberList getValues() -{ -} - - -//#################################################################### -//# SVGFEComponentTransferElement -//#################################################################### - - -/** - * Corresponds to attribute in on the given 'feComponentTransfer' element. - */ -SVGAnimatedString getIn1() -{ -} - -//#################################################################### -//# SVGFECompositeElement -//#################################################################### - -/** - * Corresponds to attribute in on the given 'feComposite' element. - */ -SVGAnimatedString getIn1() -{ -} - -/** - * Corresponds to attribute in2 on the given 'feComposite' element. - */ -SVGAnimatedString getIn2() -{ -} - -/** - * Corresponds to attribute operator on the given 'feComposite' element. - * Takes one of the Composite Operators. - */ -SVGAnimatedEnumeration getOperator() -{ -} - -/** - * Corresponds to attribute k1 on the given 'feComposite' element. - */ -SVGAnimatedNumber getK1() -{ -} - -/** - * Corresponds to attribute k2 on the given 'feComposite' element. - */ -SVGAnimatedNumber getK2() -{ -} - -/** - * Corresponds to attribute k3 on the given 'feComposite' element. - */ -SVGAnimatedNumber getK3() -{ -} - -/** - * Corresponds to attribute k4 on the given 'feComposite' element. - */ -SVGAnimatedNumber getK4() -{ -} - - -//#################################################################### -//# SVGFEConvolveMatrixElement -//#################################################################### - - -/** - * Corresponds to attribute order on the given 'feConvolveMatrix' element. - */ -SVGAnimatedInteger getOrderX() -{ -} - -/** - * Corresponds to attribute order on the given 'feConvolveMatrix' element. - */ -SVGAnimatedInteger getOrderY() -{ -} - -/** - * Corresponds to attribute kernelMatrix on the given element. - */ -SVGAnimatedNumberList getKernelMatrix() -{ -} - -/** - * Corresponds to attribute divisor on the given 'feConvolveMatrix' element. - */ -SVGAnimatedNumber getDivisor() -{ -} - -/** - * Corresponds to attribute bias on the given 'feConvolveMatrix' element. - */ -SVGAnimatedNumber getBias() -{ -} - -/** - * Corresponds to attribute targetX on the given 'feConvolveMatrix' element. - */ -SVGAnimatedInteger getTargetX() -{ -} - -/** - * Corresponds to attribute targetY on the given 'feConvolveMatrix' element. - */ -SVGAnimatedInteger getTargetY() -{ -} - -/** - * Corresponds to attribute edgeMode on the given 'feConvolveMatrix' - * element. Takes one of the Edge Mode Types. - */ -SVGAnimatedEnumeration getEdgeMode() -{ -} - -/** - * Corresponds to attribute kernelUnitLength on the - * given 'feConvolveMatrix' element. - */ -SVGAnimatedLength getKernelUnitLengthX() -{ -} - -/** - * Corresponds to attribute kernelUnitLength on the given - * 'feConvolveMatrix' element. - */ -SVGAnimatedLength getKernelUnitLengthY() -{ -} - -/** - * Corresponds to attribute preserveAlpha on the - * given 'feConvolveMatrix' element. - */ -SVGAnimatedBoolean getPreserveAlpha() -{ -} - - - -//#################################################################### -//# SVGFEDiffuseLightingElement -//#################################################################### - - -/** - * Corresponds to attribute in on the given 'feDiffuseLighting' element. - */ -SVGAnimatedString getIn1() -{ -} - -/** - * Corresponds to attribute surfaceScale on the given - * 'feDiffuseLighting' element. - */ -SVGAnimatedNumber getSurfaceScale() -{ -} - -/** - * Corresponds to attribute diffuseConstant on the given - * 'feDiffuseLighting' element. - */ -SVGAnimatedNumber getDiffuseConstant() -{ -} - -/** - * Corresponds to attribute kernelUnitLength on the given - * 'feDiffuseLighting' element. - */ -SVGAnimatedNumber getKernelUnitLengthX() -{ -} - -/** - * Corresponds to attribute kernelUnitLength on the given - * 'feDiffuseLighting' element. - */ -SVGAnimatedNumber getKernelUnitLengthY() -{ -} - - - - -//#################################################################### -//# SVGFEDisplacementMapElement -//#################################################################### - -/** - * - */ -SVGAnimatedString getIn1() -{ -} - -/** - * - */ -SVGAnimatedString getIn2() -{ -} - - -/** - * - */ -SVGAnimatedNumber getScale() -{ -} - -/** - * - */ -SVGAnimatedEnumeration getXChannelSelector() -{ -} - -/** - * - */ -SVGAnimatedEnumeration getYChannelSelector() -{ -} - -//#################################################################### -//# SVGFEDistantLightElement -//#################################################################### - - -/** - * Corresponds to attribute azimuth on the given 'feDistantLight' element. - */ -SVGAnimatedNumber getAzimuth() -{ -} - - -/** - * Corresponds to attribute elevation on the given 'feDistantLight' - * element - */ -SVGAnimatedNumber getElevation() -{ -} - - -//#################################################################### -//# SVGFEFloodElement -//#################################################################### - - -/** - * - */ -SVGAnimatedString getIn1() -{ -} - - -//#################################################################### -//# SVGFEFuncAElement -//#################################################################### - -//#################################################################### -//# SVGFEFuncBElement -//#################################################################### - -//#################################################################### -//# SVGFEFuncGElement -//#################################################################### - -//#################################################################### -//# SVGFEFuncRElement -//#################################################################### - - -//#################################################################### -//# SVGFEGaussianBlurElement -//#################################################################### - - -/** - * - */ -SVGAnimatedString getIn1() -{ -} - - -/** - * - */ -SVGAnimatedNumber getStdDeviationX() -{ -} - -/** - * - */ -SVGAnimatedNumber getStdDeviationY() -{ -} - - -/** - * - */ -void setStdDeviation(double stdDeviationX, double stdDeviationY) -{ -} - - -//#################################################################### -//# SVGFEImageElement -//#################################################################### - - -//#################################################################### -//# SVGFEMergeElement -//#################################################################### - -//#################################################################### -//# SVGFEMergeNodeElement -//#################################################################### - -//#################################################################### -//# SVGFEMorphologyElement -//#################################################################### - -/** - * - */ -SVGAnimatedString getIn1() -{ -} - - -/** - * - */ -SVGAnimatedEnumeration getOperator() -{ -} - -/** - * - */ -SVGAnimatedLength getRadiusX() -{ -} - -/** - * - */ -SVGAnimatedLength getRadiusY() -{ -} - -//#################################################################### -//# SVGFEOffsetElement -//#################################################################### - -/** - * - */ -SVGAnimatedString getIn1() -{ -} - -/** - * - */ -SVGAnimatedLength getDx() -{ -} - -/** - * - */ -SVGAnimatedLength getDy() -{ -} - - -//#################################################################### -//# SVGFEPointLightElement -//#################################################################### - -/** - * Corresponds to attribute x on the given 'fePointLight' element. - */ -SVGAnimatedNumber getX() -{ -} - -/** - * Corresponds to attribute y on the given 'fePointLight' element. - */ -SVGAnimatedNumber getY() -{ -} - -/** - * Corresponds to attribute z on the given 'fePointLight' element. - */ -SVGAnimatedNumber getZ() -{ -} - -//#################################################################### -//# SVGFESpecularLightingElement -//#################################################################### - - -/** - * - */ -SVGAnimatedString getIn1() -{ -} - -/** - * - */ -SVGAnimatedNumber getSurfaceScale() -{ -} - -/** - * - */ -SVGAnimatedNumber getSpecularConstant() -{ -} - -/** - * - */ -SVGAnimatedNumber getSpecularExponent() -{ -} - - -//#################################################################### -//# SVGFESpotLightElement -//#################################################################### - -/** - * Corresponds to attribute x on the given 'feSpotLight' element. - */ -SVGAnimatedNumber getX() -{ -} - -/** - * Corresponds to attribute y on the given 'feSpotLight' element. - */ -SVGAnimatedNumber getY() -{ -} - -/** - * Corresponds to attribute z on the given 'feSpotLight' element. - */ -SVGAnimatedNumber getZ() -{ -} - -/** - * Corresponds to attribute pointsAtX on the given 'feSpotLight' element. - */ -SVGAnimatedNumber getPointsAtX() -{ -} - -/** - * Corresponds to attribute pointsAtY on the given 'feSpotLight' element. - */ -SVGAnimatedNumber getPointsAtY() -{ -} - -/** - * Corresponds to attribute pointsAtZ on the given 'feSpotLight' element. - */ -SVGAnimatedNumber getPointsAtZ() -{ -} - -/** - * Corresponds to attribute specularExponent on the - * given 'feSpotLight' element. - */ -SVGAnimatedNumber getSpecularExponent() -{ -} - -/** - * Corresponds to attribute limitingConeAngle on the - * given 'feSpotLight' element. - */ -SVGAnimatedNumber getLimitingConeAngle() -{ -} - - -//#################################################################### -//# SVGFETileElement -//#################################################################### - - -/** - * - */ -SVGAnimatedString getIn1() -{ -} - - -//#################################################################### -//# SVGFETurbulenceElement -//#################################################################### - - -/** - * - */ -SVGAnimatedNumber getBaseFrequencyX() -{ -} - -/** - * - */ -SVGAnimatedNumber getBaseFrequencyY() -{ -} - -/** - * - */ -SVGAnimatedInteger getNumOctaves() -{ -} - -/** - * - */ -SVGAnimatedNumber getSeed() -{ -} - -/** - * - */ -SVGAnimatedEnumeration getStitchTiles() -{ -} - -/** - * - */ -SVGAnimatedEnumeration getType() -{ -} - - - -//#################################################################### -//# SVGFilterElement -//#################################################################### - - -/** - * Corresponds to attribute filterUnits on the given 'filter' element. Takes one - * of the constants defined in SVGUnitTypes. - */ -SVGAnimatedEnumeration getFilterUnits() -{ -} - -/** - * Corresponds to attribute primitiveUnits on the given 'filter' element. Takes - * one of the constants defined in SVGUnitTypes. - */ -SVGAnimatedEnumeration getPrimitiveUnits() -{ -} - -/** - * - */ -SVGAnimatedLength getX() -{ -} - -/** - * Corresponds to attribute x on the given 'filter' element. - */ -SVGAnimatedLength getY() -{ -} - -/** - * Corresponds to attribute y on the given 'filter' element. - */ -SVGAnimatedLength getWidth() -{ -} - -/** - * Corresponds to attribute height on the given 'filter' element. - */ -SVGAnimatedLength getHeight() -{ -} - - -/** - * Corresponds to attribute filterRes on the given 'filter' element. - * Contains the X component of attribute filterRes. - */ -SVGAnimatedInteger getFilterResX() -{ -} - -/** - * Corresponds to attribute filterRes on the given 'filter' element. - * Contains the Y component(possibly computed automatically) - * of attribute filterRes. - */ -SVGAnimatedInteger getFilterResY() -{ -} - -/** - * Sets the values for attribute filterRes. - */ -void setFilterRes(unsigned long filterResX, unsigned long filterResY) -{ -} - - -//#################################################################### -//# SVGFontElement -//#################################################################### - -//#################################################################### -//# SVGFontFaceElement -//#################################################################### - -//#################################################################### -//# SVGFontFaceFormatElement -//#################################################################### - -//#################################################################### -//# SVGFontFaceNameElement -//#################################################################### - -//#################################################################### -//# SVGFontFaceSrcElement -//#################################################################### - -//#################################################################### -//# SVGFontFaceUriElement -//#################################################################### - -//#################################################################### -//# SVGForeignObjectElement -//#################################################################### - -/** - * - */ -SVGAnimatedLength getX() -{ -} - -/** - * - */ -SVGAnimatedLength getY() -{ -} - -/** - * - */ -SVGAnimatedLength getWidth() -{ -} - -/** - * - */ -SVGAnimatedLength getHeight() -{ -} - - - -//#################################################################### -//# SVGGlyphRefElement -//#################################################################### - - -/** - * Get the attribute glyphRef on the given element. - */ -DOMString getGlyphRef() -{ -} - -/** - * Set the attribute glyphRef on the given element. - */ -void setGlyphRef(const DOMString &val) throw (DOMException) -{ -} - -/** - * Get the attribute format on the given element. - */ -DOMString getFormat() -{ -} - -/** - * Set the attribute format on the given element. - */ -void setFormat(const DOMString &val) throw (DOMException) -{ -} - -/** - * Get the attribute x on the given element. - */ -double getX() -{ -} - -/** - * Set the attribute x on the given element. - */ -void setX(double val) throw (DOMException) -{ -} - -/** - * Get the attribute y on the given element. - */ -double getY() -{ -} - -/** - * Set the attribute y on the given element. - */ -void setY(double val) throw (DOMException) -{ -} - -/** - * Get the attribute dx on the given element. - */ -double getDx() -{ -} - -/** - * Set the attribute dx on the given element. - */ -void setDx(double val) throw (DOMException) -{ -} - -/** - * Get the attribute dy on the given element. - */ -double getDy() -{ -} - -/** - * Set the attribute dy on the given element. - */ -void setDy(double val) throw (DOMException) -{ -} - - -//#################################################################### -//# SVGGradientElement -//#################################################################### - -/** - * Corresponds to attribute gradientUnits on the given element. - * Takes one of the constants defined in SVGUnitTypes. - */ -SVGAnimatedEnumeration getGradientUnits() -{ -} - -/** - * Corresponds to attribute gradientTransform on the given element. - */ -SVGAnimatedTransformList getGradientTransform() -{ -} - -/** - * Corresponds to attribute spreadMethod on the given element. - * One of the Spread Method Types. - */ -SVGAnimatedEnumeration getSpreadMethod() -{ -} - - - -//#################################################################### -//# SVGHKernElement -//#################################################################### - -//#################################################################### -//# SVGImageElement -//#################################################################### - -/** - * Corresponds to attribute x on the given 'image' element. - */ -SVGAnimatedLength getX() -{ -} - -/** - * Corresponds to attribute y on the given 'image' element. - */ -SVGAnimatedLength getY() -{ -} - -/** - * Corresponds to attribute width on the given 'image' element. - */ -SVGAnimatedLength getWidth() -{ -} - -/** - * Corresponds to attribute height on the given 'image' element. - */ -SVGAnimatedLength getHeight() -{ -} - - -/** - * Corresponds to attribute preserveAspectRatio on the given element. - */ -SVGAnimatedPreserveAspectRatio getPreserveAspectRatio() -{ -} - -//#################################################################### -//# SVGLinearGradientElement -//#################################################################### - -/** - * Corresponds to attribute x1 on the given 'linearGradient' element. - */ -SVGAnimatedLength getX1() -{ -} - -/** - * Corresponds to attribute y1 on the given 'linearGradient' element. - */ -SVGAnimatedLength getY1() -{ -} - -/** - * Corresponds to attribute x2 on the given 'linearGradient' element. - */ -SVGAnimatedLength getX2() -{ -} - -/** - * Corresponds to attribute y2 on the given 'linearGradient' element. - */ -SVGAnimatedLength getY2() -{ -} - - - -//#################################################################### -//# SVGLineElement -//#################################################################### - -/** - * Corresponds to attribute x1 on the given 'line' element. - */ -SVGAnimatedLength getX1() -{ -} - -/** - * Corresponds to attribute y1 on the given 'line' element. - */ -SVGAnimatedLength getY1() -{ -} - -/** - * Corresponds to attribute x2 on the given 'line' element. - */ -SVGAnimatedLength getX2() -{ -} - -/** - * Corresponds to attribute y2 on the given 'line' element. - */ -SVGAnimatedLength getY2() -{ -} - - -//#################################################################### -//# SVGMarkerElement -//#################################################################### - - -/** - * Corresponds to attribute refX on the given 'marker' element. - */ -SVGAnimatedLength getRefX() -{ -} - -/** - * Corresponds to attribute refY on the given 'marker' element. - */ -SVGAnimatedLength getRefY() -{ -} - -/** - * Corresponds to attribute markerUnits on the given 'marker' element. - * One of the Marker Units Types defined above. - */ -SVGAnimatedEnumeration getMarkerUnits() -{ -} - -/** - * Corresponds to attribute markerWidth on the given 'marker' element. - */ -SVGAnimatedLength getMarkerWidth() -{ -} - -/** - * Corresponds to attribute markerHeight on the given 'marker' element. - */ -SVGAnimatedLength getMarkerHeight() -{ -} - -/** - * Corresponds to attribute orient on the given 'marker' element. - * One of the Marker Orientation Types defined above. - */ -SVGAnimatedEnumeration getOrientType() -{ -} - -/** - * Corresponds to attribute orient on the given 'marker' element. - * If markerUnits is SVG_MARKER_ORIENT_ANGLE, the angle value for - * attribute orient ; otherwise, it will be set to zero. - */ -SVGAnimatedAngle getOrientAngle() -{ -} - - -/** - * Sets the value of attribute orient to 'auto'. - */ -void setOrientToAuto() -{ -} - -/** - * Sets the value of attribute orient to the given angle. - */ -void setOrientToAngle(const SVGAngle &angle) -{ -} - - -//#################################################################### -//# SVGMaskElement -//#################################################################### - - -/** - * Corresponds to attribute maskUnits on the given 'mask' element. Takes one of - * the constants defined in SVGUnitTypes. - */ -SVGAnimatedEnumeration getMaskUnits() -{ -} - -/** - * Corresponds to attribute maskContentUnits on the given 'mask' element. Takes - * one of the constants defined in SVGUnitTypes. - */ -SVGAnimatedEnumeration getMaskContentUnits() -{ -} - -/** - * Corresponds to attribute x on the given 'mask' element. - */ -SVGAnimatedLength getX() -{ -} - -/** - * Corresponds to attribute y on the given 'mask' element. - */ -SVGAnimatedLength getY() -{ -} - -/** - * Corresponds to attribute width on the given 'mask' element. - */ -SVGAnimatedLength getWidth() -{ -} - -/** - * Corresponds to attribute height on the given 'mask' element. - */ -SVGAnimatedLength getHeight() -{ -} - -//#################################################################### -//# SVGMetadataElement -//#################################################################### - -//#################################################################### -//# SVGMissingGlyphElement -//#################################################################### - -//#################################################################### -//# SVGMPathElement -//#################################################################### - -//#################################################################### -//# SVGPathElement -//#################################################################### - -/** - * Corresponds to attribute pathLength on the given 'path' element. - */ -SVGAnimatedNumber getPathLength() -{ -} - -/** - * Returns the user agent's computed value for the total length of the path using - * the user agent's distance-along-a-path algorithm, as a distance in the current - * user coordinate system. - */ -double getTotalLength() -{ -} - -/** - * Returns the(x,y) coordinate in user space which is distance units along the - * path, utilizing the user agent's distance-along-a-path algorithm. - */ -SVGPoint getPointAtLength(double distance) -{ -} - -/** - * Returns the index into pathSegList which is distance units along the path, - * utilizing the user agent's distance-along-a-path algorithm. - */ -unsigned long getPathSegAtLength(double distance) -{ -} - -/** - * Returns a stand-alone, parentless SVGPathSegClosePath object. - */ -SVGPathSeg createSVGPathSegClosePath() -{ - SVGPathSeg seg(PATHSEG_CLOSEPATH); - return seg; -} - -/** - * Returns a stand-alone, parentless SVGPathSegMovetoAbs object. - */ -SVGPathSeg createSVGPathSegMovetoAbs(double x, double y) -{ - SVGPathSeg seg(PATHSEG_MOVETO_ABS); - seg.setX(x); - seg.setY(y); - return seg; -} - -/** - * Returns a stand-alone, parentless SVGPathSegMovetoRel object. - */ -SVGPathSeg createSVGPathSegMovetoRel(double x, double y) -{ - SVGPathSeg seg(PATHSEG_MOVETO_REL); - seg.setX(x); - seg.setY(y); - return seg; -} - -/** - * Returns a stand-alone, parentless SVGPathSegLinetoAbs object. - */ -SVGPathSeg createSVGPathSegLinetoAbs(double x, double y) -{ - SVGPathSeg seg(PATHSEG_LINETO_ABS); - seg.setX(x); - seg.setY(y); - return seg; -} - -/** - * Returns a stand-alone, parentless SVGPathSegLinetoRel object. - */ -SVGPathSeg createSVGPathSegLinetoRel(double x, double y) -{ - SVGPathSeg seg(PATHSEG_LINETO_REL); - seg.setX(x); - seg.setY(y); - return seg; -} - -/** - * Returns a stand-alone, parentless SVGPathSegCurvetoCubicAbs object. - */ -SVGPathSeg createSVGPathSegCurvetoCubicAbs(double x, double y, - double x1, double y1, double x2, double y2) -{ - SVGPathSeg seg(PATHSEG_CURVETO_CUBIC_ABS); - seg.setX(x); - seg.setY(y); - seg.setX1(x1); - seg.setY1(y1); - seg.setX2(x2); - seg.setY2(y2); - return seg; -} - -/** - * Returns a stand-alone, parentless SVGPathSegCurvetoCubicRel object. - */ -SVGPathSeg createSVGPathSegCurvetoCubicRel(double x, double y, - double x1, double y1, double x2, double y2) -{ - SVGPathSeg seg(PATHSEG_CURVETO_CUBIC_REL); - seg.setX(x); - seg.setY(y); - seg.setX1(x1); - seg.setY1(y1); - seg.setX2(x2); - seg.setY2(y2); - return seg; -} - -/** - * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticAbs object. - */ -SVGPathSeg createSVGPathSegCurvetoQuadraticAbs(double x, double y, - double x1, double y1) -{ - SVGPathSeg seg(PATHSEG_CURVETO_QUADRATIC_ABS); - seg.setX(x); - seg.setY(y); - seg.setX1(x1); - seg.setY1(y1); - return seg; -} - -/** - * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticRel object. - */ -SVGPathSeg createSVGPathSegCurvetoQuadraticRel(double x, double y, - double x1, double y1) -{ - SVGPathSeg seg(PATHSEG_CURVETO_QUADRATIC_REL); - seg.setX(x); - seg.setY(y); - seg.setX1(x1); - seg.setY1(y1); - return seg; -} - -/** - * Returns a stand-alone, parentless SVGPathSegArcAbs object. - */ -SVGPathSeg createSVGPathSegArcAbs(double x, double y, - double r1, double r2, double angle, - bool largeArcFlag, bool sweepFlag) -{ - SVGPathSeg seg(PATHSEG_ARC_ABS); - seg.setX(x); - seg.setY(y); - seg.setR1(r1); - seg.setR2(r2); - seg.setAngle(angle); - seg.setLargeArcFlag(largeArcFlag); - seg.setSweepFlag(sweepFlag); - return seg; -} - -/** - * Returns a stand-alone, parentless SVGPathSegArcRel object. - */ -SVGPathSeg createSVGPathSegArcRel(double x, double y, double r1, - double r2, double angle, bool largeArcFlag, - bool sweepFlag) -{ - SVGPathSeg seg(PATHSEG_ARC_REL); - seg.setX(x); - seg.setY(y); - seg.setR1(r1); - seg.setR2(r2); - seg.setAngle(angle); - seg.setLargeArcFlag(largeArcFlag); - seg.setSweepFlag(sweepFlag); - return seg; -} - -/** - * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalAbs object. - */ -SVGPathSeg createSVGPathSegLinetoHorizontalAbs(double x) -{ - SVGPathSeg seg(PATHSEG_LINETO_HORIZONTAL_ABS); - seg.setX(x); - return seg; -} - -/** - * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalRel object. - */ -SVGPathSeg createSVGPathSegLinetoHorizontalRel(double x) -{ - SVGPathSeg seg(PATHSEG_LINETO_HORIZONTAL_REL); - seg.setX(x); - return seg; -} - -/** - * Returns a stand-alone, parentless SVGPathSegLinetoVerticalAbs object. - */ -SVGPathSeg createSVGPathSegLinetoVerticalAbs(double y) -{ - SVGPathSeg seg(PATHSEG_LINETO_VERTICAL_ABS); - seg.setY(y); - return seg; -} - -/** - * Returns a stand-alone, parentless SVGPathSegLinetoVerticalRel object. - */ -SVGPathSeg createSVGPathSegLinetoVerticalRel(double y) -{ - SVGPathSeg seg(PATHSEG_LINETO_VERTICAL_REL); - seg.setY(y); - return seg; -} - -/** - * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothAbs object. - */ -SVGPathSeg createSVGPathSegCurvetoCubicSmoothAbs(double x, double y, - double x2, double y2) -{ - SVGPathSeg seg(PATHSEG_CURVETO_CUBIC_SMOOTH_ABS); - seg.setX(x); - seg.setY(y); - seg.setX2(x2); - seg.setY2(y2); - return seg; -} - -/** - * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothRel object. - */ -SVGPathSeg createSVGPathSegCurvetoCubicSmoothRel(double x, double y, - double x2, double y2) -{ - SVGPathSeg seg(PATHSEG_CURVETO_CUBIC_SMOOTH_REL); - seg.setX(x); - seg.setY(y); - seg.setX2(x2); - seg.setY2(y2); - return seg; -} - -/** - * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothAbs - * object. - */ -SVGPathSeg createSVGPathSegCurvetoQuadraticSmoothAbs(double x, double y) -{ - SVGPathSeg seg(PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS); - seg.setX(x); - seg.setY(y); - return seg; -} - -/** - * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothRel - * object. - */ -SVGPathSeg createSVGPathSegCurvetoQuadraticSmoothRel(double x, double y) -{ - SVGPathSeg seg(PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL); - seg.setX(x); - seg.setY(y); - return seg; -} - - -//#################################################################### -//# SVGPatternElement -//#################################################################### - -/** - * Corresponds to attribute patternUnits on the given 'pattern' element. - * Takes one of the constants defined in SVGUnitTypes. - */ -SVGAnimatedEnumeration getPatternUnits() -{ -} - -/** - * Corresponds to attribute patternContentUnits on the given 'pattern' - * element. Takes one of the constants defined in SVGUnitTypes. - */ -SVGAnimatedEnumeration getPatternContentUnits() -{ -} - -/** - * Corresponds to attribute patternTransform on the given 'pattern' element. - */ -SVGAnimatedTransformList getPatternTransform() -{ -} - -/** - * Corresponds to attribute x on the given 'pattern' element. - */ -SVGAnimatedLength getX() -{ -} - -/** - * - */ -SVGAnimatedLength getY() -{ -} - -/** - * Corresponds to attribute width on the given 'pattern' element. - */ -SVGAnimatedLength getWidth() -{ -} - -/** - * Corresponds to attribute height on the given 'pattern' element. - */ -SVGAnimatedLength getHeight() -{ -} - - -//#################################################################### -//# SVGPolyLineElement -//#################################################################### - -//#################################################################### -//# SVGPolygonElement -//#################################################################### - - -//#################################################################### -//# SVGRadialGradientElement -//#################################################################### - - -/** - * Corresponds to attribute cx on the given 'radialGradient' element. - */ -SVGAnimatedLength getCx() -{ -} - - -/** - * Corresponds to attribute cy on the given 'radialGradient' element. - */ -SVGAnimatedLength getCy() -{ -} - - -/** - * Corresponds to attribute r on the given 'radialGradient' element. - */ -SVGAnimatedLength getR() -{ -} - - -/** - * Corresponds to attribute fx on the given 'radialGradient' element. - */ -SVGAnimatedLength getFx() -{ -} - - -/** - * Corresponds to attribute fy on the given 'radialGradient' element. - */ -SVGAnimatedLength getFy() -{ -} - - -//#################################################################### -//# SVGRectElement -//#################################################################### - -/** - * Corresponds to attribute x on the given 'rect' element. - */ -SVGAnimatedLength getX() -{ -} - -/** - * Corresponds to attribute y on the given 'rect' element. - */ -SVGAnimatedLength getY() -{ -} - -/** - * Corresponds to attribute width on the given 'rect' element. - */ -SVGAnimatedLength getWidth() -{ -} - -/** - * Corresponds to attribute height on the given 'rect' element. - */ -SVGAnimatedLength getHeight() -{ -} - - -/** - * Corresponds to attribute rx on the given 'rect' element. - */ -SVGAnimatedLength getRx() -{ -} - -/** - * Corresponds to attribute ry on the given 'rect' element. - */ -SVGAnimatedLength getRy() -{ -} - - -//#################################################################### -//# SVGScriptElement -//#################################################################### - -/** - * - */ -DOMString getType() -{ -} - -/** - * - */ -void setType(const DOMString &val) throw (DOMException) -{ -} - -//#################################################################### -//# SVGSetElement -//#################################################################### - -//#################################################################### -//# SVGStopElement -//#################################################################### - - -/** - * Corresponds to attribute offset on the given 'stop' element. - */ -SVGAnimatedNumber getOffset() -{ -} - - -//#################################################################### -//# SVGStyleElement -//#################################################################### - -/** - * Get the attribute xml:space on the given element. - */ -DOMString getXmlspace() -{ -} - -/** - * Set the attribute xml:space on the given element. - */ -void setXmlspace(const DOMString &val) throw (DOMException) -{ -} - -/** - * Get the attribute type on the given 'style' element. - */ -DOMString getType() -{ -} - -/** - * Set the attribute type on the given 'style' element. - */ -void setType(const DOMString &val) throw (DOMException) -{ -} - -/** - * Get the attribute media on the given 'style' element. - */ -DOMString getMedia() -{ -} - -/** - * Set the attribute media on the given 'style' element. - */ -void setMedia(const DOMString &val) throw (DOMException) -{ -} - -/** - * Get the attribute title on the given 'style' element. - */ -DOMString getTitle() -{ -} - -/** - * Set the attribute title on the given 'style' element. - */ -void setTitle(const DOMString &val) throw (DOMException) -{ -} - -//#################################################################### -//# SVGSymbolElement -//#################################################################### - -//#################################################################### -//# SVGSVGElement -//#################################################################### - -/** - * Corresponds to attribute x on the given 'svg' element. - */ -SVGAnimatedLength getX() -{ -} - -/** - * Corresponds to attribute y on the given 'svg' element. - */ -SVGAnimatedLength getY() -{ -} - -/** - * Corresponds to attribute width on the given 'svg' element. - */ -SVGAnimatedLength getWidth() -{ -} - -/** - * Corresponds to attribute height on the given 'svg' element. - */ -SVGAnimatedLength getHeight() -{ -} - -/** - * Get the attribute contentScriptType on the given 'svg' element. - */ -DOMString getContentScriptType() -{ -} - -/** - * Set the attribute contentScriptType on the given 'svg' element. - */ -void setContentScriptType(const DOMString &val) throw (DOMException) -{ -} - - -/** - * Get the attribute contentStyleType on the given 'svg' element. - */ -DOMString getContentStyleType() -{ -} - -/** - * Set the attribute contentStyleType on the given 'svg' element. - */ -void setContentStyleType(const DOMString &val) throw (DOMException) -{ -} - -/** - * The position and size of the viewport(implicit or explicit) that corresponds - * to this 'svg' element. When the user agent is actually rendering the content, - * then the position and size values represent the actual values when rendering. - * The position and size values are unitless values in the coordinate system of - * the parent element. If no parent element exists(i.e., 'svg' element - * represents the root of the document tree), if this SVG document is embedded as - * part of another document(e.g., via the HTML 'object' element), then the - * position and size are unitless values in the coordinate system of the parent - * document.(If the parent uses CSS or XSL layout, then unitless values - * represent pixel units for the current CSS or XSL viewport, as described in the - * CSS2 specification.) If the parent element does not have a coordinate system, - * then the user agent should provide reasonable default values for this attribute. - */ -SVGRect getViewport() -{ -} - -/** - * Size of a pixel units(as defined by CSS2) along the x-axis of the viewport, - * which represents a unit somewhere in the range of 70dpi to 120dpi, and, on - * systems that support this, might actually match the characteristics of the - * target medium. On systems where it is impossible to know the size of a pixel, - * a suitable default pixel size is provided. - */ -double getPixelUnitToMillimeterX() -{ -} - -/** - * Corresponding size of a pixel unit along the y-axis of the viewport. - */ -double getPixelUnitToMillimeterY() -{ -} - -/** - * User interface(UI) events in DOM Level 2 indicate the screen positions at - * which the given UI event occurred. When the user agent actually knows the - * physical size of a "screen unit", this attribute will express that information -{ -} - * otherwise, user agents will provide a suitable default value such as .28mm. - */ -double getScreenPixelToMillimeterX() -{ -} - -/** - * Corresponding size of a screen pixel along the y-axis of the viewport. - */ -double getScreenPixelToMillimeterY() -{ -} - - -/** - * The initial view(i.e., before magnification and panning) of the current - * innermost SVG document fragment can be either the "standard" view(i.e., based - * on attributes on the 'svg' element such as fitBoxToViewport) or to a "custom" - * view(i.e., a hyperlink into a particular 'view' or other element - see - * Linking into SVG content: URI fragments and SVG views). If the initial view is - * the "standard" view, then this attribute is false. If the initial view is a - * "custom" view, then this attribute is true. - */ -bool getUseCurrentView() -{ -} - -/** - * Set the value above - */ -void setUseCurrentView(bool val) throw (DOMException) -{ -} - -/** - * The definition of the initial view(i.e., before magnification and panning) of - * the current innermost SVG document fragment. The meaning depends on the - * situation: - * - * * If the initial view was a "standard" view, then: - * o the values for viewBox, preserveAspectRatio and zoomAndPan within - * currentView will match the values for the corresponding DOM attributes that - * are on SVGSVGElement directly - * o the values for transform and viewTarget within currentView will be null - * * If the initial view was a link into a 'view' element, then: - * o the values for viewBox, preserveAspectRatio and zoomAndPan within - * currentView will correspond to the corresponding attributes for the given - * 'view' element - * o the values for transform and viewTarget within currentView will be null - * * If the initial view was a link into another element(i.e., other than a - * 'view'), then: - * o the values for viewBox, preserveAspectRatio and zoomAndPan within - * currentView will match the values for the corresponding DOM attributes that - * are on SVGSVGElement directly for the closest ancestor 'svg' element - * o the values for transform within currentView will be null - * o the viewTarget within currentView will represent the target of the link - * * If the initial view was a link into the SVG document fragment using an SVG - * view specification fragment identifier(i.e., #svgView(...)), then: - * o the values for viewBox, preserveAspectRatio, zoomAndPan, transform and - * viewTarget within currentView will correspond to the values from the SVG view - * specification fragment identifier - * - */ -SVGViewSpec getCurrentView() -{ -} - - -/** - * This attribute indicates the current scale factor relative to the initial view - * to take into account user magnification and panning operations, as described - * under Magnification and panning. DOM attributes currentScale and - * currentTranslate are equivalent to the 2x3 matrix [a b c d e f] = - * [currentScale 0 0 currentScale currentTranslate.x currentTranslate.y]. If - * "magnification" is enabled(i.e., zoomAndPan="magnify"), then the effect is as - * if an extra transformation were placed at the outermost level on the SVG - * document fragment(i.e., outside the outermost 'svg' element). - */ -double getCurrentScale() -{ -} - -/** - * Set the value above. - */ -void setCurrentScale(double val) throw (DOMException) -{ -} - -/** - * The corresponding translation factor that takes into account - * user "magnification". - */ -SVGPoint getCurrentTranslate() -{ -} - -/** - * Takes a time-out value which indicates that redraw shall not occur until:(a) - * the corresponding unsuspendRedraw(suspend_handle_id) call has been made,(b) - * an unsuspendRedrawAll() call has been made, or(c) its timer has timed out. In - * environments that do not support interactivity(e.g., print media), then - * redraw shall not be suspended. suspend_handle_id = - * suspendRedraw(max_wait_milliseconds) and unsuspendRedraw(suspend_handle_id) - * must be packaged as balanced pairs. When you want to suspend redraw actions as - * a collection of SVG DOM changes occur, then precede the changes to the SVG DOM - * with a method call similar to suspend_handle_id = - * suspendRedraw(max_wait_milliseconds) and follow the changes with a method call - * similar to unsuspendRedraw(suspend_handle_id). Note that multiple - * suspendRedraw calls can be used at once and that each such method call is - * treated independently of the other suspendRedraw method calls. - */ -unsigned long suspendRedraw(unsigned long max_wait_milliseconds) -{ -} - -/** - * Cancels a specified suspendRedraw() by providing a unique suspend_handle_id. - */ -void unsuspendRedraw(unsigned long suspend_handle_id) throw (DOMException) -{ -} - -/** - * Cancels all currently active suspendRedraw() method calls. This method is most - * useful at the very end of a set of SVG DOM calls to ensure that all pending - * suspendRedraw() method calls have been cancelled. - */ -void unsuspendRedrawAll() -{ -} - -/** - * In rendering environments supporting interactivity, forces the user agent to - * immediately redraw all regions of the viewport that require updating. - */ -void forceRedraw() -{ -} - -/** - * Suspends(i.e., pauses) all currently running animations that are defined - * within the SVG document fragment corresponding to this 'svg' element, causing - * the animation clock corresponding to this document fragment to stand still - * until it is unpaused. - */ -void pauseAnimations() -{ -} - -/** - * Unsuspends(i.e., unpauses) currently running animations that are defined - * within the SVG document fragment, causing the animation clock to continue from - * the time at which it was suspended. - */ -void unpauseAnimations() -{ -} - -/** - * Returns true if this SVG document fragment is in a paused state. - */ -bool animationsPaused() -{ -} - -/** - * Returns the current time in seconds relative to the start time for - * the current SVG document fragment. - */ -double getCurrentTime() -{ -} - -/** - * Adjusts the clock for this SVG document fragment, establishing - * a new current time. - */ -void setCurrentTime(double seconds) -{ -} - -/** - * Returns the list of graphics elements whose rendered content intersects the - * supplied rectangle, honoring the 'pointer-events' property value on each - * candidate graphics element. - */ -NodeList getIntersectionList(const SVGRect &rect, - const SVGElementPtr referenceElement) -{ -} - -/** - * Returns the list of graphics elements whose rendered content is entirely - * contained within the supplied rectangle, honoring the 'pointer-events' - * property value on each candidate graphics element. - */ -NodeList getEnclosureList(const SVGRect &rect, - const SVGElementPtr referenceElement) -{ -} - -/** - * Returns true if the rendered content of the given element intersects the - * supplied rectangle, honoring the 'pointer-events' property value on each - * candidate graphics element. - */ -bool checkIntersection(const SVGElementPtr element, const SVGRect &rect) -{ -} - -/** - * Returns true if the rendered content of the given element is entirely - * contained within the supplied rectangle, honoring the 'pointer-events' - * property value on each candidate graphics element. - */ -bool checkEnclosure(const SVGElementPtr element, const SVGRect &rect) -{ -} - -/** - * Unselects any selected objects, including any selections of text - * strings and type-in bars. - */ -void deselectAll() -{ -} - -/** - * Creates an SVGNumber object outside of any document trees. The object - * is initialized to a value of zero. - */ -SVGNumber createSVGNumber() -{ -} - -/** - * Creates an SVGLength object outside of any document trees. The object - * is initialized to the value of 0 user units. - */ -SVGLength createSVGLength() -{ -} - -/** - * Creates an SVGAngle object outside of any document trees. The object - * is initialized to the value 0 degrees(unitless). - */ -SVGAngle createSVGAngle() -{ -} - -/** - * Creates an SVGPoint object outside of any document trees. The object - * is initialized to the point(0,0) in the user coordinate system. - */ -SVGPoint createSVGPoint() -{ -} - -/** - * Creates an SVGMatrix object outside of any document trees. The object - * is initialized to the identity matrix. - */ -SVGMatrix createSVGMatrix() -{ -} - -/** - * Creates an SVGRect object outside of any document trees. The object - * is initialized such that all values are set to 0 user units. - */ -SVGRect createSVGRect() -{ -} - -/** - * Creates an SVGTransform object outside of any document trees. - * The object is initialized to an identity matrix transform - * (SVG_TRANSFORM_MATRIX). - */ -SVGTransform createSVGTransform() -{ -} - -/** - * Creates an SVGTransform object outside of any document trees. - * The object is initialized to the given matrix transform - * (i.e., SVG_TRANSFORM_MATRIX). - */ -SVGTransform createSVGTransformFromMatrix(const SVGMatrix &matrix) -{ -} - -/** - * Searches this SVG document fragment(i.e., the search is restricted to a - * subset of the document tree) for an Element whose id is given by elementId. If - * an Element is found, that Element is returned. If no such element exists, - * returns null. Behavior is not defined if more than one element has this id. - */ -ElementPtr getElementById(const DOMString& elementId) -{ -} - - -//#################################################################### -//# SVGTextElement -//#################################################################### - - -//#################################################################### -//# SVGTextContentElement -//#################################################################### - - -/** - * Corresponds to attribute textLength on the given element. - */ -SVGAnimatedLength getTextLength() -{ -} - - -/** - * Corresponds to attribute lengthAdjust on the given element. The value must be - * one of the length adjust constants specified above. - */ -SVGAnimatedEnumeration getLengthAdjust() -{ -} - - -/** - * Returns the total number of characters to be rendered within the current - * element. Includes characters which are included via a 'tref' reference. - */ -long getNumberOfChars() -{ -} - -/** - * The total sum of all of the advance values from rendering all of the - * characters within this element, including the advance value on the glyphs - *(horizontal or vertical), the effect of properties 'kerning', 'letter-spacing' - * and 'word-spacing' and adjustments due to attributes dx and dy on 'tspan' - * elements. For non-rendering environments, the user agent shall make reasonable - * assumptions about glyph metrics. - */ -double getComputedTextLength() -{ -} - -/** - * The total sum of all of the advance values from rendering the specified - * substring of the characters, including the advance value on the glyphs - *(horizontal or vertical), the effect of properties 'kerning', 'letter-spacing' - * and 'word-spacing' and adjustments due to attributes dx and dy on 'tspan' - * elements. For non-rendering environments, the user agent shall make reasonable - * assumptions about glyph metrics. - */ -double getSubStringLength(unsigned long charnum, unsigned long nchars) - throw (DOMException) -{ -} - -/** - * Returns the current text position before rendering the character in the user - * coordinate system for rendering the glyph(s) that correspond to the specified - * character. The current text position has already taken into account the - * effects of any inter-character adjustments due to properties 'kerning', - * 'letter-spacing' and 'word-spacing' and adjustments due to attributes x, y, dx - * and dy. If multiple consecutive characters are rendered inseparably(e.g., as - * a single glyph or a sequence of glyphs), then each of the inseparable - * characters will return the start position for the first glyph. - */ -SVGPoint getStartPositionOfChar(unsigned long charnum) throw (DOMException) -{ -} - -/** - * Returns the current text position after rendering the character in the user - * coordinate system for rendering the glyph(s) that correspond to the specified - * character. This current text position does not take into account the effects - * of any inter-character adjustments to prepare for the next character, such as - * properties 'kerning', 'letter-spacing' and 'word-spacing' and adjustments due - * to attributes x, y, dx and dy. If multiple consecutive characters are rendered - * inseparably(e.g., as a single glyph or a sequence of glyphs), then each of - * the inseparable characters will return the end position for the last glyph. - */ -SVGPoint getEndPositionOfChar(unsigned long charnum) throw (DOMException) -{ -} - -/** - * Returns a tightest rectangle which defines the minimum and maximum X and Y - * values in the user coordinate system for rendering the glyph(s) that - * correspond to the specified character. The calculations assume that all glyphs - * occupy the full standard glyph cell for the font. If multiple consecutive - * characters are rendered inseparably(e.g., as a single glyph or a sequence of - * glyphs), then each of the inseparable characters will return the same extent. - */ -SVGRect getExtentOfChar(unsigned long charnum) throw (DOMException) -{ -} - -/** - * Returns the rotation value relative to the current user coordinate system used - * to render the glyph(s) corresponding to the specified character. If multiple - * glyph(s) are used to render the given character and the glyphs each have - * different rotations(e.g., due to text-on-a-path), the user agent shall return - * an average value(e.g., the rotation angle at the midpoint along the path for - * all glyphs used to render this character). The rotation value represents the - * rotation that is supplemental to any rotation due to properties - * 'glyph-orientation-horizontal' and 'glyph-orientation-vertical'; thus, any - * glyph rotations due to these properties are not included into the returned - * rotation value. If multiple consecutive characters are rendered inseparably - *(e.g., as a single glyph or a sequence of glyphs), then each of the - * inseparable characters will return the same rotation value. - */ -double getRotationOfChar(unsigned long charnum) throw (DOMException) -{ -} - -/** - * Returns the index of the character whose corresponding glyph cell bounding box - * contains the specified point. The calculations assume that all glyphs occupy - * the full standard glyph cell for the font. If no such character exists, a - * value of -1 is returned. If multiple such characters exist, the character - * within the element whose glyphs were rendered last(i.e., take into account - * any reordering such as for bidirectional text) is used. If multiple - * consecutive characters are rendered inseparably(e.g., as a single glyph or a - * sequence of glyphs), then the user agent shall allocate an equal percentage of - * the text advance amount to each of the contributing characters in determining - * which of the characters is chosen. - */ -long getCharNumAtPosition(const SVGPoint &point) -{ -} - -/** - * Causes the specified substring to be selected just as if the user - * selected the substring interactively. - */ -void selectSubString(unsigned long charnum, unsigned long nchars) - throw (DOMException) -{ -} - - - - - -//#################################################################### -//# SVGTextPathElement -//#################################################################### - - -/** - * Corresponds to attribute startOffset on the given 'textPath' element. - */ -SVGAnimatedLength getStartOffset() -{ -} - -/** - * Corresponds to attribute method on the given 'textPath' element. The value - * must be one of the method type constants specified above. - */ -SVGAnimatedEnumeration getMethod() -{ -} - -/** - * Corresponds to attribute spacing on the given 'textPath' element. - * The value must be one of the spacing type constants specified above. - */ -SVGAnimatedEnumeration getSpacing() -{ -} - - -//#################################################################### -//# SVGTextPositioningElement -//#################################################################### - - -/** - * Corresponds to attribute x on the given element. - */ -SVGAnimatedLength getX() -{ -} - -/** - * Corresponds to attribute y on the given element. - */ -SVGAnimatedLength getY() -{ -} - -/** - * Corresponds to attribute dx on the given element. - */ -SVGAnimatedLength getDx() -{ -} - -/** - * Corresponds to attribute dy on the given element. - */ -SVGAnimatedLength getDy() -{ -} - - -/** - * Corresponds to attribute rotate on the given element. - */ -SVGAnimatedNumberList getRotate() -{ -} - - -//#################################################################### -//# SVGTitleElement -//#################################################################### - -//#################################################################### -//# SVGTRefElement -//#################################################################### - -//#################################################################### -//# SVGTSpanElement -//#################################################################### - -//#################################################################### -//# SVGSwitchElement -//#################################################################### - -//#################################################################### -//# SVGUseElement -//#################################################################### - -/** - * Corresponds to attribute x on the given 'use' element. - */ -SVGAnimatedLength getX() -{ -} - -/** - * Corresponds to attribute y on the given 'use' element. - */ -SVGAnimatedLength getY() -{ -} - -/** - * Corresponds to attribute width on the given 'use' element. - */ -SVGAnimatedLength getWidth() -{ -} - -/** - * Corresponds to attribute height on the given 'use' element. - */ -SVGAnimatedLength getHeight() -{ -} - -/** - * The root of the "instance tree". See description of SVGElementInstance for - * a discussion on the instance tree. - * */ -SVGElementInstance getInstanceRoot() -{ -} - -/** - * If the 'href' attribute is being animated, contains the current animated root - * of the "instance tree". If the 'href' attribute is not currently being - * animated, contains the same value as 'instanceRoot'. The root of the "instance - * tree". See description of SVGElementInstance for a discussion on the instance - * tree. - */ -SVGElementInstance getAnimatedInstanceRoot() -{ -} - - -//#################################################################### -//# SVGVKernElement -//#################################################################### - -//#################################################################### -//# SVGViewElement -//#################################################################### - - -/** - * - */ -SVGStringList getViewTarget(); - - - - -//################## -//# Non-API methods -//################## - - -/** - * - */ -SVGElement::~SVGElement() -{ -} - - - - -/*######################################################################### -## SVGDocument -#########################################################################*/ - - -/** - * The title of a document as specified by the title sub-element of the 'svg' - * root element(i.e., Here is the title...) - */ -DOMString SVGDocument::getTitle() -{ -} - -/** - * Returns the URI of the page that linked to this page. The value is an empty - * string if the user navigated to the page directly(not through a link, but, - * for example, via a bookmark). - */ -DOMString SVGDocument::getReferrer() -{ -} - - -/** - * The domain name of the server that served the document, or a null string if - * the server cannot be identified by a domain name. - */ -DOMString SVGDocument::getDomain() -{ -} - - -/** - * The complete URI of the document. - */ -DOMString SVGDocument::getURL() -{ -} - - -/** - * The root 'svg' element in the document hierarchy. - */ -SVGElementPtr SVGDocument::getRootElement() -{ -} - - -/** - * Overloaded from Document - * - */ -ElementPtr SVGDocument::createElement(const DOMString &tagName) -{ - ElementPtr ptr; - return ptr; -} - - -/** - * Overloaded from Document - * - */ -ElementPtr SVGDocument::createElementNS(const DOMString &tagName, - const DOMString &namespaceURI) -{ - ElementPtr ptr; - return ptr; -} - - -/** - * The root 'svg' element in the document hierarchy. - */ -SVGElementPtr SVGDocument::getRootElement() -{ -} - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SVGDocument::~SVGDocument() -{ -} - - - -/*######################################################################### -## GetSVGDocument -#########################################################################*/ - - -/** - * Returns the SVGDocument object for the referenced SVG document. - */ -SVGDocumentPtr GetSVGDocument::getSVGDocument() - throw (DOMException) -{ - SVGDocumentPtr ptr; - return ptr; -} - -//################## -//# Non-API methods -//################## - -/** - * - */ -GetSVGDocument::~GetSVGDocument() -{ -} - - - - - - - -} //namespace svg -} //namespace dom -} //namespace w3c -} //namespace org - -#endif // __SVG_H__ -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - +/** + * Phoebe DOM Implementation. + * + * This is a C++ approximation of the W3C DOM model, which follows + * fairly closely the specifications in the various .idl files, copies of + * which are provided for reference. Most important is this one: + * + * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html + * + * Authors: + * Bob Jamison + * + * Copyright(C) 2005-2008 Bob Jamison + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or(at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * ======================================================================= + * NOTES + * + * This API follows: + * http://www.w3.org/TR/SVG11/svgdom.html + * + * This file defines the main SVG-DOM Node types. Other non-Node types are + * defined in svgtypes.h. + * + */ + +#include "svg.h" + +#include + + +namespace org +{ +namespace w3c +{ +namespace dom +{ +namespace svg +{ + + + +//######################################################################## +//######################################################################## +//######################################################################## +//# I N T E R F A C E S +//######################################################################## +//######################################################################## +//######################################################################## + + + +/*######################################################################### +## SVGMatrix +#########################################################################*/ + +/** + * + */ +double SVGMatrix::getA() +{ + return a; +} + +/** + * + */ +void SVGMatrix::setA(double val) throw (DOMException) +{ + a = val; +} + +/** + * + */ +double SVGMatrix::getB() +{ + return b; +} + +/** + * + */ +void SVGMatrix::setB(double val) throw (DOMException) +{ + b = val; +} + +/** + * + */ +double SVGMatrix::getC() +{ + return c; +} + +/** + * + */ +void SVGMatrix::setC(double val) throw (DOMException) +{ + c = val; +} + +/** + * + */ +double SVGMatrix::getD() +{ + return d; +} + +/** + * + */ +void SVGMatrix::setD(double val) throw (DOMException) +{ + d = val; +} + +/** + * + */ +double SVGMatrix::getE() +{ + return e; +} + +/** + * + */ +void SVGMatrix::setE(double val) throw (DOMException) +{ + e = val; +} + +/** + * + */ +double SVGMatrix::getF() +{ + return f; +} + +/** + * + */ +void SVGMatrix::setF(double val) throw (DOMException) +{ + f = val; +} + + +/** + * Return the result of postmultiplying this matrix with another. + */ +SVGMatrix SVGMatrix::multiply(const SVGMatrix &other) +{ + SVGMatrix result; + result.a = a * other.a + c * other.b; + result.b = b * other.a + d * other.b; + result.c = a * other.c + c * other.d; + result.d = b * other.c + d * other.d; + result.e = a * other.e + c * other.f + e; + result.f = b * other.e + d * other.f + f; + return result; +} + +/** + * Calculate the inverse of this matrix + * + */ +SVGMatrix SVGMatrix::inverse() throw (SVGException) +{ + /*########################################### + The determinant of a 3x3 matrix E + (let's use our own notation for a bit) + + A B C + D E F + G H I + is + AEI - AFH - BDI + BFG + CDH - CEG + + Since in our affine transforms, G and H==0 and I==1, + this reduces to: + AE - BD + In SVG's naming scheme, that is: a * d - c * b . SIMPLE! + + In a similar method of attack, SVG's adjunct matrix is: + + d -c cf-ed + -b a eb-af + 0 0 ad-cb + + To get the inverse matrix, we divide the adjunct matrix by + the determinant. Notice that (ad-cb)/(ad-cb)==1. Very cool. + So what we end up with is this: + + a = d/(ad-cb) c = -c/(ad-cb) e = (cf-ed)/(ad-cb) + b = -b/(ad-cb) d = a/(ad-cb) f = (eb-af)/(ad-cb) + + (Since this would be in all SVG-DOM implementations, + somebody needed to document this! ^^) + #############################################*/ + + SVGMatrix result; + double determinant = a * d - c * b; + if (determinant < 1.0e-18)//invertible? + { + result.identity();//cop out + return result; + } + + double idet = 1.0 / determinant; + result.a = d * idet; + result.b = -b * idet; + result.c = -c * idet; + result.d = a * idet; + result.e = (c*f - e*d) * idet; + result.f = (e*b - a*f) * idet; + return result; +} + +/** + * Equivalent to multiplying by: + * | 1 0 x | + * | 0 1 y | + * | 0 0 1 | + * + */ +SVGMatrix SVGMatrix::translate(double x, double y) +{ + SVGMatrix result; + result.a = a; + result.b = b; + result.c = c; + result.d = d; + result.e = a * x + c * y + e; + result.f = b * x + d * y + f; + return result; +} + +/** + * Equivalent to multiplying by: + * | scale 0 0 | + * | 0 scale 0 | + * | 0 0 1 | + * + */ +:SVGMatrix SVGMatrix:scale(double scale) +{ + SVGMatrix result; + result.a = a * scale; + result.b = b * scale; + result.c = c * scale; + result.d = d * scale; + result.e = e; + result.f = f; + return result; +} + +/** + * Equivalent to multiplying by: + * | scaleX 0 0 | + * | 0 scaleY 0 | + * | 0 0 1 | + * + */ +SVGMatrix SVGMatrix::scaleNonUniform(double scaleX, + double scaleY) +{ + SVGMatrix result; + result.a = a * scaleX; + result.b = b * scaleX; + result.c = c * scaleY; + result.d = d * scaleY; + result.e = e; + result.f = f; + return result; +} + +/** + * Equivalent to multiplying by: + * | cos(a) -sin(a) 0 | + * | sin(a) cos(a) 0 | + * | 0 0 1 | + * + */ +SVGMatrix SVGMatrix::rotate (double angle) +{ + double sina = sin(angle); + double msina = -sina; + double cosa = cos(angle); + SVGMatrix result; + result.a = a * cosa + c * sina; + result.b = b * cosa + d + sina; + result.c = a * msina + c * cosa; + result.d = b * msina + d * cosa; + result.e = e; + result.f = f; + return result; +} + +/** + * Equivalent to multiplying by: + * | cos(a) -sin(a) 0 | + * | sin(a) cos(a) 0 | + * | 0 0 1 | + * In this case, angle 'a' is computed as the artangent + * of the slope y/x . It is negative if the slope is negative. + */ +SVGMatrix SVGMatrix::rotateFromVector(double x, double y) + throw (SVGException) +{ + double angle = atan(y / x); + if (y < 0.0) + angle = -angle; + SVGMatrix result; + double sina = sin(angle); + double msina = -sina; + double cosa = cos(angle); + result.a = a * cosa + c * sina; + result.b = b * cosa + d + sina; + result.c = a * msina + c * cosa; + result.d = b * msina + d * cosa; + result.e = e; + result.f = f; + return result; +} + +/** + * Equivalent to multiplying by: + * | -1 0 0 | + * | 0 1 0 | + * | 0 0 1 | + * + */ +SVGMatrix SVGMatrix::flipX() +{ + SVGMatrix result; + result.a = -a; + result.b = -b; + result.c = c; + result.d = d; + result.e = e; + result.f = f; + return result; +} + +/** + * Equivalent to multiplying by: + * | 1 0 0 | + * | 0 -1 0 | + * | 0 0 1 | + * + */ +SVGMatrix SVGMatrix::flipY() +{ + SVGMatrix result; + result.a = a; + result.b = b; + result.c = -c; + result.d = -d; + result.e = e; + result.f = f; + return result; +} + +/** + * | 1 tan(a) 0 | + * | 0 1 0 | + * | 0 0 1 | + * + */ +SVGMatrix SVGMatrix::skewX(double angle) +{ + double tana = tan(angle); + SVGMatrix result; + result.a = a; + result.b = b; + result.c = a * tana + c; + result.d = b * tana + d; + result.e = e; + result.f = f; + return result; +} + +/** + * Equivalent to multiplying by: + * | 1 0 0 | + * | tan(a) 1 0 | + * | 0 0 1 | + * + */ +SVGMatrix::SVGMatrix SVGMatrix::skewY(double angle) +{ + double tana = tan(angle); + SVGMatrix result; + result.a = a + c * tana; + result.b = b + d * tana; + result.c = c; + result.d = d; + result.e = e; + result.f = f; + return result; +} + + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGMatrix::SVGMatrix() +{ + identity(); +} + +/** + * + */ +SVGMatrix::SVGMatrix(double aArg, double bArg, double cArg, + double dArg, double eArg, double fArg) +{ + a = aArg; b = bArg; c = cArg; + d = dArg; e = eArg; f = fArg; +} + +/** + * Copy constructor + */ +SVGMatrix::SVGMatrix(const SVGMatrix &other) +{ + a = other.a; + b = other.b; + c = other.c; + d = other.d; + e = other.e; + f = other.f; +} + + + +/** + * + */ +SVGMatrix::~SVGMatrix() +{ +} + +/* + * Set to the identity matrix + */ +void SVGMatrix::identity() +{ + a = 1.0; + b = 0.0; + c = 0.0; + d = 1.0; + e = 0.0; + f = 0.0; +} + + +/*######################################################################### +## SVGTransform +#########################################################################*/ + +/** + * + */ +unsigned short SVGTransform::getType() +{ + return type; +} + + +/** + * + */ +SVGMatrix SVGTransform::getMatrix() +{ + return matrix; +} + +/** + * + */ +double SVGTransform::getAngle() +{ + return angle; +} + + +/** + * + */ +void SVGTransform::setMatrix(const SVGMatrix &matrixArg) +{ + type = SVG_TRANSFORM_MATRIX; + matrix = matrixArg; +} + +/** + * + */ +void SVGTransform::setTranslate(double tx, double ty) +{ + type = SVG_TRANSFORM_TRANSLATE; + matrix.setA(1.0); + matrix.setB(0.0); + matrix.setC(0.0); + matrix.setD(1.0); + matrix.setE(tx); + matrix.setF(ty); +} + +/** + * + */ +void SVGTransform::setScale(double sx, double sy) +{ + type = SVG_TRANSFORM_SCALE; + matrix.setA(sx); + matrix.setB(0.0); + matrix.setC(0.0); + matrix.setD(sy); + matrix.setE(0.0); + matrix.setF(0.0); +} + +/** + * + */ +void SVGTransform::setRotate(double angleArg, double cx, double cy) +{ + angle = angleArg; + setTranslate(cx, cy); + type = SVG_TRANSFORM_ROTATE; + matrix.rotate(angle); +} + +/** + * + */ +void SVGTransform::setSkewX(double angleArg) +{ + angle = angleArg; + type = SVG_TRANSFORM_SKEWX; + matrix.identity(); + matrix.skewX(angle); +} + +/** + * + */ +void SVGTransform::setSkewY(double angleArg) +{ + angle = angleArg; + type = SVG_TRANSFORM_SKEWY; + matrix.identity(); + matrix.skewY(angle); +} + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGTransform::SVGTransform() +{ + type = SVG_TRANSFORM_UNKNOWN; + angle = 0.0; +} + +/** + * + */ +SVGTransform::SVGTransform(const SVGTransform &other) +{ + type = other.type; + angle = other.angle; + matrix = other.matrix; +} + +/** + * + */ +~SVGTransform::SVGTransform() +{ +} + + + +/*######################################################################### +## SVGNumber +#########################################################################*/ + +/** + * + */ +double SVGNumber::getValue() +{ + return value; +} + +/** + * + */ +void SVGNumber::setValue(double val) throw (DOMException) +{ + value = val; +} + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGNumber::SVGNumber() +{ + value = 0.0; +} + +/** + * + */ +SVGNumber::SVGNumber(const SVGNumber &other) +{ + value = other.value; +} + +/** + * + */ +SVGNumber::~SVGNumber() +{ +} + + + +/*######################################################################### +## SVGLength +#########################################################################*/ + + +/** + * + */ +unsigned short SVGLength::getUnitType() +{ + return unitType; +} + +/** + * + */ +double SVGLength::getValue() +{ + return value; +} + +/** + * + */ +void SVGLength::setValue(double val) throw (DOMException) +{ + value = val; +} + +/** + * + */ +double SVGLength::getValueInSpecifiedUnits() +{ + double result = 0.0; + //fill this in + return result; +} + +/** + * + */ +void SVGLength::setValueInSpecifiedUnits(double /*val*/) + throw (DOMException) +{ + //fill this in +} + +/** + * + */ +DOMString SVGLength::getValueAsString() +{ + DOMString ret; + char buf[32]; + snprintf(buf, 31, "%f", value); + ret.append(buf); + return ret; +} + +/** + * + */ +void SVGLength::setValueAsString(const DOMString& /*val*/) + throw (DOMException) +{ +} + + +/** + * + */ +void SVGLength::newValueSpecifiedUnits (unsigned short /*unitType*/, double /*val*/) +{ +} + +/** + * + */ +void SVGLength::convertToSpecifiedUnits (unsigned short /*unitType*/) +{ +} + + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGLength::SVGLength() +{ + unitType = SVG_LENGTHTYPE_UNKNOWN; + value = 0.0; +} + + +/** + * + */ +SVGLength::SVGLength(const SVGLength &other) +{ + unitType = other.unitType; + value = other.value; +} + +/** + * + */ +SVGLength::~SVGLength() +{ +} + + + + +/*######################################################################### +## SVGAngle +#########################################################################*/ + +/** + * + */ +unsigned short SVGAngle::getUnitType() +{ + return unitType; +} + +/** + * + */ +double SVGAngle::getValue() +{ + return value; +} + +/** + * + */ +void SVGAngle::setValue(double val) throw (DOMException) +{ + value = val; +} + +/** + * + */ +double SVGAngle::getValueInSpecifiedUnits() +{ + double result = 0.0; + //convert here + return result; +} + +/** + * + */ +void SVGAngle::setValueInSpecifiedUnits(double /*val*/) + throw (DOMException) +{ + //do conversion +} + +/** + * + */ +DOMString SVGAngle::getValueAsString() +{ + DOMString result; + char buf[32]; + snprintf(buf, 31, "%f", value); + result.append(buf); + return result; +} + +/** + * + */ +void SVGAngle::setValueAsString(const DOMString &/*val*/) + throw (DOMException) +{ + //convert here +} + + +/** + * + */ +void SVGAngle::newValueSpecifiedUnits (unsigned short /*unitType*/, + double /*valueInSpecifiedUnits*/) +{ + //convert here +} + +/** + * + */ +void SVGAngle::convertToSpecifiedUnits (unsigned short /*unitType*/) +{ + //convert here +} + + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGAngle::SVGAngle() +{ + unitType = SVG_ANGLETYPE_UNKNOWN; + value = 0.0; +} + +/** + * + */ +SVGAngle::SVGAngle(const SVGAngle &other) +{ + unitType = other.unitType; + value = other.value; +} + +/** + * + */ +SVGAngle::~SVGAngle() +{ +} + + + + +/*######################################################################### +## SVGICCColor +#########################################################################*/ + + +/** + * + */ +DOMString SVGICCColor::getColorProfile() +{ + return colorProfile; +} + +/** + * + */ +void SVGICCColor::setColorProfile(const DOMString &val) throw (DOMException) +{ + colorProfile = val; +} + +/** + * + */ +SVGNumberList &SVGICCColor::getColors() +{ + return colors; +} + + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGICCColor::SVGICCColor() +{ +} + +/** + * + */ +SVGICCColor::SVGICCColor(const SVGICCColor &other) +{ + colorProfile = other.colorProfile; + colors = other.colors; +} + +/** + * + */ +SVGICCColor::~SVGICCColor() +{ +} + + + +/*######################################################################### +## SVGColor +#########################################################################*/ + + + +/** + * + */ +unsigned short SVGColor::getColorType() +{ + return colorType; +} + +/** + * + */ +css::RGBColor SVGColor::getRgbColor() +{ + css::RGBColor col; + return col; +} + +/** + * + */ +SVGICCColor SVGColor::getIccColor() +{ + SVGICCColor col; + return col; +} + + +/** + * + */ +void SVGColor::setRGBColor(const DOMString& /*rgbColor*/) + throw (SVGException) +{ +} + +/** + * + */ +void SVGColor::setRGBColorICCColor(const DOMString& /*rgbColor*/, + const DOMString& /*iccColor*/) + throw (SVGException) +{ +} + +/** + * + */ +void SVGColor::setColor (unsigned short /*colorType*/, + const DOMString& /*rgbColor*/, + const DOMString& /*iccColor*/) + throw (SVGException) +{ +} + + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGColor::SVGColor() +{ + colorType = SVG_COLORTYPE_UNKNOWN; +} + +/** + * + */ +SVGColor::SVGColor(const SVGColor &other) : css::CSSValue(other) +{ + colorType = other.colorType; +} + +/** + * + */ +SVGColor::~SVGColor() +{ +} + + + +/*######################################################################### +## SVGRect +#########################################################################*/ + + +/** + * + */ +double SVGRect::getX() +{ + return x; +} + +/** + * + */ +void SVGRect::setX(double val) throw (DOMException) +{ + x = val; +} + +/** + * + */ +double SVGRect::getY() +{ + return y; +} + +/** + * + */ +void SVGRect::setY(double val) throw (DOMException) +{ + y = val; +} + +/** + * + */ +double SVGRect::getWidth() +{ + return width; +} + +/** + * + */ +void SVGRect::setWidth(double val) throw (DOMException) +{ + width = val; +} + +/** + * + */ +double SVGRect::getHeight() +{ + return height; +} + +/** + * + */ +void SVGRect::setHeight(double val) throw (DOMException) +{ + height = val; +} + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGRect::SVGRect() +{ + x = y = width = height = 0.0; +} + +/** + * + */ +SVGRect::SVGRect(const SVGRect &other) +{ + x = other.x; + y = other.y; + width = other.width; + height = other.height; +} + +/** + * + */ +SVGRect::~SVGRect() +{ +} + + + +/*######################################################################### +## SVGPoint +#########################################################################*/ + + +/** + * + */ +double SVGPoint::getX() +{ + return x; +} + +/** + * + */ +void SVGPoint::setX(double val) throw (DOMException) +{ + x = val; +} + +/** + * + */ +double SVGPoint::getY() +{ + return y; +} + +/** + * + */ +void SVGPoint::setY(double val) throw (DOMException) +{ + y = val; +} + +/** + * + */ +SVGPoint SVGPoint::matrixTransform(const SVGMatrix &/*matrix*/) +{ + SVGPoint point; + return point; +} + + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGPoint::SVGPoint() +{ + x = y = 0; +} + +/** + * + */ +SVGPoint::SVGPoint(const SVGPoint &other) +{ + x = other.x; + y = other.y; +} + +/** + * + */ +SVGPoint::~SVGPoint() +{ +} + + +/*######################################################################### +## SVGUnitTypes +#########################################################################*/ + +/** + * + */ +SVGUnitTypes::SVGUnitTypes() +{ +} + + + +/** + * + */ +SVGUnitTypes::~SVGUnitTypes() +{ +} + + +/*######################################################################### +## SVGStylable +#########################################################################*/ + + +/** + * + */ +SVGAnimatedString SVGStylable::getClassName() +{ + return className; +} + +/** + * + */ +css::CSSStyleDeclaration SVGStylable::getStyle() +{ + return style; +} + + +/** + * + */ +css::CSSValue SVGStylable::getPresentationAttribute(const DOMString& /*name*/) +{ + css::CSSValue val; + //perform a lookup + return val; +} + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGStylable::SVGStylable() +{ +} + +/** + * + */ +SVGStylable::SVGStylable(const SVGStylable &other) +{ + className = other.className; + style = other.style; +} + +/** + * + */ +SVGStylable::~SVGStylable() +{ +} + + + + +/*######################################################################### +## SVGLocatable +#########################################################################*/ + + +/** + * + */ +SVGElementPtr SVGLocatable::getNearestViewportElement() +{ + SVGElementPtr result; + return result; +} + +/** + * + */ +SVGElementPtr SVGLocatable::getFarthestViewportElement() +{ + SVGElementPtr result; + return result; +} + +/** + * + */ +SVGRect SVGLocatable::getBBox () +{ + return bbox; +} + +/** + * + */ +SVGMatrix SVGLocatable::getCTM () +{ + return ctm; +} + +/** + * + */ +SVGMatrix SVGLocatable::getScreenCTM () +{ + return screenCtm; +} + +/** + * + */ +SVGMatrix SVGLocatable::getTransformToElement (const SVGElement &/*element*/) + throw (SVGException) +{ + SVGMatrix result; + //do calculations + return result; +} + + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGLocatable::SVGLocatable() +{ +} + +/** + * + */ +SVGLocatable::SVGLocatable(const SVGLocatable &/*other*/) +{ +} + +/** + * + */ +SVGLocatable::~SVGLocatable() +{ +} + + +/*######################################################################### +## SVGTransformable +#########################################################################*/ + + +/** + * + */ +SVGAnimatedTransformList &SVGTransformable::getTransform() +{ + return transforms; +} + + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGTransformable::SVGTransformable() {} + +/** + * + */ +SVGTransformable::SVGTransformable(const SVGTransformable &other) : SVGLocatable(other) +{ + transforms = other.transforms; +} + +/** + * + */ +SVGTransformable::~SVGTransformable() +{ +} + + + + + + + +/*######################################################################### +## SVGTests +#########################################################################*/ + + +/** + * + */ +SVGStringList &SVGTests::getRequiredFeatures() +{ + return requiredFeatures; +} + +/** + * + */ +SVGStringList &SVGTests::getRequiredExtensions() +{ + return requiredExtensions; +} + +/** + * + */ +SVGStringList &SVGTests::getSystemLanguage() +{ + return systemLanguage; +} + + +/** + * + */ +bool SVGTests::hasExtension (const DOMString& /*extension*/) +{ + return false; +} + + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGTests::SVGTests() +{ +} + +/** + * + */ +SVGTests::SVGTests(const SVGTests &other) +{ + requiredFeatures = other.requiredFeatures; + requiredExtensions = other.requiredExtensions; + systemLanguage = other.systemLanguage; +} + +/** + * + */ +SVGTests::~SVGTests() +{ +} + + + +/*######################################################################### +## SVGLangSpace +#########################################################################*/ + + +/** + * + */ +DOMString SVGLangSpace::getXmllang() +{ + return xmlLang; +} + +/** + * + */ +void SVGLangSpace::setXmllang(const DOMString &val) throw (DOMException) +{ + xmlLang = val; +} + +/** + * + */ +DOMString SVGLangSpace::getXmlspace() +{ + return xmlSpace; +} + +/** + * + */ +void SVGLangSpace::setXmlspace(const DOMString &val) + throw (DOMException) +{ + xmlSpace = val; +} + + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGLangSpace::SVGLangSpace() +{ +} + +/** + * + */ +SVGLangSpace::SVGLangSpace(const SVGLangSpace &other) +{ + xmlLang = other.xmlLang; + xmlSpace = other.xmlSpace; +} + +/** + * + */ +SVGLangSpace::~SVGLangSpace() +{ +} + + + +/*######################################################################### +## SVGExternalResourcesRequired +#########################################################################*/ + +/** + * + */ +SVGAnimatedBoolean SVGExternalResourcesRequired::getExternalResourcesRequired() +{ + return required; +} + + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGExternalResourcesRequired::SVGExternalResourcesRequired() +{ +} + + +/** + * + */ +SVGExternalResourcesRequired::SVGExternalResourcesRequired( + const SVGExternalResourcesRequired &other) +{ + required = other.required; +} + +/** + * + */ +SVGExternalResourcesRequired::~SVGExternalResourcesRequired() {} + + +/*######################################################################### +## SVGPreserveAspectRatio +#########################################################################*/ + +/** + * + */ +unsigned short SVGPreserveAspectRatio::getAlign() +{ + return align; +} + +/** + * + */ +void SVGPreserveAspectRatio::setAlign(unsigned short val) throw (DOMException) +{ + align = val; +} + +/** + * + */ +unsigned short SVGPreserveAspectRatio::getMeetOrSlice() +{ + return meetOrSlice; +} + +/** + * + */ +void SVGPreserveAspectRatio::setMeetOrSlice(unsigned short val) throw (DOMException) +{ + meetOrSlice = val; +} + + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGPreserveAspectRatio::SVGPreserveAspectRatio() +{ + align = SVG_PRESERVEASPECTRATIO_UNKNOWN; + meetOrSlice = SVG_MEETORSLICE_UNKNOWN; +} + +/** + * + */ +SVGPreserveAspectRatio::SVGPreserveAspectRatio(const SVGPreserveAspectRatio &other) +{ + align = other.align; + meetOrSlice = other.meetOrSlice; +} + +/** + * + */ +SVGPreserveAspectRatio::~SVGPreserveAspectRatio() +{ +} + + + +/*######################################################################### +## SVGFitToViewBox +#########################################################################*/ + + +/** + * + */ +SVGAnimatedRect SVGFitToViewBox::getViewBox() +{ + return viewBox; +} + +/** + * + */ +SVGAnimatedPreserveAspectRatio SVGFitToViewBox::getPreserveAspectRatio() +{ + return preserveAspectRatio; +} + + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGFitToViewBox::SVGFitToViewBox() +{ +} + +/** + * + */ + +SVGFitToViewBox::SVGFitToViewBox(const SVGFitToViewBox &other) +{ + viewBox = other.viewBox; + preserveAspectRatio = other.preserveAspectRatio; +} + +/** + * + */ +SVGFitToViewBox::~SVGFitToViewBox() +{ +} + +/*######################################################################### +## SVGZoomAndPan +#########################################################################*/ + +/** + * + */ +unsigned short SVGZoomAndPan::getZoomAndPan() +{ + return zoomAndPan; +} + +/** + * + */ +void SVGZoomAndPan::setZoomAndPan(unsigned short val) throw (DOMException) +{ + zoomAndPan = val; +} + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGZoomAndPan::SVGZoomAndPan() +{ + zoomAndPan = SVG_ZOOMANDPAN_UNKNOWN; +} + +/** + * + */ +SVGZoomAndPan::SVGZoomAndPan(const SVGZoomAndPan &other) +{ + zoomAndPan = other.zoomAndPan; +} + +/** + * + */ +SVGZoomAndPan::~SVGZoomAndPan() +{ +} + + +/*######################################################################### +## SVGViewSpec +#########################################################################*/ + +/** + * + */ +SVGTransformList SVGViewSpec::getTransform() +{ + return transform; +} + +/** + * + */ +SVGElementPtr SVGViewSpec::getViewTarget() +{ + return viewTarget; +} + +/** + * + */ +DOMString SVGViewSpec::getViewBoxString() +{ + DOMString ret; + return ret; +} + +/** + * + */ +DOMString SVGViewSpec::getPreserveAspectRatioString() +{ + DOMString ret; + return ret; +} + +/** + * + */ +DOMString SVGViewSpec::getTransformString() +{ + DOMString ret; + return ret; +} + +/** + * + */ +DOMString SVGViewSpec::getViewTargetString() +{ + DOMString ret; + return ret; +} + + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGViewSpec::SVGViewSpec() +{ + viewTarget = NULL; +} + +/** + * + */ +SVGViewSpec::SVGViewSpec(const SVGViewSpec &other) : SVGZoomAndPan(other), SVGFitToViewBox(other) +{ + viewTarget = other.viewTarget; + transform = other.transform; +} + +/** + * + */ +SVGViewSpec::~SVGViewSpec() +{ +} + + + +/*######################################################################### +## SVGURIReference +#########################################################################*/ + + +/** + * + */ +SVGAnimatedString SVGURIReference::getHref() +{ + return href; +} + + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGURIReference::SVGURIReference() +{ +} + +/** + * + */ +SVGURIReference::SVGURIReference(const SVGURIReference &other) +{ + href = other.href; +} + +/** + * + */ +SVGURIReference::~SVGURIReference() +{ +} + + + +/*######################################################################### +## SVGCSSRule +#########################################################################*/ + + + + +/*######################################################################### +## SVGRenderingIntent +#########################################################################*/ + + + + + +/*######################################################################### +## SVGPathSeg +#########################################################################*/ + +static const char *pathSegLetters[] = +{ + '@', // PATHSEG_UNKNOWN, + 'z', // PATHSEG_CLOSEPATH + 'M', // PATHSEG_MOVETO_ABS + 'm', // PATHSEG_MOVETO_REL, + 'L', // PATHSEG_LINETO_ABS + 'l', // PATHSEG_LINETO_REL + 'C', // PATHSEG_CURVETO_CUBIC_ABS + 'c', // PATHSEG_CURVETO_CUBIC_REL + 'Q', // PATHSEG_CURVETO_QUADRATIC_ABS, + 'q', // PATHSEG_CURVETO_QUADRATIC_REL + 'A', // PATHSEG_ARC_ABS + 'a', // PATHSEG_ARC_REL, + 'H', // PATHSEG_LINETO_HORIZONTAL_ABS, + 'h', // PATHSEG_LINETO_HORIZONTAL_REL + 'V', // PATHSEG_LINETO_VERTICAL_ABS + 'v', // PATHSEG_LINETO_VERTICAL_REL + 'S', // PATHSEG_CURVETO_CUBIC_SMOOTH_ABS + 's', // PATHSEG_CURVETO_CUBIC_SMOOTH_REL + 'T', // PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS + 't' // PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL +}; + + + +/** + * + */ +unsigned short getPathSegType() +{ + return type; +} + +/** + * + */ +DOMString getPathSegTypeAsLetter() +{ + int typ = type; + if (typ<0 || typ>PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL) + typ = PATHSEG_UNKNOWN; + char const ch = pathSegLetters[typ]; + DOMString letter = ch; + return letter; +} + + +/** + * + */ +unsigned short getPathSegType() +{ + return type; +} + +/** + * + */ +DOMString getPathSegTypeAsLetter() +{ + int typ = type; + if (typ<0 || typ>PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL) + typ = PATHSEG_UNKNOWN; + char const *ch = pathSegLetters[typ]; + DOMString letter = ch; + return letter; +} + +/** + * From the various subclasses + */ + +/** + * + */ +double SVGPathSeg::getX() +{ + return x; +} + +/** + * + */ +void SVGPathSeg::setX(double val) throw (DOMException) +{ + x = val; +} + +/** + * + */ +double SVGPathSeg::getX1() +{ + return x; +} + +/** + * + */ +void SVGPathSeg::setX1(double val) throw (DOMException) +{ + x = val; +} + +/** + * + */ +double SVGPathSeg::getX2() +{ + return x; +} + +/** + * + */ +void SVGPathSeg::setX2(double val) throw (DOMException) +{ + x = val; +} + +/** + * + */ +double SVGPathSeg::getY() +{ + return y; +} + +/** + * + */ +void SVGPathSeg::setY(double val) throw (DOMException) +{ + y = val; +} + +/** + * + */ +double SVGPathSeg::getY1() +{ + return y; +} + +/** + * + */ +void SVGPathSeg::setY1(double val) throw (DOMException) +{ + y = val; +} + +/** + * + */ +double SVGPathSeg::getY2() +{ + return y; +} + +/** + * + */ +void SVGPathSeg::setY2(double val) throw (DOMException) +{ + y = val; +} + +/** + * + */ +double SVGPathSeg::getR1() +{ + return r1; +} + +/** + * + */ +void SVGPathSeg::setR1(double val) throw (DOMException) +{ + r1 = val; +} + +/** + * + */ +double SVGPathSeg::getR2() +{ + return r2; +} + +/** + * + */ +void SVGPathSeg::setR2(double val) throw (DOMException) +{ + r2 = val; +} + +/** + * + */ +double SVGPathSeg::getAngle() +{ + return angle; +} + +/** + * + */ +void SVGPathSeg::setAngle(double val) throw (DOMException) +{ + angle = val; +} + +/** + * + */ +bool SVGPathSeg::getLargeArcFlag() +{ + return largeArcFlag; +} + +/** + * + */ +void SVGPathSeg::setLargeArcFlag(bool val) throw (DOMException) +{ + largeArcFlag = val; +} + +/** + * + */ +bool SVGPathSeg::getSweepFlag() +{ + return sweepFlag; +} + +/** + * + */ +void SVGPathSeg::setSweepFlag(bool val) throw (DOMException) +{ + sweepFlag = val; +} + + + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGPathSeg::SVGPathSeg() +{ + init(); +} + +/** + * + */ +SVGPathSeg::SVGPathSeg(const SVGPathSeg &other) +{ + assign(other); +} + +/** + * + */ +SVGPathSeg &operator=(const SVGPathSeg &other) +{ + assign(other); + return *this; +} + +/** + * + */ +void SVGPathSeg::init() +{ + type = PATHSEG_UNKNOWN; + x = y = x1 = y1 = x2 = y2 = 0.0; + r1 = r2 = 0.0; + angle = 0.0; + largeArcFlag = false; + sweepFlag = false; +} + +/** + * + */ +void SVGPathSeg::assign(const SVGPathSeg &other) +{ + type = other.type; + x = other.x; + y = other.y; + x1 = other.x1; + y1 = other.y1; + x2 = other.x2; + y2 = other.y2; + r1 = other.r1; + r2 = other.r2; + angle = other.angle; + largeArcFlag = other.largeArcFlag; + sweepFlag = other.sweepFlag; +} + + +/** + * + */ +SVGPathSeg::~SVGPathSeg() +{ +} + + + + +/*######################################################################### +## SVGPaint +#########################################################################*/ + + +/** + * + */ +unsigned short SVGPaint::getPaintType() +{ return paintType; } + +/** + * + */ +DOMString SVGPaint::getUri() +{ return uri; } + +/** + * + */ +void SVGPaint::setUri(const DOMString& uriArg) +{ + uri = uriArg; +} + +/** + * + */ +void SVGPaint::setPaint (unsigned short paintTypeArg, + const DOMString& uriArg, + const DOMString& /*rgbColor*/, + const DOMString& /*iccColor*/) + throw (SVGException) +{ + paintType = paintTypeArg; + uri = uriArg; + //do something with rgbColor + //do something with iccColor; +} + + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGPaint::SVGPaint() +{ + uri = ""; + paintType = SVG_PAINTTYPE_UNKNOWN; +} + +/** + * + */ +SVGPaint::SVGPaint(const SVGPaint &other) : css::CSSValue(other), SVGColor(other) +{ + uri = ""; + paintType = SVG_PAINTTYPE_UNKNOWN; +} + +/** + * + */ +SVGPaint::~SVGPaint() {} + + +/*######################################################################### +## SVGColorProfileRule +#########################################################################*/ + + +/** + * + */ +DOMString SVGColorProfileRule::getSrc() +{ return src; } + +/** + * + */ +void SVGColorProfileRule::setSrc(const DOMString &val) throw (DOMException) +{ src = val; } + +/** + * + */ +DOMString SVGColorProfileRule::getName() +{ return name; } + +/** + * + */ +void SVGColorProfileRule::setName(const DOMString &val) throw (DOMException) +{ name = val; } + +/** + * + */ +unsigned short SVGColorProfileRule::getRenderingIntent() +{ return renderingIntent; } + +/** + * + */ +void SVGColorProfileRule::setRenderingIntent(unsigned short val) throw (DOMException) +{ renderingIntent = val; } + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGColorProfileRule::SVGColorProfileRule() +{ +} + +/** + * + */ +SVGColorProfileRule::SVGColorProfileRule(const SVGColorProfileRule &other) + : SVGCSSRule(other), SVGRenderingIntent(other) +{ + renderingIntent = other.renderingIntent; + src = other.src; + name = other.name; +} + +/** + * + */ +SVGColorProfileRule::~SVGColorProfileRule() +{ +} + + +/*######################################################################### +## SVGFilterPrimitiveStandardAttributes +#########################################################################*/ + +/** + * + */ +SVGAnimatedLength SVGFilterPrimitiveStandardAttributes::getX() +{ return x; } + +/** + * + */ +SVGAnimatedLength SVGFilterPrimitiveStandardAttributes::getY() +{ return y; } + +/** + * + */ +SVGAnimatedLength SVGFilterPrimitiveStandardAttributes::getWidth() +{ return width; } + +/** + * + */ +SVGAnimatedLength SVGFilterPrimitiveStandardAttributes::getHeight() +{ return height; } + +/** + * + */ +SVGAnimatedString SVGFilterPrimitiveStandardAttributes::getResult() +{ return result; } + + + +//################## +//# Non-API methods +//################## + + +/** + * + */ +SVGFilterPrimitiveStandardAttributes::SVGFilterPrimitiveStandardAttributes() +{ +} + +/** + * + */ +SVGFilterPrimitiveStandardAttributes::SVGFilterPrimitiveStandardAttributes( + const SVGFilterPrimitiveStandardAttributes &other) + : SVGStylable(other) +{ + x = other.x; + y = other.y; + width = other.width; + height = other.height; + result = other.result; +} + +/** + * + */ +SVGFilterPrimitiveStandardAttributes::~SVGFilterPrimitiveStandardAttributes() +{ +} + + +/*######################################################################### +## SVGEvent +#########################################################################*/ + +/** + * + */ +SVGEvent:SVGEvent() +{ +} + +/** + * + */ +SVGEvent:SVGEvent(const SVGEvent &other) : events::Event(other) +{ +} + +/** + * + */ +SVGEvent::~SVGEvent() +{ +} + + +/*######################################################################### +## SVGZoomEvent +#########################################################################*/ + +/** + * + */ +SVGRect SVGZoomEvent::getZoomRectScreen() +{ + return zoomRectScreen; +} + +/** + * + */ +double SVGZoomEvent::getPreviousScale() +{ + return previousScale; +} + +/** + * + */ +SVGPoint SVGZoomEvent::getPreviousTranslate() +{ + return previousTranslate; +} + +/** + * + */ +double SVGZoomEvent::getNewScale() +{ + return newScale; +} + +/** + * + */ +SVGPoint SVGZoomEvent::getNewTranslate() +{ + return newTranslate; +} + + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGZoomEvent::SVGZoomEvent() +{ +} + +/** + * + */ +SVGZoomEvent::SVGZoomEvent(const SVGZoomEvent &other) : + events::Event(other), events::UIEvent(other) +{ + zoomRectScreen = other.zoomRectScreen; + previousScale = other.previousScale; + previousTranslate = other.previousTranslate; + newScale = other.newScale; + newTranslate = other.newTranslate; +} + +/** + * + */ +SVGZoomEvent::~SVGZoomEvent() +{ +} + + +/*######################################################################### +## SVGElementInstance +#########################################################################*/ + + +/** + * + */ +SVGElementPtr SVGElementInstance::getCorrespondingElement() +{ + return correspondingElement; +} + +/** + * + */ +SVGUseElementPtr SVGElementInstance::getCorrespondingUseElement() +{ + return correspondingUseElement; +} + +/** + * + */ +SVGElementInstance SVGElementInstance::getParentNode() +{ + SVGElementInstance ret; + return ret; +} + +/** + * Since we are using stack types and this is a circular definition, + * we will instead implement this as a global function below: + * SVGElementInstanceList getChildNodes(const SVGElementInstance instance); + */ +//SVGElementInstanceList getChildNodes(); + +/** + * + */ +SVGElementInstance SVGElementInstance::getFirstChild() +{ + SVGElementInstance ret; + return ret; +} + +/** + * + */ +SVGElementInstance SVGElementInstance::getLastChild() +{ + SVGElementInstance ret; + return ret; +} + +/** + * + */ +SVGElementInstance SVGElementInstance::getPreviousSibling() +{ + SVGElementInstance ret; + return ret; +} + +/** + * + */ +SVGElementInstance SVGElementInstance::getNextSibling() +{ + SVGElementInstance ret; + return ret; +} + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGElementInstance::SVGElementInstance() +{ +} + +/** + * + */ +SVGElementInstance::SVGElementInstance(const SVGElementInstance &other) + : events::EventTarget(other) +{ +} + +/** + * + */ +SVGElementInstance::~SVGElementInstance() +{ +} + + +/*######################################################################### +## SVGElementInstanceList +#########################################################################*/ + +/** + * + */ +unsigned long SVGElementInstanceList::getLength() +{ return items.size(); } + +/** + * + */ +SVGElementInstance SVGElementInstanceList::item(unsigned long index) +{ + if (index >= items.size()) + { + SVGElementInstance ret; + return ret; + } + return items[index]; +} + +/** + * This static method replaces the circular definition of: + * SVGElementInstanceList SVGElementInstance::getChildNodes() + * + */ +static SVGElementInstanceList SVGElementInstanceList::getChildNodes(const SVGElementInstance &/*instance*/) +{ + SVGElementInstanceList list; + return list; +} + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGElementInstanceList::SVGElementInstanceList() +{ +} + +/** + * + */ +SVGElementInstanceList::SVGElementInstanceList(const SVGElementInstanceList &other) +{ + items = other.items; +} + +/** + * + */ +SVGElementInstanceList::~SVGElementInstanceList() +{ +} + + + + +/*######################################################################### +## SVGValue +#########################################################################*/ + +/** + * Constructor + */ +SVGValue() +{ + init(); +} + +/** + * Copy constructor + */ +SVGValue(const SVGValue &other) +{ + assign(other); +} + +/** + * Assignment + */ +SVGValue &operator=(const SVGValue &other) +{ + assign(other); + return *this; +} + +/** + * + */ +~SVGValue() +{ +} + +//########################### +// TYPES +//########################### + +/** + * Angle + */ +SVGValue::SVGValue(const SVGAngle &v) +{ + type = SVG_ANGLE; + angleval = v; +} + +SVGAngle SVGValue::angleValue() +{ + return algleval; +} + +/** + * Boolean + */ +SVGValue::SVGValue(bool v) +{ + type = SVG_BOOLEAN; + bval = v; +} + +bool SVGValue::booleanValue() +{ + return bval; +} + + +/** + * Enumeration + */ +SVGValue::SVGValue(short v) +{ + type = SVG_ENUMERATION; + eval = v; +} + +short SVGValue::enumerationValue() +{ + return eval; +} + +/** + * Integer + */ +SVGValue::SVGValue(long v) +{ + type = SVG_INTEGER; + ival = v; +} + +long SVGValue::integerValue() +{ + return ival; +} + +/** + * Length + */ +SVGValue::SVGValue(const SVGLength &v) +{ + type = SVG_LENGTH; + lengthval = v; +} + +SVGLength SVGValue::lengthValue() +{ + return lengthval; +} + +/** + * Number + */ +SVGValue::SVGValue(double v) +{ + type = SVG_NUMBER; + dval = v; +} + +double SVGValue::numberValue() +{ + return dval; +} + +/** + * Points + */ +SVGValue::SVGValue(const SVGPointList &v) +{ + type = SVG_POINTS; + plistval = v; +} + +SVGPointList SVGValue::pointListValue() +{ + return plistval; +} + + +/** + * PreserveAspectRatio + */ +SVGValue::SVGValue(const SVGPreserveAspectRatio &v) +{ + type = SVG_PRESERVE_ASPECT_RATIO; + parval = v; +} + +SVGPreserveAspectRatio SVGValue::preserveAspectRatioValue() +{ + return parval; +} + +/** + * Rect + */ +SVGValue::SVGValue(const SVGRect &v) +{ + type = SVG_RECT; + rectval = v; +} + +SVGRect SVGValue::rectValue() +{ + return rectval; +} + +/** + * String + */ +SVGValue::SVGValue(const DOMString &v) +{ + type = SVG_STRING; + sval = v; +} + +DOMString SVGValue::stringValue() +{ + return sval; +} + + +void SVGValue::init() +{ + type = SVG_NUMBER; + bval = false; + eval = 0; + ival = 0; + dval = 0.0; +} + +void SVGValue::assign(const SVGValue &other) +{ + type = other.type; + angleval = other.angleval; + bval = other.bval; + eval = other.eval; + ival = other.ival; + lengthval = other.lengthval; + dval = other.dval; + parval = other.parval; + rval = other.rval; + sval = other.sval; +} + + +/*######################################################################### +## SVGTransformList +#########################################################################*/ + + +/*######################################################################### +## SVGStringList +#########################################################################*/ + + +/*######################################################################### +## SVGNumberList +#########################################################################*/ + + +/*######################################################################### +## SVGLengthList +#########################################################################*/ + + +/*######################################################################### +## SVGPointList +#########################################################################*/ + +/*######################################################################### +## SVGPathSegList +#########################################################################*/ + +/*######################################################################### +## SVGValueList +#########################################################################*/ + + +/** + * + */ +unsigned long SVGValueList::getNumberOfItems() +{ + return items.size(); +} + +/** + * + */ +void SVGValueList::clear() throw (DOMException) +{ + items.clear(); +} + +/** + * + */ +SVGValue SVGValueList::initialize(const SVGValue& newItem) + throw (DOMException, SVGException) +{ + items.clear(); + items.push_back(newItem); + return newItem; +} + +/** + * + */ +SVGValue SVGValueList::getItem(unsigned long index) throw (DOMException) +{ + if (index >= items.size()) + return ""; + return items[index]; +} + +/** + * + */ +SVGValue SVGValueList::insertItemBefore(const SVGValue& newItem, + unsigned long index) + throw (DOMException, SVGException) +{ + if (index>=items.size()) + { + items.push_back(newItem); + } + else + { + std::vector::iterator iter = items.begin() + index; + items.insert(iter, newItem); + } + return newItem; +} + +/** + * + */ +SVGValue SVGValueList::replaceItem (const SVGValue& newItem, + unsigned long index) + throw (DOMException, SVGException) +{ + if (index>=items.size()) + return ""; + std::vector::iterator iter = items.begin() + index; + *iter = newItem; + return newItem; +} + +/** + * + */ +SVGValue SVGValueList::removeItem (unsigned long index) + throw (DOMException) +{ + if (index>=items.size()) + return ""; + std::vector::iterator iter = items.begin() + index; + SVGValue oldval = *iter; + items.erase(iter); + return oldval; +} + +/** + * + */ +SVGValue SVGValueList::appendItem (const SVGValue& newItem) + throw (DOMException, SVGException) +{ + items.push_back(newItem); + return newItem; +} + + +/** + * Matrix + */ +SVGValue SVGValueList::createSVGTransformFromMatrix(const SVGValue &matrix) +{ +} + +/** + * Matrix + */ +SVGValue SVGValueList::consolidate() +{ +} + + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGValueList::SVGValueList() +{ +} + +/** + * + */ +SVGValueList::SVGValueList(const SVGValueList &other) +{ + items = other.items; +} + +/** + * + */ +SVGValueList::~SVGValueList() +{ +} + + + + + +/*######################################################################### +## SVGAnimatedValue +#########################################################################*/ + + + + +/** + * + */ +SVGValue &SVGAnimatedValue::getBaseVal() +{ + return baseVal; +} + +/** + * + */ +void SVGAnimatedValue::setBaseVal(const SVGValue &val) throw (DOMException) +{ + baseVal = val; +} + +/** + * + */ +SVGValue &SVGAnimatedValue::getAnimVal() +{ + return animVal; +} + + +/** + * + */ +SVGAnimatedValue::SVGAnimatedValue() +{ + init(); +} + + +/** + * + */ +SVGAnimatedValue::SVGAnimatedValue(const SVGValue &v) +{ + init(); + baseVal = v; +} + + +/** + * + */ +SVGAnimatedValue::SVGAnimatedValue(const SVGValue &bv, const SVGValue &av) +{ + init(); + baseVal = bv; + animVal = av; +} + + +/** + * + */ +SVGAnimatedValue::SVGAnimatedValue(const SVGAnimatedValue &other) +{ + assign(other); +} + + +/** + * + */ +SVGAnimatedValue &SVGAnimatedValue::operator=(const SVGAnimatedValue &other) +{ + assign(other); + return *this; +} + + +/** + * + */ +SVGAnimatedValue &SVGAnimatedValue::operator=(const SVGValue &bv) +{ + init(); + baseVal = bv; +} + + +/** + * + */ +SVGAnimatedValue::~SVGAnimatedValue() +{ +} + + + +void SVGAnimatedValue::init() +{ +} + + +void SVGAnimatedValue::assign(const SVGAnimatedValue &other) +{ + baseVal = other.baseVal; + animVal = other.animVal; +} + + + + + + + + + + + + + + + + + + + + + +//######################################################################## +//######################################################################## +//######################################################################## +//# D O M +//######################################################################## +//######################################################################## +//######################################################################## + + + + + + + +/*######################################################################### +## SVGElement +#########################################################################*/ + + +//#################################################################### +//# BASE METHODS FOR SVGElement +//#################################################################### + +/** + * Get the value of the id attribute on the given element. + */ +DOMString getId() +{ +} + +/** + * Set the value of the id attribute on the given element. + */ +void setId(const DOMString &val) throw (DOMException) +{ +} + + +/** + * Corresponds to attribute xml:base on the given element. + */ +DOMString getXmlBase() +{ +} + + +/** + * Corresponds to attribute xml:base on the given element. + */ +void setXmlBase(const DOMString &val) throw (DOMException) +{ +} + +/** + * The nearest ancestor 'svg' element. Null if the given element is the + * outermost 'svg' element. + */ +SVGElementPtr getOwnerSVGElement() +{ +} + +/** + * The element which established the current viewport. Often, the nearest + * ancestor 'svg' element. Null if the given element is the outermost 'svg' + * element. + */ +SVGElementPtr getViewportElement() +{ +} + + +//#################################################################### +//#################################################################### +//# I N T E R F A C E S +//#################################################################### +//#################################################################### + +//#################################################################### +//# SVGAngle +//#################################################################### + +/** + * + */ +unsigned short getUnitType() +{ +} + +/** + * + */ +double getValue() +{ +} + +/** + * + */ +void setValue(double val) throw (DOMException) +{ +} + +/** + * + */ +double getValueInSpecifiedUnits() +{ +} + +/** + * + */ +void setValueInSpecifiedUnits(double /*val*/) throw (DOMException) +{ +} + +/** + * + */ +DOMString getValueAsString() +{ +} + +/** + * + */ +void setValueAsString(const DOMString &/*val*/) throw (DOMException) +{ +} + + +/** + * + */ +void newValueSpecifiedUnits(unsigned short /*unitType*/, + double /*valueInSpecifiedUnits*/) +{ +} + +/** + * + */ +void convertToSpecifiedUnits(unsigned short /*unitType*/) +{ +} + +//#################################################################### +//## The following animated types are rolled up into a single +//## SVGAnimatedValue interface +//#################################################################### + +//#################################################################### +//## SVGAnimatedAngle +//#################################################################### + +//#################################################################### +//## SVGAnimatedBoolean +//#################################################################### + +//#################################################################### +//## SVGAnimatedEnumeration +//#################################################################### + +//#################################################################### +//## SVGAnimatedInteger +//#################################################################### + +//#################################################################### +//## SVGAnimatedLength +//#################################################################### + +//#################################################################### +//## SVGAnimatedLengthList +//#################################################################### + +//#################################################################### +//## SVGAnimatedNumber +//#################################################################### + +//#################################################################### +//## SVGAnimatedNumberList +//#################################################################### + +//#################################################################### +//## SVGAnimatedPathData +//#################################################################### + +//#################################################################### +//## SVGAnimatedPoints +//#################################################################### + +//#################################################################### +//## SVGAnimatedPreserveAspectRatio +//#################################################################### + +//#################################################################### +//## SVGAnimatedRect +//#################################################################### + +//#################################################################### +//## SVGAnimatedString +//#################################################################### + +//#################################################################### +//## SVGAnimatedTransformList +//#################################################################### + +//#################################################################### +//# SVGAnimatedValue +//#################################################################### + +/** + * + */ +SVGValue &getBaseVal() +{ + return baseVal(); +} + +/** + * + */ +void setBaseVal(const SVGValue &val) throw (DOMException) +{ + baseVal = val; +} + +/** + * + */ +SVGValue &getAnimVal() +{ + return animVal; +} + + + +//#################################################################### +//# SVGColor +//#################################################################### + +/** + * From CSSValue + * A code defining the type of the value as defined above. + */ +unsigned short getCssValueType() +{ +} + +/** + * From CSSValue + * A string representation of the current value. + */ +DOMString getCssText() +{ +} + +/** + * From CSSValue + * A string representation of the current value. + * Note that setting implies parsing. + */ +void setCssText(const DOMString &val) throw (dom::DOMException) +{ +} + + +/** + * + */ +unsigned short getColorType() +{ +} + +/** + * + */ +css::RGBColor getRgbColor() +{ +} + +/** + * + */ +SVGICCColor getIccColor() +{ +} + + +/** + * + */ +void setRGBColor(const DOMString& /*rgbColor*/) throw (SVGException) +{ +} + +/** + * + */ +void setRGBColorICCColor(const DOMString& /*rgbColor*/, + const DOMString& /*iccColor*/) + throw (SVGException) +{ +} + +/** + * + */ +void setColor(unsigned short /*colorType*/, + const DOMString& /*rgbColor*/, + const DOMString& /*iccColor*/) + throw (SVGException) +{ +} + +//#################################################################### +//# SVGCSSRule +//#################################################################### + +/** + * From CSSRule + * The type of the rule, as defined above. The expectation is that + * binding-specific casting methods can be used to cast down from an instance of + * the CSSRule interface to the specific derived interface implied by the type. + */ +unsigned short getType() +{ +} + +/** + * From CSSRule + * The parsable textual representation of the rule. This reflects the current + * state of the rule and not its initial value. + */ +DOMString getCssText() +{ +} + +/** + * From CSSRule + * The parsable textual representation of the rule. This reflects the current + * state of the rule and not its initial value. + * Note that setting involves reparsing. + */ +void setCssText(const DOMString &val) throw (DOMException) +{ +} + +/** + * From CSSRule + * The style sheet that contains this rule. + */ +css::CSSStyleSheet *getParentStyleSheet() +{ +} + +/** + * From CSSRule + * If this rule is contained inside another rule(e.g. a style rule inside an + * @media block), this is the containing rule. If this rule is not nested inside + * any other rules, this returns null. + */ +css::CSSRule *getParentRule() +{ +} + +//#################################################################### +//# SVGExternalResourcesRequired +//#################################################################### + +/** + * + */ +SVGAnimatedBoolean getExternalResourcesRequired() +{ +} + +//#################################################################### +//# SVGFitToViewBox +//#################################################################### + +/** + * + */ +SVGAnimatedRect getViewBox() +{ +} + +/** + * + */ +SVGAnimatedPreserveAspectRatio getPreserveAspectRatio() +{ +} + +//#################################################################### +//# SVGICCColor +//#################################################################### + +/** + * + */ +DOMString getColorProfile() +{ +} + +/** + * + */ +void setColorProfile(const DOMString &val) throw (DOMException) +{ +} + +/** + * + */ +SVGNumberList &getColors() +{ +} + +//#################################################################### +//# SVGLangSpace +//#################################################################### + +/** + * + */ +DOMString getXmllang() +{ +} + +/** + * + */ +void setXmllang(const DOMString &val) throw (DOMException) +{ +} + +/** + * + */ +DOMString getXmlspace() +{ +} + +/** + * + */ +void setXmlspace(const DOMString &val) throw (DOMException) +{ +} + +//#################################################################### +//# SVGLength +//#################################################################### + +/** + * + */ +unsigned short getUnitType() +{ +} + +/** + * + */ +double getValue() +{ +} + +/** + * + */ +void setValue(double val) throw (DOMException) +{ +} + +/** + * + */ +double getValueInSpecifiedUnits() +{ +} + +/** + * + */ +void setValueInSpecifiedUnits(double /*val*/) throw (DOMException) +{ +} + +/** + * + */ +DOMString getValueAsString() +{ +} + +/** + * + */ +void setValueAsString(const DOMString& /*val*/) throw (DOMException) +{ +} + + +/** + * + */ +void newValueSpecifiedUnits(unsigned short /*unitType*/, double /*val*/) +{ +} + +/** + * + */ +void convertToSpecifiedUnits(unsigned short /*unitType*/) +{ +} + + +//#################################################################### +//## SVGLengthList - see SVGValueList +//#################################################################### + + + +//#################################################################### +//# SVGLocatable +//#################################################################### + +/** + * + */ +SVGElementPtr getNearestViewportElement() +{ +} + +/** + * + */ +SVGElement *getFarthestViewportElement() +{ +} + +/** + * + */ +SVGRect getBBox() +{ +} + +/** + * + */ +SVGMatrix getCTM() +{ +} + +/** + * + */ +SVGMatrix getScreenCTM() +{ +} + +/** + * + */ +SVGMatrix getTransformToElement(const SVGElement &/*element*/) + throw (SVGException) +{ +} + +//#################################################################### +//# SVGNumber +//#################################################################### + +/** + * + */ +double getValue() +{ +} + +/** + * + */ +void setValue(double val) throw (DOMException) +{ +} + +//#################################################################### +//# SVGNumberList - see SVGValueList +//#################################################################### + + +//#################################################################### +//# SVGRect +//#################################################################### + +/** + * + */ +double getX() +{ +} + +/** + * + */ +void setX(double val) throw (DOMException) +{ +} + +/** + * + */ +double getY() +{ +} + +/** + * + */ +void setY(double val) throw (DOMException) +{ +} + +/** + * + */ +double getWidth() +{ +} + +/** + * + */ +void setWidth(double val) throw (DOMException) +{ +} + +/** + * + */ +double getHeight() +{ +} + +/** + * + */ +void setHeight(double val) throw (DOMException) +{ +} + +//#################################################################### +//# SVGRenderingIntent +//#################################################################### + +//#################################################################### +//# SVGStringList - see SVGValueList +//#################################################################### + +//#################################################################### +//# SVGStylable +//#################################################################### + +/** + * + */ +SVGAnimatedString getClassName() +{ +} + +/** + * + */ +css::CSSStyleDeclaration getStyle() +{ +} + +/** + * + */ +css::CSSValue getPresentationAttribute(const DOMString& /*name*/) +{ +} + +//#################################################################### +//# SVGTests +//#################################################################### + +/** + * + */ +SVGValueList &getRequiredFeatures() +{ +} + +/** + * + */ +SVGValueList &getRequiredExtensions() +{ +} + +/** + * + */ +SVGValueList &getSystemLanguage() +{ +} + +/** + * + */ +bool hasExtension(const DOMString& /*extension*/) +{ +} + +//#################################################################### +//# SVGTransformable +//#################################################################### + +/** + * + */ +SVGAnimatedList &getTransform() +{ +} + +//#################################################################### +//# SVGUnitTypes +//#################################################################### + +//#################################################################### +//# SVGURIReference +//#################################################################### + +/** + * + */ +SVGAnimatedValue getHref() +{ +} + +//#################################################################### +//## SVGValueList - consolidation of other lists +//#################################################################### + +/** + * + */ +unsigned long SVGElement::getNumberOfItems() +{ + return items.size(); +} + +/** + * + */ +void SVGElement::clear() throw (DOMException) +{ + items.clear(); +} + +/** + * + */ +SVGValue SVGElement::initialize(const SVGValue& newItem) + throw (DOMException, SVGException) +{ + items.clear(); + items.push_back(newItem); + return newItem; +} + +/** + * + */ +SVGValue SVGElement::getItem(unsigned long index) throw (DOMException) +{ + if (index >= items.size()) + return ""; + return items[index]; +} + +/** + * + */ +SVGValue SVGElement::insertItemBefore(const SVGValue& newItem, + unsigned long index) + throw (DOMException, SVGException) +{ + if (index>=items.size()) + { + items.push_back(newItem); + } + else + { + std::vector::iterator iter = items.begin() + index; + items.insert(iter, newItem); + } + return newItem; +} + +/** + * + */ +SVGValue SVGElement::replaceItem (const SVGValue& newItem, + unsigned long index) + throw (DOMException, SVGException) +{ + if (index>=items.size()) + return ""; + std::vector::iterator iter = items.begin() + index; + *iter = newItem; + return newItem; +} + +/** + * + */ +SVGValue SVGElement::removeItem (unsigned long index) + throw (DOMException) +{ + if (index>=items.size()) + return ""; + std::vector::iterator iter = items.begin() + index; + SVGValue oldval = *iter; + items.erase(iter); + return oldval; +} + +/** + * + */ +SVGValue SVGElement::appendItem (const SVGValue& newItem) + throw (DOMException, SVGException) +{ + items.push_back(newItem); + return newItem; +} + + +/** + * Matrix + */ +SVGValue SVGElement::createSVGTransformFromMatrix(const SVGValue &matrix) +{ +} + +/** + * Matrix + */ +SVGValue SVGElement::consolidate() +{ +} + + +//#################################################################### +//# SVGViewSpec +//#################################################################### + +/** + * + */ +//SVGTransformList getTransform() +//{ +//} + +/** + * + */ +SVGElementPtr getViewTarget() +{ +} + +/** + * + */ +DOMString getViewBoxString() +{ +} + +/** + * + */ +DOMString getPreserveAspectRatioString() +{ +} + +/** + * + */ +DOMString getTransformString() +{ +} + +/** + * + */ +DOMString getViewTargetString() +{ +} + +//#################################################################### +//# SVGZoomAndPan +//#################################################################### + +/** + * + */ +unsigned short getZoomAndPan() +{ +} + +/** + * + */ +void setZoomAndPan(unsigned short val) throw (DOMException) +{ +} + +//#################################################################### +//#################################################################### +//# E L E M E N T S +//#################################################################### +//#################################################################### + +//#################################################################### +//# SVGAElement +//#################################################################### + + +/** + * + */ +SVGAnimatedString getTarget() +{ +} + + + +//#################################################################### +//# SVGAltGlyphElement +//#################################################################### + + +/** + * Get the attribute glyphRef on the given element. + */ +DOMString getGlyphRef() +{ +} + +/** + * Set the attribute glyphRef on the given element. + */ +void setGlyphRef(const DOMString &val) throw (DOMException) +{ +} + +/** + * Get the attribute format on the given element. + */ +DOMString getFormat() +{ +} + +/** + * Set the attribute format on the given element. + */ +void setFormat(const DOMString &val) throw (DOMException) +{ +} + + +//#################################################################### +//# SVGAltGlyphDefElement +//#################################################################### + +//#################################################################### +//# SVGAltGlyphItemElement +//#################################################################### + + +//#################################################################### +//# SVGAnimateElement +//#################################################################### + + +//#################################################################### +//# SVGAnimateColorElement +//#################################################################### + +//#################################################################### +//# SVGAnimateMotionElement +//#################################################################### + + +//#################################################################### +//# SVGAnimateTransformElement +//#################################################################### + + +//#################################################################### +//# SVGAnimationElement +//#################################################################### + + +/** + * + */ +SVGElementPtr getTargetElement() +{ +} + +/** + * + */ +double getStartTime() +{ +} + +/** + * + */ +double getCurrentTime() +{ +} + +/** + * + */ +double getSimpleDuration() throw (DOMException) +{ +} + + + +//#################################################################### +//# SVGCircleElement +//#################################################################### + +/** + * Corresponds to attribute cx on the given 'circle' element. + */ +SVGAnimatedLength getCx() +{ +} + +/** + * Corresponds to attribute cy on the given 'circle' element. + */ +SVGAnimatedLength getCy() +{ +} + +/** + * Corresponds to attribute r on the given 'circle' element. + */ +SVGAnimatedLength getR() +{ +} + +//#################################################################### +//# SVGClipPathElement +//#################################################################### + + +/** + * Corresponds to attribute clipPathUnits on the given 'clipPath' element. + * Takes one of the constants defined in SVGUnitTypes. + */ +SVGAnimatedEnumeration getClipPathUnits() +{ +} + + + +//#################################################################### +//# SVGColorProfileElement +//#################################################################### + + +/** + * Get the attribute local on the given element. + */ +DOMString getLocal() +{ +} + +/** + * Set the attribute local on the given element. + */ +void setLocal(const DOMString &val) throw (DOMException) +{ +} + +/** + * Get the attribute name on the given element. + */ +DOMString getName() +{ +} + +/** + * Set the attribute name on the given element. + */ +void setName(const DOMString &val) throw (DOMException) +{ +} + +/** + * Set the attribute rendering-intent on the given element. + * The type of rendering intent, identified by one of the + * SVGRenderingIntent constants. + */ +unsigned short getRenderingIntent() +{ +} + +/** + * Get the attribute rendering-intent on the given element. + */ +void setRenderingIntent(unsigned short val) throw (DOMException) +{ +} + + +//#################################################################### +//# SVGComponentTransferFunctionElement +//#################################################################### + +/** + * Corresponds to attribute type on the given element. Takes one + * of the Component Transfer Types. + */ +SVGAnimatedEnumeration getType() +{ +} + +/** + * Corresponds to attribute tableValues on the given element. + */ +SVGAnimatedNumberList getTableValues() +{ +} + +/** + * Corresponds to attribute slope on the given element. + */ +SVGAnimatedNumber getSlope() +{ +} + +/** + * Corresponds to attribute intercept on the given element. + */ +SVGAnimatedNumber getIntercept() +{ +} + +/** + * Corresponds to attribute amplitude on the given element. + */ +SVGAnimatedNumber getAmplitude() +{ +} + +/** + * Corresponds to attribute exponent on the given element. + */ +SVGAnimatedNumber getExponent() +{ +} + +/** + * Corresponds to attribute offset on the given element. + */ +SVGAnimatedNumber getOffset() +{ +} + +//#################################################################### +//# SVGCursorElement +//#################################################################### + +/** + * + */ +SVGAnimatedLength getX() +{ +} + +/** + * + */ +SVGAnimatedLength getY() +{ +} + + +//#################################################################### +//# SVGDefinitionSrcElement +//#################################################################### + +//#################################################################### +//# SVGDefsElement +//#################################################################### + +//#################################################################### +//# SVGDescElement +//#################################################################### + +//#################################################################### +//# SVGEllipseElement +//#################################################################### + +/** + * Corresponds to attribute cx on the given 'ellipse' element. + */ +SVGAnimatedLength getCx() +{ +} + +/** + * Corresponds to attribute cy on the given 'ellipse' element. + */ +SVGAnimatedLength getCy() +{ +} + +/** + * Corresponds to attribute rx on the given 'ellipse' element. + */ +SVGAnimatedLength getRx() +{ +} + +/** + * Corresponds to attribute ry on the given 'ellipse' element. + */ +SVGAnimatedLength getRy() +{ +} + + +//#################################################################### +//# SVGFEBlendElement +//#################################################################### + +/** + * Corresponds to attribute in on the given 'feBlend' element. + */ +SVGAnimatedString getIn1() +{ +} + +/** + * Corresponds to attribute in2 on the given 'feBlend' element. + */ +SVGAnimatedString getIn2() +{ +} + +/** + * Corresponds to attribute mode on the given 'feBlend' element. + * Takes one of the Blend Mode Types. + */ +SVGAnimatedEnumeration getMode() +{ +} + + +//#################################################################### +//# SVGFEColorMatrixElement +//#################################################################### + +/** + * Corresponds to attribute in on the given 'feColorMatrix' element. + */ +SVGAnimatedString getIn1() +{ +} + +/** + * Corresponds to attribute type on the given 'feColorMatrix' element. + * Takes one of the Color Matrix Types. + */ +SVGAnimatedEnumeration getType() +{ +} + +/** + * Corresponds to attribute values on the given 'feColorMatrix' element. + * Provides access to the contents of the values attribute. + */ +SVGAnimatedNumberList getValues() +{ +} + + +//#################################################################### +//# SVGFEComponentTransferElement +//#################################################################### + + +/** + * Corresponds to attribute in on the given 'feComponentTransfer' element. + */ +SVGAnimatedString getIn1() +{ +} + +//#################################################################### +//# SVGFECompositeElement +//#################################################################### + +/** + * Corresponds to attribute in on the given 'feComposite' element. + */ +SVGAnimatedString getIn1() +{ +} + +/** + * Corresponds to attribute in2 on the given 'feComposite' element. + */ +SVGAnimatedString getIn2() +{ +} + +/** + * Corresponds to attribute operator on the given 'feComposite' element. + * Takes one of the Composite Operators. + */ +SVGAnimatedEnumeration getOperator() +{ +} + +/** + * Corresponds to attribute k1 on the given 'feComposite' element. + */ +SVGAnimatedNumber getK1() +{ +} + +/** + * Corresponds to attribute k2 on the given 'feComposite' element. + */ +SVGAnimatedNumber getK2() +{ +} + +/** + * Corresponds to attribute k3 on the given 'feComposite' element. + */ +SVGAnimatedNumber getK3() +{ +} + +/** + * Corresponds to attribute k4 on the given 'feComposite' element. + */ +SVGAnimatedNumber getK4() +{ +} + + +//#################################################################### +//# SVGFEConvolveMatrixElement +//#################################################################### + + +/** + * Corresponds to attribute order on the given 'feConvolveMatrix' element. + */ +SVGAnimatedInteger getOrderX() +{ +} + +/** + * Corresponds to attribute order on the given 'feConvolveMatrix' element. + */ +SVGAnimatedInteger getOrderY() +{ +} + +/** + * Corresponds to attribute kernelMatrix on the given element. + */ +SVGAnimatedNumberList getKernelMatrix() +{ +} + +/** + * Corresponds to attribute divisor on the given 'feConvolveMatrix' element. + */ +SVGAnimatedNumber getDivisor() +{ +} + +/** + * Corresponds to attribute bias on the given 'feConvolveMatrix' element. + */ +SVGAnimatedNumber getBias() +{ +} + +/** + * Corresponds to attribute targetX on the given 'feConvolveMatrix' element. + */ +SVGAnimatedInteger getTargetX() +{ +} + +/** + * Corresponds to attribute targetY on the given 'feConvolveMatrix' element. + */ +SVGAnimatedInteger getTargetY() +{ +} + +/** + * Corresponds to attribute edgeMode on the given 'feConvolveMatrix' + * element. Takes one of the Edge Mode Types. + */ +SVGAnimatedEnumeration getEdgeMode() +{ +} + +/** + * Corresponds to attribute kernelUnitLength on the + * given 'feConvolveMatrix' element. + */ +SVGAnimatedLength getKernelUnitLengthX() +{ +} + +/** + * Corresponds to attribute kernelUnitLength on the given + * 'feConvolveMatrix' element. + */ +SVGAnimatedLength getKernelUnitLengthY() +{ +} + +/** + * Corresponds to attribute preserveAlpha on the + * given 'feConvolveMatrix' element. + */ +SVGAnimatedBoolean getPreserveAlpha() +{ +} + + + +//#################################################################### +//# SVGFEDiffuseLightingElement +//#################################################################### + + +/** + * Corresponds to attribute in on the given 'feDiffuseLighting' element. + */ +SVGAnimatedString getIn1() +{ +} + +/** + * Corresponds to attribute surfaceScale on the given + * 'feDiffuseLighting' element. + */ +SVGAnimatedNumber getSurfaceScale() +{ +} + +/** + * Corresponds to attribute diffuseConstant on the given + * 'feDiffuseLighting' element. + */ +SVGAnimatedNumber getDiffuseConstant() +{ +} + +/** + * Corresponds to attribute kernelUnitLength on the given + * 'feDiffuseLighting' element. + */ +SVGAnimatedNumber getKernelUnitLengthX() +{ +} + +/** + * Corresponds to attribute kernelUnitLength on the given + * 'feDiffuseLighting' element. + */ +SVGAnimatedNumber getKernelUnitLengthY() +{ +} + + + + +//#################################################################### +//# SVGFEDisplacementMapElement +//#################################################################### + +/** + * + */ +SVGAnimatedString getIn1() +{ +} + +/** + * + */ +SVGAnimatedString getIn2() +{ +} + + +/** + * + */ +SVGAnimatedNumber getScale() +{ +} + +/** + * + */ +SVGAnimatedEnumeration getXChannelSelector() +{ +} + +/** + * + */ +SVGAnimatedEnumeration getYChannelSelector() +{ +} + +//#################################################################### +//# SVGFEDistantLightElement +//#################################################################### + + +/** + * Corresponds to attribute azimuth on the given 'feDistantLight' element. + */ +SVGAnimatedNumber getAzimuth() +{ +} + + +/** + * Corresponds to attribute elevation on the given 'feDistantLight' + * element + */ +SVGAnimatedNumber getElevation() +{ +} + + +//#################################################################### +//# SVGFEFloodElement +//#################################################################### + + +/** + * + */ +SVGAnimatedString getIn1() +{ +} + + +//#################################################################### +//# SVGFEFuncAElement +//#################################################################### + +//#################################################################### +//# SVGFEFuncBElement +//#################################################################### + +//#################################################################### +//# SVGFEFuncGElement +//#################################################################### + +//#################################################################### +//# SVGFEFuncRElement +//#################################################################### + + +//#################################################################### +//# SVGFEGaussianBlurElement +//#################################################################### + + +/** + * + */ +SVGAnimatedString getIn1() +{ +} + + +/** + * + */ +SVGAnimatedNumber getStdDeviationX() +{ +} + +/** + * + */ +SVGAnimatedNumber getStdDeviationY() +{ +} + + +/** + * + */ +void setStdDeviation(double stdDeviationX, double stdDeviationY) +{ +} + + +//#################################################################### +//# SVGFEImageElement +//#################################################################### + + +//#################################################################### +//# SVGFEMergeElement +//#################################################################### + +//#################################################################### +//# SVGFEMergeNodeElement +//#################################################################### + +//#################################################################### +//# SVGFEMorphologyElement +//#################################################################### + +/** + * + */ +SVGAnimatedString getIn1() +{ +} + + +/** + * + */ +SVGAnimatedEnumeration getOperator() +{ +} + +/** + * + */ +SVGAnimatedLength getRadiusX() +{ +} + +/** + * + */ +SVGAnimatedLength getRadiusY() +{ +} + +//#################################################################### +//# SVGFEOffsetElement +//#################################################################### + +/** + * + */ +SVGAnimatedString getIn1() +{ +} + +/** + * + */ +SVGAnimatedLength getDx() +{ +} + +/** + * + */ +SVGAnimatedLength getDy() +{ +} + + +//#################################################################### +//# SVGFEPointLightElement +//#################################################################### + +/** + * Corresponds to attribute x on the given 'fePointLight' element. + */ +SVGAnimatedNumber getX() +{ +} + +/** + * Corresponds to attribute y on the given 'fePointLight' element. + */ +SVGAnimatedNumber getY() +{ +} + +/** + * Corresponds to attribute z on the given 'fePointLight' element. + */ +SVGAnimatedNumber getZ() +{ +} + +//#################################################################### +//# SVGFESpecularLightingElement +//#################################################################### + + +/** + * + */ +SVGAnimatedString getIn1() +{ +} + +/** + * + */ +SVGAnimatedNumber getSurfaceScale() +{ +} + +/** + * + */ +SVGAnimatedNumber getSpecularConstant() +{ +} + +/** + * + */ +SVGAnimatedNumber getSpecularExponent() +{ +} + + +//#################################################################### +//# SVGFESpotLightElement +//#################################################################### + +/** + * Corresponds to attribute x on the given 'feSpotLight' element. + */ +SVGAnimatedNumber getX() +{ +} + +/** + * Corresponds to attribute y on the given 'feSpotLight' element. + */ +SVGAnimatedNumber getY() +{ +} + +/** + * Corresponds to attribute z on the given 'feSpotLight' element. + */ +SVGAnimatedNumber getZ() +{ +} + +/** + * Corresponds to attribute pointsAtX on the given 'feSpotLight' element. + */ +SVGAnimatedNumber getPointsAtX() +{ +} + +/** + * Corresponds to attribute pointsAtY on the given 'feSpotLight' element. + */ +SVGAnimatedNumber getPointsAtY() +{ +} + +/** + * Corresponds to attribute pointsAtZ on the given 'feSpotLight' element. + */ +SVGAnimatedNumber getPointsAtZ() +{ +} + +/** + * Corresponds to attribute specularExponent on the + * given 'feSpotLight' element. + */ +SVGAnimatedNumber getSpecularExponent() +{ +} + +/** + * Corresponds to attribute limitingConeAngle on the + * given 'feSpotLight' element. + */ +SVGAnimatedNumber getLimitingConeAngle() +{ +} + + +//#################################################################### +//# SVGFETileElement +//#################################################################### + + +/** + * + */ +SVGAnimatedString getIn1() +{ +} + + +//#################################################################### +//# SVGFETurbulenceElement +//#################################################################### + + +/** + * + */ +SVGAnimatedNumber getBaseFrequencyX() +{ +} + +/** + * + */ +SVGAnimatedNumber getBaseFrequencyY() +{ +} + +/** + * + */ +SVGAnimatedInteger getNumOctaves() +{ +} + +/** + * + */ +SVGAnimatedNumber getSeed() +{ +} + +/** + * + */ +SVGAnimatedEnumeration getStitchTiles() +{ +} + +/** + * + */ +SVGAnimatedEnumeration getType() +{ +} + + + +//#################################################################### +//# SVGFilterElement +//#################################################################### + + +/** + * Corresponds to attribute filterUnits on the given 'filter' element. Takes one + * of the constants defined in SVGUnitTypes. + */ +SVGAnimatedEnumeration getFilterUnits() +{ +} + +/** + * Corresponds to attribute primitiveUnits on the given 'filter' element. Takes + * one of the constants defined in SVGUnitTypes. + */ +SVGAnimatedEnumeration getPrimitiveUnits() +{ +} + +/** + * + */ +SVGAnimatedLength getX() +{ +} + +/** + * Corresponds to attribute x on the given 'filter' element. + */ +SVGAnimatedLength getY() +{ +} + +/** + * Corresponds to attribute y on the given 'filter' element. + */ +SVGAnimatedLength getWidth() +{ +} + +/** + * Corresponds to attribute height on the given 'filter' element. + */ +SVGAnimatedLength getHeight() +{ +} + + +/** + * Corresponds to attribute filterRes on the given 'filter' element. + * Contains the X component of attribute filterRes. + */ +SVGAnimatedInteger getFilterResX() +{ +} + +/** + * Corresponds to attribute filterRes on the given 'filter' element. + * Contains the Y component(possibly computed automatically) + * of attribute filterRes. + */ +SVGAnimatedInteger getFilterResY() +{ +} + +/** + * Sets the values for attribute filterRes. + */ +void setFilterRes(unsigned long filterResX, unsigned long filterResY) +{ +} + + +//#################################################################### +//# SVGFontElement +//#################################################################### + +//#################################################################### +//# SVGFontFaceElement +//#################################################################### + +//#################################################################### +//# SVGFontFaceFormatElement +//#################################################################### + +//#################################################################### +//# SVGFontFaceNameElement +//#################################################################### + +//#################################################################### +//# SVGFontFaceSrcElement +//#################################################################### + +//#################################################################### +//# SVGFontFaceUriElement +//#################################################################### + +//#################################################################### +//# SVGForeignObjectElement +//#################################################################### + +/** + * + */ +SVGAnimatedLength getX() +{ +} + +/** + * + */ +SVGAnimatedLength getY() +{ +} + +/** + * + */ +SVGAnimatedLength getWidth() +{ +} + +/** + * + */ +SVGAnimatedLength getHeight() +{ +} + + + +//#################################################################### +//# SVGGlyphRefElement +//#################################################################### + + +/** + * Get the attribute glyphRef on the given element. + */ +DOMString getGlyphRef() +{ +} + +/** + * Set the attribute glyphRef on the given element. + */ +void setGlyphRef(const DOMString &val) throw (DOMException) +{ +} + +/** + * Get the attribute format on the given element. + */ +DOMString getFormat() +{ +} + +/** + * Set the attribute format on the given element. + */ +void setFormat(const DOMString &val) throw (DOMException) +{ +} + +/** + * Get the attribute x on the given element. + */ +double getX() +{ +} + +/** + * Set the attribute x on the given element. + */ +void setX(double val) throw (DOMException) +{ +} + +/** + * Get the attribute y on the given element. + */ +double getY() +{ +} + +/** + * Set the attribute y on the given element. + */ +void setY(double val) throw (DOMException) +{ +} + +/** + * Get the attribute dx on the given element. + */ +double getDx() +{ +} + +/** + * Set the attribute dx on the given element. + */ +void setDx(double val) throw (DOMException) +{ +} + +/** + * Get the attribute dy on the given element. + */ +double getDy() +{ +} + +/** + * Set the attribute dy on the given element. + */ +void setDy(double val) throw (DOMException) +{ +} + + +//#################################################################### +//# SVGGradientElement +//#################################################################### + +/** + * Corresponds to attribute gradientUnits on the given element. + * Takes one of the constants defined in SVGUnitTypes. + */ +SVGAnimatedEnumeration getGradientUnits() +{ +} + +/** + * Corresponds to attribute gradientTransform on the given element. + */ +SVGAnimatedTransformList getGradientTransform() +{ +} + +/** + * Corresponds to attribute spreadMethod on the given element. + * One of the Spread Method Types. + */ +SVGAnimatedEnumeration getSpreadMethod() +{ +} + + + +//#################################################################### +//# SVGHKernElement +//#################################################################### + +//#################################################################### +//# SVGImageElement +//#################################################################### + +/** + * Corresponds to attribute x on the given 'image' element. + */ +SVGAnimatedLength getX() +{ +} + +/** + * Corresponds to attribute y on the given 'image' element. + */ +SVGAnimatedLength getY() +{ +} + +/** + * Corresponds to attribute width on the given 'image' element. + */ +SVGAnimatedLength getWidth() +{ +} + +/** + * Corresponds to attribute height on the given 'image' element. + */ +SVGAnimatedLength getHeight() +{ +} + + +/** + * Corresponds to attribute preserveAspectRatio on the given element. + */ +SVGAnimatedPreserveAspectRatio getPreserveAspectRatio() +{ +} + +//#################################################################### +//# SVGLinearGradientElement +//#################################################################### + +/** + * Corresponds to attribute x1 on the given 'linearGradient' element. + */ +SVGAnimatedLength getX1() +{ +} + +/** + * Corresponds to attribute y1 on the given 'linearGradient' element. + */ +SVGAnimatedLength getY1() +{ +} + +/** + * Corresponds to attribute x2 on the given 'linearGradient' element. + */ +SVGAnimatedLength getX2() +{ +} + +/** + * Corresponds to attribute y2 on the given 'linearGradient' element. + */ +SVGAnimatedLength getY2() +{ +} + + + +//#################################################################### +//# SVGLineElement +//#################################################################### + +/** + * Corresponds to attribute x1 on the given 'line' element. + */ +SVGAnimatedLength getX1() +{ +} + +/** + * Corresponds to attribute y1 on the given 'line' element. + */ +SVGAnimatedLength getY1() +{ +} + +/** + * Corresponds to attribute x2 on the given 'line' element. + */ +SVGAnimatedLength getX2() +{ +} + +/** + * Corresponds to attribute y2 on the given 'line' element. + */ +SVGAnimatedLength getY2() +{ +} + + +//#################################################################### +//# SVGMarkerElement +//#################################################################### + + +/** + * Corresponds to attribute refX on the given 'marker' element. + */ +SVGAnimatedLength getRefX() +{ +} + +/** + * Corresponds to attribute refY on the given 'marker' element. + */ +SVGAnimatedLength getRefY() +{ +} + +/** + * Corresponds to attribute markerUnits on the given 'marker' element. + * One of the Marker Units Types defined above. + */ +SVGAnimatedEnumeration getMarkerUnits() +{ +} + +/** + * Corresponds to attribute markerWidth on the given 'marker' element. + */ +SVGAnimatedLength getMarkerWidth() +{ +} + +/** + * Corresponds to attribute markerHeight on the given 'marker' element. + */ +SVGAnimatedLength getMarkerHeight() +{ +} + +/** + * Corresponds to attribute orient on the given 'marker' element. + * One of the Marker Orientation Types defined above. + */ +SVGAnimatedEnumeration getOrientType() +{ +} + +/** + * Corresponds to attribute orient on the given 'marker' element. + * If markerUnits is SVG_MARKER_ORIENT_ANGLE, the angle value for + * attribute orient ; otherwise, it will be set to zero. + */ +SVGAnimatedAngle getOrientAngle() +{ +} + + +/** + * Sets the value of attribute orient to 'auto'. + */ +void setOrientToAuto() +{ +} + +/** + * Sets the value of attribute orient to the given angle. + */ +void setOrientToAngle(const SVGAngle &angle) +{ +} + + +//#################################################################### +//# SVGMaskElement +//#################################################################### + + +/** + * Corresponds to attribute maskUnits on the given 'mask' element. Takes one of + * the constants defined in SVGUnitTypes. + */ +SVGAnimatedEnumeration getMaskUnits() +{ +} + +/** + * Corresponds to attribute maskContentUnits on the given 'mask' element. Takes + * one of the constants defined in SVGUnitTypes. + */ +SVGAnimatedEnumeration getMaskContentUnits() +{ +} + +/** + * Corresponds to attribute x on the given 'mask' element. + */ +SVGAnimatedLength getX() +{ +} + +/** + * Corresponds to attribute y on the given 'mask' element. + */ +SVGAnimatedLength getY() +{ +} + +/** + * Corresponds to attribute width on the given 'mask' element. + */ +SVGAnimatedLength getWidth() +{ +} + +/** + * Corresponds to attribute height on the given 'mask' element. + */ +SVGAnimatedLength getHeight() +{ +} + +//#################################################################### +//# SVGMetadataElement +//#################################################################### + +//#################################################################### +//# SVGMissingGlyphElement +//#################################################################### + +//#################################################################### +//# SVGMPathElement +//#################################################################### + +//#################################################################### +//# SVGPathElement +//#################################################################### + +/** + * Corresponds to attribute pathLength on the given 'path' element. + */ +SVGAnimatedNumber getPathLength() +{ +} + +/** + * Returns the user agent's computed value for the total length of the path using + * the user agent's distance-along-a-path algorithm, as a distance in the current + * user coordinate system. + */ +double getTotalLength() +{ +} + +/** + * Returns the(x,y) coordinate in user space which is distance units along the + * path, utilizing the user agent's distance-along-a-path algorithm. + */ +SVGPoint getPointAtLength(double distance) +{ +} + +/** + * Returns the index into pathSegList which is distance units along the path, + * utilizing the user agent's distance-along-a-path algorithm. + */ +unsigned long getPathSegAtLength(double distance) +{ +} + +/** + * Returns a stand-alone, parentless SVGPathSegClosePath object. + */ +SVGPathSeg createSVGPathSegClosePath() +{ + SVGPathSeg seg(PATHSEG_CLOSEPATH); + return seg; +} + +/** + * Returns a stand-alone, parentless SVGPathSegMovetoAbs object. + */ +SVGPathSeg createSVGPathSegMovetoAbs(double x, double y) +{ + SVGPathSeg seg(PATHSEG_MOVETO_ABS); + seg.setX(x); + seg.setY(y); + return seg; +} + +/** + * Returns a stand-alone, parentless SVGPathSegMovetoRel object. + */ +SVGPathSeg createSVGPathSegMovetoRel(double x, double y) +{ + SVGPathSeg seg(PATHSEG_MOVETO_REL); + seg.setX(x); + seg.setY(y); + return seg; +} + +/** + * Returns a stand-alone, parentless SVGPathSegLinetoAbs object. + */ +SVGPathSeg createSVGPathSegLinetoAbs(double x, double y) +{ + SVGPathSeg seg(PATHSEG_LINETO_ABS); + seg.setX(x); + seg.setY(y); + return seg; +} + +/** + * Returns a stand-alone, parentless SVGPathSegLinetoRel object. + */ +SVGPathSeg createSVGPathSegLinetoRel(double x, double y) +{ + SVGPathSeg seg(PATHSEG_LINETO_REL); + seg.setX(x); + seg.setY(y); + return seg; +} + +/** + * Returns a stand-alone, parentless SVGPathSegCurvetoCubicAbs object. + */ +SVGPathSeg createSVGPathSegCurvetoCubicAbs(double x, double y, + double x1, double y1, double x2, double y2) +{ + SVGPathSeg seg(PATHSEG_CURVETO_CUBIC_ABS); + seg.setX(x); + seg.setY(y); + seg.setX1(x1); + seg.setY1(y1); + seg.setX2(x2); + seg.setY2(y2); + return seg; +} + +/** + * Returns a stand-alone, parentless SVGPathSegCurvetoCubicRel object. + */ +SVGPathSeg createSVGPathSegCurvetoCubicRel(double x, double y, + double x1, double y1, double x2, double y2) +{ + SVGPathSeg seg(PATHSEG_CURVETO_CUBIC_REL); + seg.setX(x); + seg.setY(y); + seg.setX1(x1); + seg.setY1(y1); + seg.setX2(x2); + seg.setY2(y2); + return seg; +} + +/** + * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticAbs object. + */ +SVGPathSeg createSVGPathSegCurvetoQuadraticAbs(double x, double y, + double x1, double y1) +{ + SVGPathSeg seg(PATHSEG_CURVETO_QUADRATIC_ABS); + seg.setX(x); + seg.setY(y); + seg.setX1(x1); + seg.setY1(y1); + return seg; +} + +/** + * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticRel object. + */ +SVGPathSeg createSVGPathSegCurvetoQuadraticRel(double x, double y, + double x1, double y1) +{ + SVGPathSeg seg(PATHSEG_CURVETO_QUADRATIC_REL); + seg.setX(x); + seg.setY(y); + seg.setX1(x1); + seg.setY1(y1); + return seg; +} + +/** + * Returns a stand-alone, parentless SVGPathSegArcAbs object. + */ +SVGPathSeg createSVGPathSegArcAbs(double x, double y, + double r1, double r2, double angle, + bool largeArcFlag, bool sweepFlag) +{ + SVGPathSeg seg(PATHSEG_ARC_ABS); + seg.setX(x); + seg.setY(y); + seg.setR1(r1); + seg.setR2(r2); + seg.setAngle(angle); + seg.setLargeArcFlag(largeArcFlag); + seg.setSweepFlag(sweepFlag); + return seg; +} + +/** + * Returns a stand-alone, parentless SVGPathSegArcRel object. + */ +SVGPathSeg createSVGPathSegArcRel(double x, double y, double r1, + double r2, double angle, bool largeArcFlag, + bool sweepFlag) +{ + SVGPathSeg seg(PATHSEG_ARC_REL); + seg.setX(x); + seg.setY(y); + seg.setR1(r1); + seg.setR2(r2); + seg.setAngle(angle); + seg.setLargeArcFlag(largeArcFlag); + seg.setSweepFlag(sweepFlag); + return seg; +} + +/** + * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalAbs object. + */ +SVGPathSeg createSVGPathSegLinetoHorizontalAbs(double x) +{ + SVGPathSeg seg(PATHSEG_LINETO_HORIZONTAL_ABS); + seg.setX(x); + return seg; +} + +/** + * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalRel object. + */ +SVGPathSeg createSVGPathSegLinetoHorizontalRel(double x) +{ + SVGPathSeg seg(PATHSEG_LINETO_HORIZONTAL_REL); + seg.setX(x); + return seg; +} + +/** + * Returns a stand-alone, parentless SVGPathSegLinetoVerticalAbs object. + */ +SVGPathSeg createSVGPathSegLinetoVerticalAbs(double y) +{ + SVGPathSeg seg(PATHSEG_LINETO_VERTICAL_ABS); + seg.setY(y); + return seg; +} + +/** + * Returns a stand-alone, parentless SVGPathSegLinetoVerticalRel object. + */ +SVGPathSeg createSVGPathSegLinetoVerticalRel(double y) +{ + SVGPathSeg seg(PATHSEG_LINETO_VERTICAL_REL); + seg.setY(y); + return seg; +} + +/** + * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothAbs object. + */ +SVGPathSeg createSVGPathSegCurvetoCubicSmoothAbs(double x, double y, + double x2, double y2) +{ + SVGPathSeg seg(PATHSEG_CURVETO_CUBIC_SMOOTH_ABS); + seg.setX(x); + seg.setY(y); + seg.setX2(x2); + seg.setY2(y2); + return seg; +} + +/** + * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothRel object. + */ +SVGPathSeg createSVGPathSegCurvetoCubicSmoothRel(double x, double y, + double x2, double y2) +{ + SVGPathSeg seg(PATHSEG_CURVETO_CUBIC_SMOOTH_REL); + seg.setX(x); + seg.setY(y); + seg.setX2(x2); + seg.setY2(y2); + return seg; +} + +/** + * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothAbs + * object. + */ +SVGPathSeg createSVGPathSegCurvetoQuadraticSmoothAbs(double x, double y) +{ + SVGPathSeg seg(PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS); + seg.setX(x); + seg.setY(y); + return seg; +} + +/** + * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothRel + * object. + */ +SVGPathSeg createSVGPathSegCurvetoQuadraticSmoothRel(double x, double y) +{ + SVGPathSeg seg(PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL); + seg.setX(x); + seg.setY(y); + return seg; +} + + +//#################################################################### +//# SVGPatternElement +//#################################################################### + +/** + * Corresponds to attribute patternUnits on the given 'pattern' element. + * Takes one of the constants defined in SVGUnitTypes. + */ +SVGAnimatedEnumeration getPatternUnits() +{ +} + +/** + * Corresponds to attribute patternContentUnits on the given 'pattern' + * element. Takes one of the constants defined in SVGUnitTypes. + */ +SVGAnimatedEnumeration getPatternContentUnits() +{ +} + +/** + * Corresponds to attribute patternTransform on the given 'pattern' element. + */ +SVGAnimatedTransformList getPatternTransform() +{ +} + +/** + * Corresponds to attribute x on the given 'pattern' element. + */ +SVGAnimatedLength getX() +{ +} + +/** + * + */ +SVGAnimatedLength getY() +{ +} + +/** + * Corresponds to attribute width on the given 'pattern' element. + */ +SVGAnimatedLength getWidth() +{ +} + +/** + * Corresponds to attribute height on the given 'pattern' element. + */ +SVGAnimatedLength getHeight() +{ +} + + +//#################################################################### +//# SVGPolyLineElement +//#################################################################### + +//#################################################################### +//# SVGPolygonElement +//#################################################################### + + +//#################################################################### +//# SVGRadialGradientElement +//#################################################################### + + +/** + * Corresponds to attribute cx on the given 'radialGradient' element. + */ +SVGAnimatedLength getCx() +{ +} + + +/** + * Corresponds to attribute cy on the given 'radialGradient' element. + */ +SVGAnimatedLength getCy() +{ +} + + +/** + * Corresponds to attribute r on the given 'radialGradient' element. + */ +SVGAnimatedLength getR() +{ +} + + +/** + * Corresponds to attribute fx on the given 'radialGradient' element. + */ +SVGAnimatedLength getFx() +{ +} + + +/** + * Corresponds to attribute fy on the given 'radialGradient' element. + */ +SVGAnimatedLength getFy() +{ +} + + +//#################################################################### +//# SVGRectElement +//#################################################################### + +/** + * Corresponds to attribute x on the given 'rect' element. + */ +SVGAnimatedLength getX() +{ +} + +/** + * Corresponds to attribute y on the given 'rect' element. + */ +SVGAnimatedLength getY() +{ +} + +/** + * Corresponds to attribute width on the given 'rect' element. + */ +SVGAnimatedLength getWidth() +{ +} + +/** + * Corresponds to attribute height on the given 'rect' element. + */ +SVGAnimatedLength getHeight() +{ +} + + +/** + * Corresponds to attribute rx on the given 'rect' element. + */ +SVGAnimatedLength getRx() +{ +} + +/** + * Corresponds to attribute ry on the given 'rect' element. + */ +SVGAnimatedLength getRy() +{ +} + + +//#################################################################### +//# SVGScriptElement +//#################################################################### + +/** + * + */ +DOMString getType() +{ +} + +/** + * + */ +void setType(const DOMString &val) throw (DOMException) +{ +} + +//#################################################################### +//# SVGSetElement +//#################################################################### + +//#################################################################### +//# SVGStopElement +//#################################################################### + + +/** + * Corresponds to attribute offset on the given 'stop' element. + */ +SVGAnimatedNumber getOffset() +{ +} + + +//#################################################################### +//# SVGStyleElement +//#################################################################### + +/** + * Get the attribute xml:space on the given element. + */ +DOMString getXmlspace() +{ +} + +/** + * Set the attribute xml:space on the given element. + */ +void setXmlspace(const DOMString &val) throw (DOMException) +{ +} + +/** + * Get the attribute type on the given 'style' element. + */ +DOMString getType() +{ +} + +/** + * Set the attribute type on the given 'style' element. + */ +void setType(const DOMString &val) throw (DOMException) +{ +} + +/** + * Get the attribute media on the given 'style' element. + */ +DOMString getMedia() +{ +} + +/** + * Set the attribute media on the given 'style' element. + */ +void setMedia(const DOMString &val) throw (DOMException) +{ +} + +/** + * Get the attribute title on the given 'style' element. + */ +DOMString getTitle() +{ +} + +/** + * Set the attribute title on the given 'style' element. + */ +void setTitle(const DOMString &val) throw (DOMException) +{ +} + +//#################################################################### +//# SVGSymbolElement +//#################################################################### + +//#################################################################### +//# SVGSVGElement +//#################################################################### + +/** + * Corresponds to attribute x on the given 'svg' element. + */ +SVGAnimatedLength getX() +{ +} + +/** + * Corresponds to attribute y on the given 'svg' element. + */ +SVGAnimatedLength getY() +{ +} + +/** + * Corresponds to attribute width on the given 'svg' element. + */ +SVGAnimatedLength getWidth() +{ +} + +/** + * Corresponds to attribute height on the given 'svg' element. + */ +SVGAnimatedLength getHeight() +{ +} + +/** + * Get the attribute contentScriptType on the given 'svg' element. + */ +DOMString getContentScriptType() +{ +} + +/** + * Set the attribute contentScriptType on the given 'svg' element. + */ +void setContentScriptType(const DOMString &val) throw (DOMException) +{ +} + + +/** + * Get the attribute contentStyleType on the given 'svg' element. + */ +DOMString getContentStyleType() +{ +} + +/** + * Set the attribute contentStyleType on the given 'svg' element. + */ +void setContentStyleType(const DOMString &val) throw (DOMException) +{ +} + +/** + * The position and size of the viewport(implicit or explicit) that corresponds + * to this 'svg' element. When the user agent is actually rendering the content, + * then the position and size values represent the actual values when rendering. + * The position and size values are unitless values in the coordinate system of + * the parent element. If no parent element exists(i.e., 'svg' element + * represents the root of the document tree), if this SVG document is embedded as + * part of another document(e.g., via the HTML 'object' element), then the + * position and size are unitless values in the coordinate system of the parent + * document.(If the parent uses CSS or XSL layout, then unitless values + * represent pixel units for the current CSS or XSL viewport, as described in the + * CSS2 specification.) If the parent element does not have a coordinate system, + * then the user agent should provide reasonable default values for this attribute. + */ +SVGRect getViewport() +{ +} + +/** + * Size of a pixel units(as defined by CSS2) along the x-axis of the viewport, + * which represents a unit somewhere in the range of 70dpi to 120dpi, and, on + * systems that support this, might actually match the characteristics of the + * target medium. On systems where it is impossible to know the size of a pixel, + * a suitable default pixel size is provided. + */ +double getPixelUnitToMillimeterX() +{ +} + +/** + * Corresponding size of a pixel unit along the y-axis of the viewport. + */ +double getPixelUnitToMillimeterY() +{ +} + +/** + * User interface(UI) events in DOM Level 2 indicate the screen positions at + * which the given UI event occurred. When the user agent actually knows the + * physical size of a "screen unit", this attribute will express that information +{ +} + * otherwise, user agents will provide a suitable default value such as .28mm. + */ +double getScreenPixelToMillimeterX() +{ +} + +/** + * Corresponding size of a screen pixel along the y-axis of the viewport. + */ +double getScreenPixelToMillimeterY() +{ +} + + +/** + * The initial view(i.e., before magnification and panning) of the current + * innermost SVG document fragment can be either the "standard" view(i.e., based + * on attributes on the 'svg' element such as fitBoxToViewport) or to a "custom" + * view(i.e., a hyperlink into a particular 'view' or other element - see + * Linking into SVG content: URI fragments and SVG views). If the initial view is + * the "standard" view, then this attribute is false. If the initial view is a + * "custom" view, then this attribute is true. + */ +bool getUseCurrentView() +{ +} + +/** + * Set the value above + */ +void setUseCurrentView(bool val) throw (DOMException) +{ +} + +/** + * The definition of the initial view(i.e., before magnification and panning) of + * the current innermost SVG document fragment. The meaning depends on the + * situation: + * + * * If the initial view was a "standard" view, then: + * o the values for viewBox, preserveAspectRatio and zoomAndPan within + * currentView will match the values for the corresponding DOM attributes that + * are on SVGSVGElement directly + * o the values for transform and viewTarget within currentView will be null + * * If the initial view was a link into a 'view' element, then: + * o the values for viewBox, preserveAspectRatio and zoomAndPan within + * currentView will correspond to the corresponding attributes for the given + * 'view' element + * o the values for transform and viewTarget within currentView will be null + * * If the initial view was a link into another element(i.e., other than a + * 'view'), then: + * o the values for viewBox, preserveAspectRatio and zoomAndPan within + * currentView will match the values for the corresponding DOM attributes that + * are on SVGSVGElement directly for the closest ancestor 'svg' element + * o the values for transform within currentView will be null + * o the viewTarget within currentView will represent the target of the link + * * If the initial view was a link into the SVG document fragment using an SVG + * view specification fragment identifier(i.e., #svgView(...)), then: + * o the values for viewBox, preserveAspectRatio, zoomAndPan, transform and + * viewTarget within currentView will correspond to the values from the SVG view + * specification fragment identifier + * + */ +SVGViewSpec getCurrentView() +{ +} + + +/** + * This attribute indicates the current scale factor relative to the initial view + * to take into account user magnification and panning operations, as described + * under Magnification and panning. DOM attributes currentScale and + * currentTranslate are equivalent to the 2x3 matrix [a b c d e f] = + * [currentScale 0 0 currentScale currentTranslate.x currentTranslate.y]. If + * "magnification" is enabled(i.e., zoomAndPan="magnify"), then the effect is as + * if an extra transformation were placed at the outermost level on the SVG + * document fragment(i.e., outside the outermost 'svg' element). + */ +double getCurrentScale() +{ +} + +/** + * Set the value above. + */ +void setCurrentScale(double val) throw (DOMException) +{ +} + +/** + * The corresponding translation factor that takes into account + * user "magnification". + */ +SVGPoint getCurrentTranslate() +{ +} + +/** + * Takes a time-out value which indicates that redraw shall not occur until:(a) + * the corresponding unsuspendRedraw(suspend_handle_id) call has been made,(b) + * an unsuspendRedrawAll() call has been made, or(c) its timer has timed out. In + * environments that do not support interactivity(e.g., print media), then + * redraw shall not be suspended. suspend_handle_id = + * suspendRedraw(max_wait_milliseconds) and unsuspendRedraw(suspend_handle_id) + * must be packaged as balanced pairs. When you want to suspend redraw actions as + * a collection of SVG DOM changes occur, then precede the changes to the SVG DOM + * with a method call similar to suspend_handle_id = + * suspendRedraw(max_wait_milliseconds) and follow the changes with a method call + * similar to unsuspendRedraw(suspend_handle_id). Note that multiple + * suspendRedraw calls can be used at once and that each such method call is + * treated independently of the other suspendRedraw method calls. + */ +unsigned long suspendRedraw(unsigned long max_wait_milliseconds) +{ +} + +/** + * Cancels a specified suspendRedraw() by providing a unique suspend_handle_id. + */ +void unsuspendRedraw(unsigned long suspend_handle_id) throw (DOMException) +{ +} + +/** + * Cancels all currently active suspendRedraw() method calls. This method is most + * useful at the very end of a set of SVG DOM calls to ensure that all pending + * suspendRedraw() method calls have been cancelled. + */ +void unsuspendRedrawAll() +{ +} + +/** + * In rendering environments supporting interactivity, forces the user agent to + * immediately redraw all regions of the viewport that require updating. + */ +void forceRedraw() +{ +} + +/** + * Suspends(i.e., pauses) all currently running animations that are defined + * within the SVG document fragment corresponding to this 'svg' element, causing + * the animation clock corresponding to this document fragment to stand still + * until it is unpaused. + */ +void pauseAnimations() +{ +} + +/** + * Unsuspends(i.e., unpauses) currently running animations that are defined + * within the SVG document fragment, causing the animation clock to continue from + * the time at which it was suspended. + */ +void unpauseAnimations() +{ +} + +/** + * Returns true if this SVG document fragment is in a paused state. + */ +bool animationsPaused() +{ +} + +/** + * Returns the current time in seconds relative to the start time for + * the current SVG document fragment. + */ +double getCurrentTime() +{ +} + +/** + * Adjusts the clock for this SVG document fragment, establishing + * a new current time. + */ +void setCurrentTime(double seconds) +{ +} + +/** + * Returns the list of graphics elements whose rendered content intersects the + * supplied rectangle, honoring the 'pointer-events' property value on each + * candidate graphics element. + */ +NodeList getIntersectionList(const SVGRect &rect, + const SVGElementPtr referenceElement) +{ +} + +/** + * Returns the list of graphics elements whose rendered content is entirely + * contained within the supplied rectangle, honoring the 'pointer-events' + * property value on each candidate graphics element. + */ +NodeList getEnclosureList(const SVGRect &rect, + const SVGElementPtr referenceElement) +{ +} + +/** + * Returns true if the rendered content of the given element intersects the + * supplied rectangle, honoring the 'pointer-events' property value on each + * candidate graphics element. + */ +bool checkIntersection(const SVGElementPtr element, const SVGRect &rect) +{ +} + +/** + * Returns true if the rendered content of the given element is entirely + * contained within the supplied rectangle, honoring the 'pointer-events' + * property value on each candidate graphics element. + */ +bool checkEnclosure(const SVGElementPtr element, const SVGRect &rect) +{ +} + +/** + * Unselects any selected objects, including any selections of text + * strings and type-in bars. + */ +void deselectAll() +{ +} + +/** + * Creates an SVGNumber object outside of any document trees. The object + * is initialized to a value of zero. + */ +SVGNumber createSVGNumber() +{ +} + +/** + * Creates an SVGLength object outside of any document trees. The object + * is initialized to the value of 0 user units. + */ +SVGLength createSVGLength() +{ +} + +/** + * Creates an SVGAngle object outside of any document trees. The object + * is initialized to the value 0 degrees(unitless). + */ +SVGAngle createSVGAngle() +{ +} + +/** + * Creates an SVGPoint object outside of any document trees. The object + * is initialized to the point(0,0) in the user coordinate system. + */ +SVGPoint createSVGPoint() +{ +} + +/** + * Creates an SVGMatrix object outside of any document trees. The object + * is initialized to the identity matrix. + */ +SVGMatrix createSVGMatrix() +{ +} + +/** + * Creates an SVGRect object outside of any document trees. The object + * is initialized such that all values are set to 0 user units. + */ +SVGRect createSVGRect() +{ +} + +/** + * Creates an SVGTransform object outside of any document trees. + * The object is initialized to an identity matrix transform + * (SVG_TRANSFORM_MATRIX). + */ +SVGTransform createSVGTransform() +{ +} + +/** + * Creates an SVGTransform object outside of any document trees. + * The object is initialized to the given matrix transform + * (i.e., SVG_TRANSFORM_MATRIX). + */ +SVGTransform createSVGTransformFromMatrix(const SVGMatrix &matrix) +{ +} + +/** + * Searches this SVG document fragment(i.e., the search is restricted to a + * subset of the document tree) for an Element whose id is given by elementId. If + * an Element is found, that Element is returned. If no such element exists, + * returns null. Behavior is not defined if more than one element has this id. + */ +ElementPtr getElementById(const DOMString& elementId) +{ +} + + +//#################################################################### +//# SVGTextElement +//#################################################################### + + +//#################################################################### +//# SVGTextContentElement +//#################################################################### + + +/** + * Corresponds to attribute textLength on the given element. + */ +SVGAnimatedLength getTextLength() +{ +} + + +/** + * Corresponds to attribute lengthAdjust on the given element. The value must be + * one of the length adjust constants specified above. + */ +SVGAnimatedEnumeration getLengthAdjust() +{ +} + + +/** + * Returns the total number of characters to be rendered within the current + * element. Includes characters which are included via a 'tref' reference. + */ +long getNumberOfChars() +{ +} + +/** + * The total sum of all of the advance values from rendering all of the + * characters within this element, including the advance value on the glyphs + *(horizontal or vertical), the effect of properties 'kerning', 'letter-spacing' + * and 'word-spacing' and adjustments due to attributes dx and dy on 'tspan' + * elements. For non-rendering environments, the user agent shall make reasonable + * assumptions about glyph metrics. + */ +double getComputedTextLength() +{ +} + +/** + * The total sum of all of the advance values from rendering the specified + * substring of the characters, including the advance value on the glyphs + *(horizontal or vertical), the effect of properties 'kerning', 'letter-spacing' + * and 'word-spacing' and adjustments due to attributes dx and dy on 'tspan' + * elements. For non-rendering environments, the user agent shall make reasonable + * assumptions about glyph metrics. + */ +double getSubStringLength(unsigned long charnum, unsigned long nchars) + throw (DOMException) +{ +} + +/** + * Returns the current text position before rendering the character in the user + * coordinate system for rendering the glyph(s) that correspond to the specified + * character. The current text position has already taken into account the + * effects of any inter-character adjustments due to properties 'kerning', + * 'letter-spacing' and 'word-spacing' and adjustments due to attributes x, y, dx + * and dy. If multiple consecutive characters are rendered inseparably(e.g., as + * a single glyph or a sequence of glyphs), then each of the inseparable + * characters will return the start position for the first glyph. + */ +SVGPoint getStartPositionOfChar(unsigned long charnum) throw (DOMException) +{ +} + +/** + * Returns the current text position after rendering the character in the user + * coordinate system for rendering the glyph(s) that correspond to the specified + * character. This current text position does not take into account the effects + * of any inter-character adjustments to prepare for the next character, such as + * properties 'kerning', 'letter-spacing' and 'word-spacing' and adjustments due + * to attributes x, y, dx and dy. If multiple consecutive characters are rendered + * inseparably(e.g., as a single glyph or a sequence of glyphs), then each of + * the inseparable characters will return the end position for the last glyph. + */ +SVGPoint getEndPositionOfChar(unsigned long charnum) throw (DOMException) +{ +} + +/** + * Returns a tightest rectangle which defines the minimum and maximum X and Y + * values in the user coordinate system for rendering the glyph(s) that + * correspond to the specified character. The calculations assume that all glyphs + * occupy the full standard glyph cell for the font. If multiple consecutive + * characters are rendered inseparably(e.g., as a single glyph or a sequence of + * glyphs), then each of the inseparable characters will return the same extent. + */ +SVGRect getExtentOfChar(unsigned long charnum) throw (DOMException) +{ +} + +/** + * Returns the rotation value relative to the current user coordinate system used + * to render the glyph(s) corresponding to the specified character. If multiple + * glyph(s) are used to render the given character and the glyphs each have + * different rotations(e.g., due to text-on-a-path), the user agent shall return + * an average value(e.g., the rotation angle at the midpoint along the path for + * all glyphs used to render this character). The rotation value represents the + * rotation that is supplemental to any rotation due to properties + * 'glyph-orientation-horizontal' and 'glyph-orientation-vertical'; thus, any + * glyph rotations due to these properties are not included into the returned + * rotation value. If multiple consecutive characters are rendered inseparably + *(e.g., as a single glyph or a sequence of glyphs), then each of the + * inseparable characters will return the same rotation value. + */ +double getRotationOfChar(unsigned long charnum) throw (DOMException) +{ +} + +/** + * Returns the index of the character whose corresponding glyph cell bounding box + * contains the specified point. The calculations assume that all glyphs occupy + * the full standard glyph cell for the font. If no such character exists, a + * value of -1 is returned. If multiple such characters exist, the character + * within the element whose glyphs were rendered last(i.e., take into account + * any reordering such as for bidirectional text) is used. If multiple + * consecutive characters are rendered inseparably(e.g., as a single glyph or a + * sequence of glyphs), then the user agent shall allocate an equal percentage of + * the text advance amount to each of the contributing characters in determining + * which of the characters is chosen. + */ +long getCharNumAtPosition(const SVGPoint &point) +{ +} + +/** + * Causes the specified substring to be selected just as if the user + * selected the substring interactively. + */ +void selectSubString(unsigned long charnum, unsigned long nchars) + throw (DOMException) +{ +} + + + + + +//#################################################################### +//# SVGTextPathElement +//#################################################################### + + +/** + * Corresponds to attribute startOffset on the given 'textPath' element. + */ +SVGAnimatedLength getStartOffset() +{ +} + +/** + * Corresponds to attribute method on the given 'textPath' element. The value + * must be one of the method type constants specified above. + */ +SVGAnimatedEnumeration getMethod() +{ +} + +/** + * Corresponds to attribute spacing on the given 'textPath' element. + * The value must be one of the spacing type constants specified above. + */ +SVGAnimatedEnumeration getSpacing() +{ +} + + +//#################################################################### +//# SVGTextPositioningElement +//#################################################################### + + +/** + * Corresponds to attribute x on the given element. + */ +SVGAnimatedLength getX() +{ +} + +/** + * Corresponds to attribute y on the given element. + */ +SVGAnimatedLength getY() +{ +} + +/** + * Corresponds to attribute dx on the given element. + */ +SVGAnimatedLength getDx() +{ +} + +/** + * Corresponds to attribute dy on the given element. + */ +SVGAnimatedLength getDy() +{ +} + + +/** + * Corresponds to attribute rotate on the given element. + */ +SVGAnimatedNumberList getRotate() +{ +} + + +//#################################################################### +//# SVGTitleElement +//#################################################################### + +//#################################################################### +//# SVGTRefElement +//#################################################################### + +//#################################################################### +//# SVGTSpanElement +//#################################################################### + +//#################################################################### +//# SVGSwitchElement +//#################################################################### + +//#################################################################### +//# SVGUseElement +//#################################################################### + +/** + * Corresponds to attribute x on the given 'use' element. + */ +SVGAnimatedLength getX() +{ +} + +/** + * Corresponds to attribute y on the given 'use' element. + */ +SVGAnimatedLength getY() +{ +} + +/** + * Corresponds to attribute width on the given 'use' element. + */ +SVGAnimatedLength getWidth() +{ +} + +/** + * Corresponds to attribute height on the given 'use' element. + */ +SVGAnimatedLength getHeight() +{ +} + +/** + * The root of the "instance tree". See description of SVGElementInstance for + * a discussion on the instance tree. + * */ +SVGElementInstance getInstanceRoot() +{ +} + +/** + * If the 'href' attribute is being animated, contains the current animated root + * of the "instance tree". If the 'href' attribute is not currently being + * animated, contains the same value as 'instanceRoot'. The root of the "instance + * tree". See description of SVGElementInstance for a discussion on the instance + * tree. + */ +SVGElementInstance getAnimatedInstanceRoot() +{ +} + + +//#################################################################### +//# SVGVKernElement +//#################################################################### + +//#################################################################### +//# SVGViewElement +//#################################################################### + + +/** + * + */ +SVGStringList getViewTarget(); + + + + +//################## +//# Non-API methods +//################## + + +/** + * + */ +SVGElement::~SVGElement() +{ +} + + + + +/*######################################################################### +## SVGDocument +#########################################################################*/ + + +/** + * The title of a document as specified by the title sub-element of the 'svg' + * root element(i.e., Here is the title...) + */ +DOMString SVGDocument::getTitle() +{ +} + +/** + * Returns the URI of the page that linked to this page. The value is an empty + * string if the user navigated to the page directly(not through a link, but, + * for example, via a bookmark). + */ +DOMString SVGDocument::getReferrer() +{ +} + + +/** + * The domain name of the server that served the document, or a null string if + * the server cannot be identified by a domain name. + */ +DOMString SVGDocument::getDomain() +{ +} + + +/** + * The complete URI of the document. + */ +DOMString SVGDocument::getURL() +{ +} + + +/** + * The root 'svg' element in the document hierarchy. + */ +SVGElementPtr SVGDocument::getRootElement() +{ +} + + +/** + * Overloaded from Document + * + */ +ElementPtr SVGDocument::createElement(const DOMString &tagName) +{ + ElementPtr ptr; + return ptr; +} + + +/** + * Overloaded from Document + * + */ +ElementPtr SVGDocument::createElementNS(const DOMString &tagName, + const DOMString &namespaceURI) +{ + ElementPtr ptr; + return ptr; +} + + +/** + * The root 'svg' element in the document hierarchy. + */ +SVGElementPtr SVGDocument::getRootElement() +{ +} + + + +//################## +//# Non-API methods +//################## + +/** + * + */ +SVGDocument::~SVGDocument() +{ +} + + + +/*######################################################################### +## GetSVGDocument +#########################################################################*/ + + +/** + * Returns the SVGDocument object for the referenced SVG document. + */ +SVGDocumentPtr GetSVGDocument::getSVGDocument() + throw (DOMException) +{ + SVGDocumentPtr ptr; + return ptr; +} + +//################## +//# Non-API methods +//################## + +/** + * + */ +GetSVGDocument::~GetSVGDocument() +{ +} + + + + + + + +} //namespace svg +} //namespace dom +} //namespace w3c +} //namespace org + +#endif // __SVG_H__ +/*######################################################################### +## E N D O F F I L E +#########################################################################*/ + diff --git a/src/helper/geom.cpp b/src/helper/geom.cpp index 9b3b98894..34195be15 100644 --- a/src/helper/geom.cpp +++ b/src/helper/geom.cpp @@ -1,496 +1,496 @@ -#define INKSCAPE_HELPER_GEOM_CPP - -/** - * Specific geometry functions for Inkscape, not provided my lib2geom. - * - * Author: - * Johan Engelen - * - * Copyright (C) 2008 Johan Engelen - * - * Released under GNU GPL - */ - -#include "helper/geom.h" -#include -#include <2geom/pathvector.h> -#include <2geom/path.h> -#include <2geom/transforms.h> -#include <2geom/rect.h> -#include <2geom/coord.h> -#include <2geom/sbasis-to-bezier.h> -#include -#include - -using Geom::X; -using Geom::Y; - -#define NR_HUGE 1e18 - -//################################################################################# -// BOUNDING BOX CALCULATIONS - -/* Fast bbox calculation */ -/* Thanks to Nathan Hurst for suggesting it */ -static void -cubic_bbox (Geom::Coord x000, Geom::Coord y000, Geom::Coord x001, Geom::Coord y001, Geom::Coord x011, Geom::Coord y011, Geom::Coord x111, Geom::Coord y111, Geom::Rect &bbox) -{ - Geom::Coord a, b, c, D; - - bbox[0].extendTo(x111); - bbox[1].extendTo(y111); - - /* - * xttt = s * (s * (s * x000 + t * x001) + t * (s * x001 + t * x011)) + t * (s * (s * x001 + t * x011) + t * (s * x011 + t * x111)) - * xttt = s * (s2 * x000 + s * t * x001 + t * s * x001 + t2 * x011) + t * (s2 * x001 + s * t * x011 + t * s * x011 + t2 * x111) - * xttt = s * (s2 * x000 + 2 * st * x001 + t2 * x011) + t * (s2 * x001 + 2 * st * x011 + t2 * x111) - * xttt = s3 * x000 + 2 * s2t * x001 + st2 * x011 + s2t * x001 + 2st2 * x011 + t3 * x111 - * xttt = s3 * x000 + 3s2t * x001 + 3st2 * x011 + t3 * x111 - * xttt = s3 * x000 + (1 - s) 3s2 * x001 + (1 - s) * (1 - s) * 3s * x011 + (1 - s) * (1 - s) * (1 - s) * x111 - * xttt = s3 * x000 + (3s2 - 3s3) * x001 + (3s - 6s2 + 3s3) * x011 + (1 - 2s + s2 - s + 2s2 - s3) * x111 - * xttt = (x000 - 3 * x001 + 3 * x011 - x111) * s3 + - * ( 3 * x001 - 6 * x011 + 3 * x111) * s2 + - * ( 3 * x011 - 3 * x111) * s + - * ( x111) - * xttt' = (3 * x000 - 9 * x001 + 9 * x011 - 3 * x111) * s2 + - * ( 6 * x001 - 12 * x011 + 6 * x111) * s + - * ( 3 * x011 - 3 * x111) - */ - - a = 3 * x000 - 9 * x001 + 9 * x011 - 3 * x111; - b = 6 * x001 - 12 * x011 + 6 * x111; - c = 3 * x011 - 3 * x111; - - /* - * s = (-b +/- sqrt (b * b - 4 * a * c)) / 2 * a; - */ - if (fabs (a) < Geom::EPSILON) { - /* s = -c / b */ - if (fabs (b) > Geom::EPSILON) { - double s, t, xttt; - s = -c / b; - if ((s > 0.0) && (s < 1.0)) { - t = 1.0 - s; - xttt = s * s * s * x000 + 3 * s * s * t * x001 + 3 * s * t * t * x011 + t * t * t * x111; - bbox[0].extendTo(xttt); - } - } - } else { - /* s = (-b +/- sqrt (b * b - 4 * a * c)) / 2 * a; */ - D = b * b - 4 * a * c; - if (D >= 0.0) { - Geom::Coord d, s, t, xttt; - /* Have solution */ - d = sqrt (D); - s = (-b + d) / (2 * a); - if ((s > 0.0) && (s < 1.0)) { - t = 1.0 - s; - xttt = s * s * s * x000 + 3 * s * s * t * x001 + 3 * s * t * t * x011 + t * t * t * x111; - bbox[0].extendTo(xttt); - } - s = (-b - d) / (2 * a); - if ((s > 0.0) && (s < 1.0)) { - t = 1.0 - s; - xttt = s * s * s * x000 + 3 * s * s * t * x001 + 3 * s * t * t * x011 + t * t * t * x111; - bbox[0].extendTo(xttt); - } - } - } - - a = 3 * y000 - 9 * y001 + 9 * y011 - 3 * y111; - b = 6 * y001 - 12 * y011 + 6 * y111; - c = 3 * y011 - 3 * y111; - - if (fabs (a) < Geom::EPSILON) { - /* s = -c / b */ - if (fabs (b) > Geom::EPSILON) { - double s, t, yttt; - s = -c / b; - if ((s > 0.0) && (s < 1.0)) { - t = 1.0 - s; - yttt = s * s * s * y000 + 3 * s * s * t * y001 + 3 * s * t * t * y011 + t * t * t * y111; - bbox[1].extendTo(yttt); - } - } - } else { - /* s = (-b +/- sqrt (b * b - 4 * a * c)) / 2 * a; */ - D = b * b - 4 * a * c; - if (D >= 0.0) { - Geom::Coord d, s, t, yttt; - /* Have solution */ - d = sqrt (D); - s = (-b + d) / (2 * a); - if ((s > 0.0) && (s < 1.0)) { - t = 1.0 - s; - yttt = s * s * s * y000 + 3 * s * s * t * y001 + 3 * s * t * t * y011 + t * t * t * y111; - bbox[1].extendTo(yttt); - } - s = (-b - d) / (2 * a); - if ((s > 0.0) && (s < 1.0)) { - t = 1.0 - s; - yttt = s * s * s * y000 + 3 * s * s * t * y001 + 3 * s * t * t * y011 + t * t * t * y111; - bbox[1].extendTo(yttt); - } - } - } -} - -Geom::Rect -bounds_fast_transformed(Geom::PathVector const & pv, Geom::Matrix const & t) -{ - return bounds_exact_transformed(pv, t); //use this as it is faster for now! :) -// return Geom::bounds_fast(pv * t); -} - -Geom::Rect -bounds_exact_transformed(Geom::PathVector const & pv, Geom::Matrix const & t) -{ - Geom::Rect bbox; - - if (pv.empty()) - return bbox; - - Geom::Point initial = pv.front().initialPoint() * t; - bbox = Geom::Rect(initial, initial); // obtain well defined bbox as starting point to unionWith - - for (Geom::PathVector::const_iterator it = pv.begin(); it != pv.end(); ++it) { - bbox.expandTo(it->initialPoint() * t); - - // don't loop including closing segment, since that segment can never increase the bbox - for (Geom::Path::const_iterator cit = it->begin(); cit != it->end_open(); ++cit) { - Geom::Curve const &c = *cit; - - if( dynamic_cast(&c) || - dynamic_cast(&c) || - dynamic_cast(&c) ) - { - bbox.expandTo( c.finalPoint() * t ); - } - else if(Geom::CubicBezier const *cubic_bezier = dynamic_cast(&c)) - { - Geom::Point c0 = (*cubic_bezier)[0] * t; - Geom::Point c1 = (*cubic_bezier)[1] * t; - Geom::Point c2 = (*cubic_bezier)[2] * t; - Geom::Point c3 = (*cubic_bezier)[3] * t; - cubic_bbox( c0[0], c0[1], - c1[0], c1[1], - c2[0], c2[1], - c3[0], c3[1], - bbox ); - } - else - { - // should handle all not-so-easy curves: - Geom::Curve *ctemp = cit->transformed(t); - bbox.unionWith( ctemp->boundsExact()); - delete ctemp; - } - } - } - //return Geom::bounds_exact(pv * t); - return bbox; -} - - - -static void -geom_line_wind_distance (Geom::Coord x0, Geom::Coord y0, Geom::Coord x1, Geom::Coord y1, Geom::Point const &pt, int *wind, Geom::Coord *best) -{ - Geom::Coord Ax, Ay, Bx, By, Dx, Dy, s; - Geom::Coord dist2; - - /* Find distance */ - Ax = x0; - Ay = y0; - Bx = x1; - By = y1; - Dx = x1 - x0; - Dy = y1 - y0; - const Geom::Coord Px = pt[X]; - const Geom::Coord Py = pt[Y]; - - if (best) { - s = ((Px - Ax) * Dx + (Py - Ay) * Dy) / (Dx * Dx + Dy * Dy); - if (s <= 0.0) { - dist2 = (Px - Ax) * (Px - Ax) + (Py - Ay) * (Py - Ay); - } else if (s >= 1.0) { - dist2 = (Px - Bx) * (Px - Bx) + (Py - By) * (Py - By); - } else { - Geom::Coord Qx, Qy; - Qx = Ax + s * Dx; - Qy = Ay + s * Dy; - dist2 = (Px - Qx) * (Px - Qx) + (Py - Qy) * (Py - Qy); - } - - if (dist2 < (*best * *best)) *best = sqrt (dist2); - } - - if (wind) { - /* Find wind */ - if ((Ax >= Px) && (Bx >= Px)) return; - if ((Ay >= Py) && (By >= Py)) return; - if ((Ay < Py) && (By < Py)) return; - if (Ay == By) return; - /* Ctach upper y bound */ - if (Ay == Py) { - if (Ax < Px) *wind -= 1; - return; - } else if (By == Py) { - if (Bx < Px) *wind += 1; - return; - } else { - Geom::Coord Qx; - /* Have to calculate intersection */ - Qx = Ax + Dx * (Py - Ay) / Dy; - if (Qx < Px) { - *wind += (Dy > 0.0) ? 1 : -1; - } - } - } -} - -static void -geom_cubic_bbox_wind_distance (Geom::Coord x000, Geom::Coord y000, - Geom::Coord x001, Geom::Coord y001, - Geom::Coord x011, Geom::Coord y011, - Geom::Coord x111, Geom::Coord y111, - Geom::Point const &pt, - Geom::Rect *bbox, int *wind, Geom::Coord *best, - Geom::Coord tolerance) -{ - Geom::Coord x0, y0, x1, y1, len2; - int needdist, needwind, needline; - - const Geom::Coord Px = pt[X]; - const Geom::Coord Py = pt[Y]; - - needdist = 0; - needwind = 0; - needline = 0; - - if (bbox) cubic_bbox (x000, y000, x001, y001, x011, y011, x111, y111, *bbox); - - x0 = MIN (x000, x001); - x0 = MIN (x0, x011); - x0 = MIN (x0, x111); - y0 = MIN (y000, y001); - y0 = MIN (y0, y011); - y0 = MIN (y0, y111); - x1 = MAX (x000, x001); - x1 = MAX (x1, x011); - x1 = MAX (x1, x111); - y1 = MAX (y000, y001); - y1 = MAX (y1, y011); - y1 = MAX (y1, y111); - - if (best) { - /* Quickly adjust to endpoints */ - len2 = (x000 - Px) * (x000 - Px) + (y000 - Py) * (y000 - Py); - if (len2 < (*best * *best)) *best = (Geom::Coord) sqrt (len2); - len2 = (x111 - Px) * (x111 - Px) + (y111 - Py) * (y111 - Py); - if (len2 < (*best * *best)) *best = (Geom::Coord) sqrt (len2); - - if (((x0 - Px) < *best) && ((y0 - Py) < *best) && ((Px - x1) < *best) && ((Py - y1) < *best)) { - /* Point is inside sloppy bbox */ - /* Now we have to decide, whether subdivide */ - /* fixme: (Lauris) */ - if (((y1 - y0) > 5.0) || ((x1 - x0) > 5.0)) { - needdist = 1; - } else { - needline = 1; - } - } - } - if (!needdist && wind) { - if ((y1 >= Py) && (y0 < Py) && (x0 < Px)) { - /* Possible intersection at the left */ - /* Now we have to decide, whether subdivide */ - /* fixme: (Lauris) */ - if (((y1 - y0) > 5.0) || ((x1 - x0) > 5.0)) { - needwind = 1; - } else { - needline = 1; - } - } - } - - if (needdist || needwind) { - Geom::Coord x00t, x0tt, xttt, x1tt, x11t, x01t; - Geom::Coord y00t, y0tt, yttt, y1tt, y11t, y01t; - Geom::Coord s, t; - - t = 0.5; - s = 1 - t; - - x00t = s * x000 + t * x001; - x01t = s * x001 + t * x011; - x11t = s * x011 + t * x111; - x0tt = s * x00t + t * x01t; - x1tt = s * x01t + t * x11t; - xttt = s * x0tt + t * x1tt; - - y00t = s * y000 + t * y001; - y01t = s * y001 + t * y011; - y11t = s * y011 + t * y111; - y0tt = s * y00t + t * y01t; - y1tt = s * y01t + t * y11t; - yttt = s * y0tt + t * y1tt; - - geom_cubic_bbox_wind_distance (x000, y000, x00t, y00t, x0tt, y0tt, xttt, yttt, pt, NULL, wind, best, tolerance); - geom_cubic_bbox_wind_distance (xttt, yttt, x1tt, y1tt, x11t, y11t, x111, y111, pt, NULL, wind, best, tolerance); - } else if (1 || needline) { - geom_line_wind_distance (x000, y000, x111, y111, pt, wind, best); - } -} - -static void -geom_curve_bbox_wind_distance(Geom::Curve const & c, Geom::Matrix const &m, - Geom::Point const &pt, - Geom::Rect *bbox, int *wind, Geom::Coord *dist, - Geom::Coord tolerance, Geom::Rect const *viewbox, - Geom::Point &p0) // pass p0 through as it represents the last endpoint added (the finalPoint of last curve) -{ - if( dynamic_cast(&c) || - dynamic_cast(&c) || - dynamic_cast(&c) ) - { - Geom::Point pe = c.finalPoint() * m; - if (bbox) { - bbox->expandTo(pe); - } - if (dist || wind) { - if (wind) { // we need to pick fill, so do what we're told - geom_line_wind_distance (p0[X], p0[Y], pe[X], pe[Y], pt, wind, dist); - } else { // only stroke is being picked; skip this segment if it's totally outside the viewbox - Geom::Rect swept(p0, pe); - if (!viewbox || swept.intersects(*viewbox)) - geom_line_wind_distance (p0[X], p0[Y], pe[X], pe[Y], pt, wind, dist); - } - } - p0 = pe; - } - else if(Geom::CubicBezier const *cubic_bezier = dynamic_cast(&c)) { - Geom::Point p1 = (*cubic_bezier)[1] * m; - Geom::Point p2 = (*cubic_bezier)[2] * m; - Geom::Point p3 = (*cubic_bezier)[3] * m; - - // get approximate bbox from handles (convex hull property of beziers): - Geom::Rect swept(p0, p3); - swept.expandTo(p1); - swept.expandTo(p2); - - if (!viewbox || swept.intersects(*viewbox)) { // we see this segment, so do full processing - geom_cubic_bbox_wind_distance ( p0[X], p0[Y], - p1[X], p1[Y], - p2[X], p2[Y], - p3[X], p3[Y], - pt, - bbox, wind, dist, tolerance); - } else { - if (wind) { // if we need fill, we can just pretend it's a straight line - geom_line_wind_distance (p0[X], p0[Y], p3[X], p3[Y], pt, wind, dist); - } else { // otherwise, skip it completely - } - } - p0 = p3; - } else { - //this case handles sbasis as well as all other curve types - Geom::Path sbasis_path = Geom::path_from_sbasis(c.toSBasis(), 0.1); - - //recurse to convert the new path resulting from the sbasis to svgd - for(Geom::Path::iterator iter = sbasis_path.begin(); iter != sbasis_path.end(); ++iter) { - geom_curve_bbox_wind_distance(*iter, m, pt, bbox, wind, dist, tolerance, viewbox, p0); - } - } -} - -/* Calculates... - and returns ... in *wind and the distance to ... in *dist. - Returns bounding box in *bbox if bbox!=NULL. - */ -void -pathv_matrix_point_bbox_wind_distance (Geom::PathVector const & pathv, Geom::Matrix const &m, Geom::Point const &pt, - Geom::Rect *bbox, int *wind, Geom::Coord *dist, - Geom::Coord tolerance, Geom::Rect const *viewbox) -{ - if (pathv.empty()) { - if (wind) *wind = 0; - if (dist) *dist = NR_HUGE; - return; - } - - // remember last point of last curve - Geom::Point p0(0,0); - - // remembering the start of subpath - Geom::Point p_start(0,0); - bool start_set = false; - - for (Geom::PathVector::const_iterator it = pathv.begin(); it != pathv.end(); ++it) { - - if (start_set) { // this is a new subpath - if (wind && (p0 != p_start)) // for correct fill picking, each subpath must be closed - geom_line_wind_distance (p0[X], p0[Y], p_start[X], p_start[Y], pt, wind, dist); - } - p0 = it->initialPoint() * m; - p_start = p0; - start_set = true; - if (bbox) { - bbox->expandTo(p0); - } - - // loop including closing segment if path is closed - for (Geom::Path::const_iterator cit = it->begin(); cit != it->end_default(); ++cit) { - geom_curve_bbox_wind_distance(*cit, m, pt, bbox, wind, dist, tolerance, viewbox, p0); - } - } - - if (start_set) { - if (wind && (p0 != p_start)) // for correct picking, each subpath must be closed - geom_line_wind_distance (p0[X], p0[Y], p_start[X], p_start[Y], pt, wind, dist); - } -} - -// temporary wrapper -void -pathv_matrix_point_bbox_wind_distance (Geom::PathVector const & pathv, NR::Matrix const &m, NR::Point const &pt, - NR::Rect *bbox, int *wind, NR::Coord *dist, - NR::Coord tolerance, NR::Rect const *viewbox) -{ - Geom::Rect _bbox; - if (bbox) - _bbox = to_2geom(*bbox); - Geom::Coord _dist; - if (dist) - _dist = *dist; - Geom::Rect _viewbox; - if (viewbox) - _viewbox = to_2geom(*viewbox); - - pathv_matrix_point_bbox_wind_distance( pathv, to_2geom(m), to_2geom(pt), - bbox ? &_bbox : NULL, - wind, - dist ? &_dist : NULL, - tolerance, - viewbox ? &_viewbox : NULL ); - - if (bbox) - *bbox = from_2geom(_bbox); - if (dist) - *dist = _dist; -} -//################################################################################# - - - - -/* - Local Variables: - mode:c++ - c-file-style:"stroustrup" - c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) - indent-tabs-mode:nil - fill-column:99 - End: -*/ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : +#define INKSCAPE_HELPER_GEOM_CPP + +/** + * Specific geometry functions for Inkscape, not provided my lib2geom. + * + * Author: + * Johan Engelen + * + * Copyright (C) 2008 Johan Engelen + * + * Released under GNU GPL + */ + +#include "helper/geom.h" +#include +#include <2geom/pathvector.h> +#include <2geom/path.h> +#include <2geom/transforms.h> +#include <2geom/rect.h> +#include <2geom/coord.h> +#include <2geom/sbasis-to-bezier.h> +#include +#include + +using Geom::X; +using Geom::Y; + +#define NR_HUGE 1e18 + +//################################################################################# +// BOUNDING BOX CALCULATIONS + +/* Fast bbox calculation */ +/* Thanks to Nathan Hurst for suggesting it */ +static void +cubic_bbox (Geom::Coord x000, Geom::Coord y000, Geom::Coord x001, Geom::Coord y001, Geom::Coord x011, Geom::Coord y011, Geom::Coord x111, Geom::Coord y111, Geom::Rect &bbox) +{ + Geom::Coord a, b, c, D; + + bbox[0].extendTo(x111); + bbox[1].extendTo(y111); + + /* + * xttt = s * (s * (s * x000 + t * x001) + t * (s * x001 + t * x011)) + t * (s * (s * x001 + t * x011) + t * (s * x011 + t * x111)) + * xttt = s * (s2 * x000 + s * t * x001 + t * s * x001 + t2 * x011) + t * (s2 * x001 + s * t * x011 + t * s * x011 + t2 * x111) + * xttt = s * (s2 * x000 + 2 * st * x001 + t2 * x011) + t * (s2 * x001 + 2 * st * x011 + t2 * x111) + * xttt = s3 * x000 + 2 * s2t * x001 + st2 * x011 + s2t * x001 + 2st2 * x011 + t3 * x111 + * xttt = s3 * x000 + 3s2t * x001 + 3st2 * x011 + t3 * x111 + * xttt = s3 * x000 + (1 - s) 3s2 * x001 + (1 - s) * (1 - s) * 3s * x011 + (1 - s) * (1 - s) * (1 - s) * x111 + * xttt = s3 * x000 + (3s2 - 3s3) * x001 + (3s - 6s2 + 3s3) * x011 + (1 - 2s + s2 - s + 2s2 - s3) * x111 + * xttt = (x000 - 3 * x001 + 3 * x011 - x111) * s3 + + * ( 3 * x001 - 6 * x011 + 3 * x111) * s2 + + * ( 3 * x011 - 3 * x111) * s + + * ( x111) + * xttt' = (3 * x000 - 9 * x001 + 9 * x011 - 3 * x111) * s2 + + * ( 6 * x001 - 12 * x011 + 6 * x111) * s + + * ( 3 * x011 - 3 * x111) + */ + + a = 3 * x000 - 9 * x001 + 9 * x011 - 3 * x111; + b = 6 * x001 - 12 * x011 + 6 * x111; + c = 3 * x011 - 3 * x111; + + /* + * s = (-b +/- sqrt (b * b - 4 * a * c)) / 2 * a; + */ + if (fabs (a) < Geom::EPSILON) { + /* s = -c / b */ + if (fabs (b) > Geom::EPSILON) { + double s, t, xttt; + s = -c / b; + if ((s > 0.0) && (s < 1.0)) { + t = 1.0 - s; + xttt = s * s * s * x000 + 3 * s * s * t * x001 + 3 * s * t * t * x011 + t * t * t * x111; + bbox[0].extendTo(xttt); + } + } + } else { + /* s = (-b +/- sqrt (b * b - 4 * a * c)) / 2 * a; */ + D = b * b - 4 * a * c; + if (D >= 0.0) { + Geom::Coord d, s, t, xttt; + /* Have solution */ + d = sqrt (D); + s = (-b + d) / (2 * a); + if ((s > 0.0) && (s < 1.0)) { + t = 1.0 - s; + xttt = s * s * s * x000 + 3 * s * s * t * x001 + 3 * s * t * t * x011 + t * t * t * x111; + bbox[0].extendTo(xttt); + } + s = (-b - d) / (2 * a); + if ((s > 0.0) && (s < 1.0)) { + t = 1.0 - s; + xttt = s * s * s * x000 + 3 * s * s * t * x001 + 3 * s * t * t * x011 + t * t * t * x111; + bbox[0].extendTo(xttt); + } + } + } + + a = 3 * y000 - 9 * y001 + 9 * y011 - 3 * y111; + b = 6 * y001 - 12 * y011 + 6 * y111; + c = 3 * y011 - 3 * y111; + + if (fabs (a) < Geom::EPSILON) { + /* s = -c / b */ + if (fabs (b) > Geom::EPSILON) { + double s, t, yttt; + s = -c / b; + if ((s > 0.0) && (s < 1.0)) { + t = 1.0 - s; + yttt = s * s * s * y000 + 3 * s * s * t * y001 + 3 * s * t * t * y011 + t * t * t * y111; + bbox[1].extendTo(yttt); + } + } + } else { + /* s = (-b +/- sqrt (b * b - 4 * a * c)) / 2 * a; */ + D = b * b - 4 * a * c; + if (D >= 0.0) { + Geom::Coord d, s, t, yttt; + /* Have solution */ + d = sqrt (D); + s = (-b + d) / (2 * a); + if ((s > 0.0) && (s < 1.0)) { + t = 1.0 - s; + yttt = s * s * s * y000 + 3 * s * s * t * y001 + 3 * s * t * t * y011 + t * t * t * y111; + bbox[1].extendTo(yttt); + } + s = (-b - d) / (2 * a); + if ((s > 0.0) && (s < 1.0)) { + t = 1.0 - s; + yttt = s * s * s * y000 + 3 * s * s * t * y001 + 3 * s * t * t * y011 + t * t * t * y111; + bbox[1].extendTo(yttt); + } + } + } +} + +Geom::Rect +bounds_fast_transformed(Geom::PathVector const & pv, Geom::Matrix const & t) +{ + return bounds_exact_transformed(pv, t); //use this as it is faster for now! :) +// return Geom::bounds_fast(pv * t); +} + +Geom::Rect +bounds_exact_transformed(Geom::PathVector const & pv, Geom::Matrix const & t) +{ + Geom::Rect bbox; + + if (pv.empty()) + return bbox; + + Geom::Point initial = pv.front().initialPoint() * t; + bbox = Geom::Rect(initial, initial); // obtain well defined bbox as starting point to unionWith + + for (Geom::PathVector::const_iterator it = pv.begin(); it != pv.end(); ++it) { + bbox.expandTo(it->initialPoint() * t); + + // don't loop including closing segment, since that segment can never increase the bbox + for (Geom::Path::const_iterator cit = it->begin(); cit != it->end_open(); ++cit) { + Geom::Curve const &c = *cit; + + if( dynamic_cast(&c) || + dynamic_cast(&c) || + dynamic_cast(&c) ) + { + bbox.expandTo( c.finalPoint() * t ); + } + else if(Geom::CubicBezier const *cubic_bezier = dynamic_cast(&c)) + { + Geom::Point c0 = (*cubic_bezier)[0] * t; + Geom::Point c1 = (*cubic_bezier)[1] * t; + Geom::Point c2 = (*cubic_bezier)[2] * t; + Geom::Point c3 = (*cubic_bezier)[3] * t; + cubic_bbox( c0[0], c0[1], + c1[0], c1[1], + c2[0], c2[1], + c3[0], c3[1], + bbox ); + } + else + { + // should handle all not-so-easy curves: + Geom::Curve *ctemp = cit->transformed(t); + bbox.unionWith( ctemp->boundsExact()); + delete ctemp; + } + } + } + //return Geom::bounds_exact(pv * t); + return bbox; +} + + + +static void +geom_line_wind_distance (Geom::Coord x0, Geom::Coord y0, Geom::Coord x1, Geom::Coord y1, Geom::Point const &pt, int *wind, Geom::Coord *best) +{ + Geom::Coord Ax, Ay, Bx, By, Dx, Dy, s; + Geom::Coord dist2; + + /* Find distance */ + Ax = x0; + Ay = y0; + Bx = x1; + By = y1; + Dx = x1 - x0; + Dy = y1 - y0; + const Geom::Coord Px = pt[X]; + const Geom::Coord Py = pt[Y]; + + if (best) { + s = ((Px - Ax) * Dx + (Py - Ay) * Dy) / (Dx * Dx + Dy * Dy); + if (s <= 0.0) { + dist2 = (Px - Ax) * (Px - Ax) + (Py - Ay) * (Py - Ay); + } else if (s >= 1.0) { + dist2 = (Px - Bx) * (Px - Bx) + (Py - By) * (Py - By); + } else { + Geom::Coord Qx, Qy; + Qx = Ax + s * Dx; + Qy = Ay + s * Dy; + dist2 = (Px - Qx) * (Px - Qx) + (Py - Qy) * (Py - Qy); + } + + if (dist2 < (*best * *best)) *best = sqrt (dist2); + } + + if (wind) { + /* Find wind */ + if ((Ax >= Px) && (Bx >= Px)) return; + if ((Ay >= Py) && (By >= Py)) return; + if ((Ay < Py) && (By < Py)) return; + if (Ay == By) return; + /* Ctach upper y bound */ + if (Ay == Py) { + if (Ax < Px) *wind -= 1; + return; + } else if (By == Py) { + if (Bx < Px) *wind += 1; + return; + } else { + Geom::Coord Qx; + /* Have to calculate intersection */ + Qx = Ax + Dx * (Py - Ay) / Dy; + if (Qx < Px) { + *wind += (Dy > 0.0) ? 1 : -1; + } + } + } +} + +static void +geom_cubic_bbox_wind_distance (Geom::Coord x000, Geom::Coord y000, + Geom::Coord x001, Geom::Coord y001, + Geom::Coord x011, Geom::Coord y011, + Geom::Coord x111, Geom::Coord y111, + Geom::Point const &pt, + Geom::Rect *bbox, int *wind, Geom::Coord *best, + Geom::Coord tolerance) +{ + Geom::Coord x0, y0, x1, y1, len2; + int needdist, needwind, needline; + + const Geom::Coord Px = pt[X]; + const Geom::Coord Py = pt[Y]; + + needdist = 0; + needwind = 0; + needline = 0; + + if (bbox) cubic_bbox (x000, y000, x001, y001, x011, y011, x111, y111, *bbox); + + x0 = MIN (x000, x001); + x0 = MIN (x0, x011); + x0 = MIN (x0, x111); + y0 = MIN (y000, y001); + y0 = MIN (y0, y011); + y0 = MIN (y0, y111); + x1 = MAX (x000, x001); + x1 = MAX (x1, x011); + x1 = MAX (x1, x111); + y1 = MAX (y000, y001); + y1 = MAX (y1, y011); + y1 = MAX (y1, y111); + + if (best) { + /* Quickly adjust to endpoints */ + len2 = (x000 - Px) * (x000 - Px) + (y000 - Py) * (y000 - Py); + if (len2 < (*best * *best)) *best = (Geom::Coord) sqrt (len2); + len2 = (x111 - Px) * (x111 - Px) + (y111 - Py) * (y111 - Py); + if (len2 < (*best * *best)) *best = (Geom::Coord) sqrt (len2); + + if (((x0 - Px) < *best) && ((y0 - Py) < *best) && ((Px - x1) < *best) && ((Py - y1) < *best)) { + /* Point is inside sloppy bbox */ + /* Now we have to decide, whether subdivide */ + /* fixme: (Lauris) */ + if (((y1 - y0) > 5.0) || ((x1 - x0) > 5.0)) { + needdist = 1; + } else { + needline = 1; + } + } + } + if (!needdist && wind) { + if ((y1 >= Py) && (y0 < Py) && (x0 < Px)) { + /* Possible intersection at the left */ + /* Now we have to decide, whether subdivide */ + /* fixme: (Lauris) */ + if (((y1 - y0) > 5.0) || ((x1 - x0) > 5.0)) { + needwind = 1; + } else { + needline = 1; + } + } + } + + if (needdist || needwind) { + Geom::Coord x00t, x0tt, xttt, x1tt, x11t, x01t; + Geom::Coord y00t, y0tt, yttt, y1tt, y11t, y01t; + Geom::Coord s, t; + + t = 0.5; + s = 1 - t; + + x00t = s * x000 + t * x001; + x01t = s * x001 + t * x011; + x11t = s * x011 + t * x111; + x0tt = s * x00t + t * x01t; + x1tt = s * x01t + t * x11t; + xttt = s * x0tt + t * x1tt; + + y00t = s * y000 + t * y001; + y01t = s * y001 + t * y011; + y11t = s * y011 + t * y111; + y0tt = s * y00t + t * y01t; + y1tt = s * y01t + t * y11t; + yttt = s * y0tt + t * y1tt; + + geom_cubic_bbox_wind_distance (x000, y000, x00t, y00t, x0tt, y0tt, xttt, yttt, pt, NULL, wind, best, tolerance); + geom_cubic_bbox_wind_distance (xttt, yttt, x1tt, y1tt, x11t, y11t, x111, y111, pt, NULL, wind, best, tolerance); + } else if (1 || needline) { + geom_line_wind_distance (x000, y000, x111, y111, pt, wind, best); + } +} + +static void +geom_curve_bbox_wind_distance(Geom::Curve const & c, Geom::Matrix const &m, + Geom::Point const &pt, + Geom::Rect *bbox, int *wind, Geom::Coord *dist, + Geom::Coord tolerance, Geom::Rect const *viewbox, + Geom::Point &p0) // pass p0 through as it represents the last endpoint added (the finalPoint of last curve) +{ + if( dynamic_cast(&c) || + dynamic_cast(&c) || + dynamic_cast(&c) ) + { + Geom::Point pe = c.finalPoint() * m; + if (bbox) { + bbox->expandTo(pe); + } + if (dist || wind) { + if (wind) { // we need to pick fill, so do what we're told + geom_line_wind_distance (p0[X], p0[Y], pe[X], pe[Y], pt, wind, dist); + } else { // only stroke is being picked; skip this segment if it's totally outside the viewbox + Geom::Rect swept(p0, pe); + if (!viewbox || swept.intersects(*viewbox)) + geom_line_wind_distance (p0[X], p0[Y], pe[X], pe[Y], pt, wind, dist); + } + } + p0 = pe; + } + else if(Geom::CubicBezier const *cubic_bezier = dynamic_cast(&c)) { + Geom::Point p1 = (*cubic_bezier)[1] * m; + Geom::Point p2 = (*cubic_bezier)[2] * m; + Geom::Point p3 = (*cubic_bezier)[3] * m; + + // get approximate bbox from handles (convex hull property of beziers): + Geom::Rect swept(p0, p3); + swept.expandTo(p1); + swept.expandTo(p2); + + if (!viewbox || swept.intersects(*viewbox)) { // we see this segment, so do full processing + geom_cubic_bbox_wind_distance ( p0[X], p0[Y], + p1[X], p1[Y], + p2[X], p2[Y], + p3[X], p3[Y], + pt, + bbox, wind, dist, tolerance); + } else { + if (wind) { // if we need fill, we can just pretend it's a straight line + geom_line_wind_distance (p0[X], p0[Y], p3[X], p3[Y], pt, wind, dist); + } else { // otherwise, skip it completely + } + } + p0 = p3; + } else { + //this case handles sbasis as well as all other curve types + Geom::Path sbasis_path = Geom::path_from_sbasis(c.toSBasis(), 0.1); + + //recurse to convert the new path resulting from the sbasis to svgd + for(Geom::Path::iterator iter = sbasis_path.begin(); iter != sbasis_path.end(); ++iter) { + geom_curve_bbox_wind_distance(*iter, m, pt, bbox, wind, dist, tolerance, viewbox, p0); + } + } +} + +/* Calculates... + and returns ... in *wind and the distance to ... in *dist. + Returns bounding box in *bbox if bbox!=NULL. + */ +void +pathv_matrix_point_bbox_wind_distance (Geom::PathVector const & pathv, Geom::Matrix const &m, Geom::Point const &pt, + Geom::Rect *bbox, int *wind, Geom::Coord *dist, + Geom::Coord tolerance, Geom::Rect const *viewbox) +{ + if (pathv.empty()) { + if (wind) *wind = 0; + if (dist) *dist = NR_HUGE; + return; + } + + // remember last point of last curve + Geom::Point p0(0,0); + + // remembering the start of subpath + Geom::Point p_start(0,0); + bool start_set = false; + + for (Geom::PathVector::const_iterator it = pathv.begin(); it != pathv.end(); ++it) { + + if (start_set) { // this is a new subpath + if (wind && (p0 != p_start)) // for correct fill picking, each subpath must be closed + geom_line_wind_distance (p0[X], p0[Y], p_start[X], p_start[Y], pt, wind, dist); + } + p0 = it->initialPoint() * m; + p_start = p0; + start_set = true; + if (bbox) { + bbox->expandTo(p0); + } + + // loop including closing segment if path is closed + for (Geom::Path::const_iterator cit = it->begin(); cit != it->end_default(); ++cit) { + geom_curve_bbox_wind_distance(*cit, m, pt, bbox, wind, dist, tolerance, viewbox, p0); + } + } + + if (start_set) { + if (wind && (p0 != p_start)) // for correct picking, each subpath must be closed + geom_line_wind_distance (p0[X], p0[Y], p_start[X], p_start[Y], pt, wind, dist); + } +} + +// temporary wrapper +void +pathv_matrix_point_bbox_wind_distance (Geom::PathVector const & pathv, NR::Matrix const &m, NR::Point const &pt, + NR::Rect *bbox, int *wind, NR::Coord *dist, + NR::Coord tolerance, NR::Rect const *viewbox) +{ + Geom::Rect _bbox; + if (bbox) + _bbox = to_2geom(*bbox); + Geom::Coord _dist; + if (dist) + _dist = *dist; + Geom::Rect _viewbox; + if (viewbox) + _viewbox = to_2geom(*viewbox); + + pathv_matrix_point_bbox_wind_distance( pathv, to_2geom(m), to_2geom(pt), + bbox ? &_bbox : NULL, + wind, + dist ? &_dist : NULL, + tolerance, + viewbox ? &_viewbox : NULL ); + + if (bbox) + *bbox = from_2geom(_bbox); + if (dist) + *dist = _dist; +} +//################################################################################# + + + + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : diff --git a/src/helper/geom.h b/src/helper/geom.h index a271ae3f0..e8eef075b 100644 --- a/src/helper/geom.h +++ b/src/helper/geom.h @@ -1,40 +1,40 @@ -#ifndef INKSCAPE_HELPER_GEOM_H -#define INKSCAPE_HELPER_GEOM_H - -/** - * Specific geometry functions for Inkscape, not provided my lib2geom. - * - * Author: - * Johan Engelen - * - * Copyright (C) 2008 Johan Engelen - * - * Released under GNU GPL - */ - -#include <2geom/forward.h> -#include -#include - -Geom::Rect bounds_fast_transformed(Geom::PathVector const & pv, Geom::Matrix const & t); -Geom::Rect bounds_exact_transformed(Geom::PathVector const & pv, Geom::Matrix const & t); - -void pathv_matrix_point_bbox_wind_distance ( Geom::PathVector const & pathv, NR::Matrix const &m, NR::Point const &pt, - NR::Rect *bbox, int *wind, NR::Coord *dist, - NR::Coord tolerance, NR::Rect const *viewbox) __attribute__ ((deprecated)); -void pathv_matrix_point_bbox_wind_distance ( Geom::PathVector const & pathv, Geom::Matrix const &m, Geom::Point const &pt, - Geom::Rect *bbox, int *wind, Geom::Coord *dist, - Geom::Coord tolerance, Geom::Rect const *viewbox); - -#endif // INKSCAPE_HELPER_GEOM_H - -/* - Local Variables: - mode:c++ - c-file-style:"stroustrup" - c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) - indent-tabs-mode:nil - fill-column:99 - End: -*/ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : +#ifndef INKSCAPE_HELPER_GEOM_H +#define INKSCAPE_HELPER_GEOM_H + +/** + * Specific geometry functions for Inkscape, not provided my lib2geom. + * + * Author: + * Johan Engelen + * + * Copyright (C) 2008 Johan Engelen + * + * Released under GNU GPL + */ + +#include <2geom/forward.h> +#include +#include + +Geom::Rect bounds_fast_transformed(Geom::PathVector const & pv, Geom::Matrix const & t); +Geom::Rect bounds_exact_transformed(Geom::PathVector const & pv, Geom::Matrix const & t); + +void pathv_matrix_point_bbox_wind_distance ( Geom::PathVector const & pathv, NR::Matrix const &m, NR::Point const &pt, + NR::Rect *bbox, int *wind, NR::Coord *dist, + NR::Coord tolerance, NR::Rect const *viewbox) __attribute__ ((deprecated)); +void pathv_matrix_point_bbox_wind_distance ( Geom::PathVector const & pathv, Geom::Matrix const &m, Geom::Point const &pt, + Geom::Rect *bbox, int *wind, Geom::Coord *dist, + Geom::Coord tolerance, Geom::Rect const *viewbox); + +#endif // INKSCAPE_HELPER_GEOM_H + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : diff --git a/src/helper/units-test.h b/src/helper/units-test.h index f704b988a..ff218ca94 100644 --- a/src/helper/units-test.h +++ b/src/helper/units-test.h @@ -1,88 +1,88 @@ -#include - -#include -#include -#include - - -/* N.B. Wrongly returns false if both near 0. (Not a problem for current users.) */ -static bool -approx_equal(double const x, double const y) -{ - return fabs(x / y - 1) < 1e-15; -} - -static double -sp_units_get_points(double const x, SPUnit const &unit) -{ - SPUnit const &pt_unit = sp_unit_get_by_id(SP_UNIT_PT); - double const px = sp_units_get_pixels(x, unit); - return sp_pixels_get_units(px, pt_unit); -} - -static double -sp_points_get_units(double const pts, SPUnit const &unit) -{ - SPUnit const &pt_unit = sp_unit_get_by_id(SP_UNIT_PT); - double const px = sp_units_get_pixels(pts, pt_unit); - return sp_pixels_get_units(px, unit); -} - -class UnitsTest : public CxxTest::TestSuite { -public: - - UnitsTest() - { - } - virtual ~UnitsTest() {} - - void testConversions() - { - struct Case { double x; char const *abbr; double pts; } const tests[] = { - { 1.0, "pt", 1.0 }, - { 5.0, "pt", 5.0 }, - { 1.0, "in", 72.0 }, - { 2.0, "in", 144.0 }, - { 254., "mm", 720.0 }, - { 254., "cm", 7200. }, - { 254., "m", 720000. }, - { 1.5, "mm", (15 * 72. / 254) } - }; - for (unsigned i = 0; i < G_N_ELEMENTS(tests); ++i) { - Case const &c = tests[i]; - SPUnit const &unit = *sp_unit_get_by_abbreviation(N_(c.abbr)); - - double const calc_pts = sp_units_get_points(c.x, unit); - TS_ASSERT(approx_equal(calc_pts, c.pts)); - - double const calc_x = sp_points_get_units(c.pts, unit); - TS_ASSERT(approx_equal(calc_x, c.x)); - - double tmp = c.x; - bool const converted_to_pts = sp_convert_distance(&tmp, &unit, SP_PS_UNIT); - TS_ASSERT(converted_to_pts); - TS_ASSERT(approx_equal(tmp, c.pts)); - - tmp = c.pts; - bool const converted_from_pts = sp_convert_distance(&tmp, SP_PS_UNIT, &unit); - TS_ASSERT(converted_from_pts); - TS_ASSERT(approx_equal(tmp, c.x)); - } - } - - void testUnitTable() - { - TS_ASSERT(sp_units_table_sane()); - } -}; - -/* - Local Variables: - mode:c++ - c-file-style:"stroustrup" - c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) - indent-tabs-mode:nil - fill-column:99 - End: -*/ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :encoding=utf-8:textwidth=99 : +#include + +#include +#include +#include + + +/* N.B. Wrongly returns false if both near 0. (Not a problem for current users.) */ +static bool +approx_equal(double const x, double const y) +{ + return fabs(x / y - 1) < 1e-15; +} + +static double +sp_units_get_points(double const x, SPUnit const &unit) +{ + SPUnit const &pt_unit = sp_unit_get_by_id(SP_UNIT_PT); + double const px = sp_units_get_pixels(x, unit); + return sp_pixels_get_units(px, pt_unit); +} + +static double +sp_points_get_units(double const pts, SPUnit const &unit) +{ + SPUnit const &pt_unit = sp_unit_get_by_id(SP_UNIT_PT); + double const px = sp_units_get_pixels(pts, pt_unit); + return sp_pixels_get_units(px, unit); +} + +class UnitsTest : public CxxTest::TestSuite { +public: + + UnitsTest() + { + } + virtual ~UnitsTest() {} + + void testConversions() + { + struct Case { double x; char const *abbr; double pts; } const tests[] = { + { 1.0, "pt", 1.0 }, + { 5.0, "pt", 5.0 }, + { 1.0, "in", 72.0 }, + { 2.0, "in", 144.0 }, + { 254., "mm", 720.0 }, + { 254., "cm", 7200. }, + { 254., "m", 720000. }, + { 1.5, "mm", (15 * 72. / 254) } + }; + for (unsigned i = 0; i < G_N_ELEMENTS(tests); ++i) { + Case const &c = tests[i]; + SPUnit const &unit = *sp_unit_get_by_abbreviation(N_(c.abbr)); + + double const calc_pts = sp_units_get_points(c.x, unit); + TS_ASSERT(approx_equal(calc_pts, c.pts)); + + double const calc_x = sp_points_get_units(c.pts, unit); + TS_ASSERT(approx_equal(calc_x, c.x)); + + double tmp = c.x; + bool const converted_to_pts = sp_convert_distance(&tmp, &unit, SP_PS_UNIT); + TS_ASSERT(converted_to_pts); + TS_ASSERT(approx_equal(tmp, c.pts)); + + tmp = c.pts; + bool const converted_from_pts = sp_convert_distance(&tmp, SP_PS_UNIT, &unit); + TS_ASSERT(converted_from_pts); + TS_ASSERT(approx_equal(tmp, c.x)); + } + } + + void testUnitTable() + { + TS_ASSERT(sp_units_table_sane()); + } +}; + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :encoding=utf-8:textwidth=99 : diff --git a/src/svg/svg-affine-test.h b/src/svg/svg-affine-test.h index 4180fcf3d..658968bce 100644 --- a/src/svg/svg-affine-test.h +++ b/src/svg/svg-affine-test.h @@ -1,219 +1,219 @@ -#include - -#include "svg/svg.h" -#include <2geom/matrix.h> -#include -#include -#include -#include -#include - -struct streq_free2 { - bool operator()(char const *exp, char const *got) const - { - bool const ret = (strcmp(exp, got) == 0); - g_free((void*)got); - return ret; - } -}; - -struct approx_equal { - bool operator()(Geom::Matrix const &ref, Geom::Matrix const &cm) const - { - double maxabsdiff = 0; - for(size_t i=0; i<6; i++) { - maxabsdiff = std::max(std::abs(ref[i]-cm[i]), maxabsdiff); - } - return maxabsdiff < 1e-14; - } -}; - -class SvgAffineTest : public CxxTest::TestSuite -{ -private: - struct test_t { - char const * str; - Geom::Matrix matrix; - }; - static test_t const read_matrix_tests[3]; - static test_t const read_translate_tests[3]; - static test_t const read_scale_tests[3]; - static test_t const read_rotate_tests[4]; - static test_t const read_skew_tests[3]; - static test_t const write_matrix_tests[2]; - static test_t const write_translate_tests[3]; - static test_t const write_scale_tests[2]; - static test_t const write_rotate_tests[2]; - static test_t const write_skew_tests[3]; -public: - SvgAffineTest() { - } - - void testReadIdentity() - { - char const* strs[] = { - //0, - "", - "matrix(1,0,0,1,0,0)", - "translate(0,0)", - "scale(1,1)", - "rotate(0,0,0)", - "skewX(0)", - "skewY(0)"}; - size_t n = G_N_ELEMENTS(strs); - for(size_t i=0; i + +#include "svg/svg.h" +#include <2geom/matrix.h> +#include +#include +#include +#include +#include + +struct streq_free2 { + bool operator()(char const *exp, char const *got) const + { + bool const ret = (strcmp(exp, got) == 0); + g_free((void*)got); + return ret; + } +}; + +struct approx_equal { + bool operator()(Geom::Matrix const &ref, Geom::Matrix const &cm) const + { + double maxabsdiff = 0; + for(size_t i=0; i<6; i++) { + maxabsdiff = std::max(std::abs(ref[i]-cm[i]), maxabsdiff); + } + return maxabsdiff < 1e-14; + } +}; + +class SvgAffineTest : public CxxTest::TestSuite +{ +private: + struct test_t { + char const * str; + Geom::Matrix matrix; + }; + static test_t const read_matrix_tests[3]; + static test_t const read_translate_tests[3]; + static test_t const read_scale_tests[3]; + static test_t const read_rotate_tests[4]; + static test_t const read_skew_tests[3]; + static test_t const write_matrix_tests[2]; + static test_t const write_translate_tests[3]; + static test_t const write_scale_tests[2]; + static test_t const write_rotate_tests[2]; + static test_t const write_skew_tests[3]; +public: + SvgAffineTest() { + } + + void testReadIdentity() + { + char const* strs[] = { + //0, + "", + "matrix(1,0,0,1,0,0)", + "translate(0,0)", + "scale(1,1)", + "rotate(0,0,0)", + "skewX(0)", + "skewY(0)"}; + size_t n = G_N_ELEMENTS(strs); + for(size_t i=0; i - -#include "svg/svg-length.h" -#include -#include - -class SvgLengthTest : public CxxTest::TestSuite -{ -private: -public: - SvgLengthTest() { - } - - void testRead() - { - struct test_t { - char const* str; float computed; - test_t(char const* str, float computed) : str(str), computed(computed) {} - }; - test_t tests[] = { - test_t("0",0), - test_t("1",1), - test_t("1.00001",1.00001), - test_t("1px",1), - test_t(".1px",0.1)}; - size_t n = G_N_ELEMENTS(tests); - for(size_t i=0; i + +#include "svg/svg-length.h" +#include +#include + +class SvgLengthTest : public CxxTest::TestSuite +{ +private: +public: + SvgLengthTest() { + } + + void testRead() + { + struct test_t { + char const* str; float computed; + test_t(char const* str, float computed) : str(str), computed(computed) {} + }; + test_t tests[] = { + test_t("0",0), + test_t("1",1), + test_t("1.00001",1.00001), + test_t("1px",1), + test_t(".1px",0.1)}; + size_t n = G_N_ELEMENTS(tests); + for(size_t i=0; i -#include "libnr/n-art-bpath.h" -#include "svg/svg.h" -#include "2geom/coord.h" -#include -#include -#include - -class SvgPathTest : public CxxTest::TestSuite -{ -private: - std::vector rectanglesAbsoluteClosed; - std::vector rectanglesRelativeClosed; - std::vector rectanglesAbsoluteOpen; - std::vector rectanglesRelativeOpen; - NArtBpath rectangleBpath[5+1]; -public: - SvgPathTest() { - // Lots of ways to define the same rectangle - rectanglesAbsoluteClosed.push_back("M 1,2 L 4,2 L 4,8 L 1,8 L 1,2 Z"); - rectanglesAbsoluteClosed.push_back("M 1,2 L 4,2 L 4,8 L 1,8 z"); - rectanglesAbsoluteClosed.push_back("M 1,2 4,2 4,8 1,8 z"); - rectanglesAbsoluteClosed.push_back("M 1,2 H 4 V 8 H 1 z"); - rectanglesRelativeClosed.push_back("m 1,2 l 3,0 l 0,6 l -3,0 z"); - rectanglesRelativeClosed.push_back("m 1,2 3,0 0,6 -3,0 z"); - rectanglesRelativeClosed.push_back("m 1,2 h 3 v 6 h -3 z"); - rectanglesAbsoluteOpen.push_back("M 1,2 L 4,2 L 4,8 L 1,8 L 1,2"); - rectanglesAbsoluteOpen.push_back("M 1,2 4,2 4,8 1,8 1,2"); - rectanglesAbsoluteOpen.push_back("M 1,2 H 4 V 8 H 1 V 2"); - rectanglesRelativeOpen.push_back("m 1,2 l 3,0 l 0,6 l -3,0 l 0,-6"); - rectanglesRelativeOpen.push_back("m 1,2 3,0 0,6 -3,0 0,-6"); - rectanglesRelativeOpen.push_back("m 1,2 h 3 v 6 h -3 v -6"); - rectangleBpath[0].code = NR_MOVETO; - rectangleBpath[0].x3 = 1; - rectangleBpath[0].y3 = 2; - rectangleBpath[1].code = NR_LINETO; - rectangleBpath[1].x3 = 4; - rectangleBpath[1].y3 = 2; - rectangleBpath[2].code = NR_LINETO; - rectangleBpath[2].x3 = 4; - rectangleBpath[2].y3 = 8; - rectangleBpath[3].code = NR_LINETO; - rectangleBpath[3].x3 = 1; - rectangleBpath[3].y3 = 8; - rectangleBpath[4].code = NR_LINETO; - rectangleBpath[4].x3 = 1; - rectangleBpath[4].y3 = 2; - rectangleBpath[5].code = NR_END; - // TODO: Also test some (smooth) cubic/quadratic beziers and elliptical arcs - } - - void testReadRectanglesAbsoluteClosed() - { - rectangleBpath[0].code = NR_MOVETO; - for(size_t i=0; icode != NR_END && b->code == a->code) { - switch(a->code) { - case NR_MOVETO: - case NR_MOVETO_OPEN: - case NR_LINETO: - if (!Geom::are_near(a->x3,b->x3, eps) || !Geom::are_near(a->y3,b->y3, eps)) return false; - break; - case NR_CURVETO: - if (!Geom::are_near(a->x1,b->x1, eps) || !Geom::are_near(a->y1,b->y1, eps)) return false; - if (!Geom::are_near(a->x2,b->x2, eps) || !Geom::are_near(a->y2,b->y2, eps)) return false; - if (!Geom::are_near(a->x3,b->x3, eps) || !Geom::are_near(a->y3,b->y3, eps)) return false; - break; - default: - TS_FAIL("Unknown path code!"); - } - a++; - b++; - } - return a->code == b->code; - } -}; - - -/* - Local Variables: - mode:c++ - c-file-style:"stroustrup" - c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) - indent-tabs-mode:nil - fill-column:99 - End: -*/ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : +#include +#include "libnr/n-art-bpath.h" +#include "svg/svg.h" +#include "2geom/coord.h" +#include +#include +#include + +class SvgPathTest : public CxxTest::TestSuite +{ +private: + std::vector rectanglesAbsoluteClosed; + std::vector rectanglesRelativeClosed; + std::vector rectanglesAbsoluteOpen; + std::vector rectanglesRelativeOpen; + NArtBpath rectangleBpath[5+1]; +public: + SvgPathTest() { + // Lots of ways to define the same rectangle + rectanglesAbsoluteClosed.push_back("M 1,2 L 4,2 L 4,8 L 1,8 L 1,2 Z"); + rectanglesAbsoluteClosed.push_back("M 1,2 L 4,2 L 4,8 L 1,8 z"); + rectanglesAbsoluteClosed.push_back("M 1,2 4,2 4,8 1,8 z"); + rectanglesAbsoluteClosed.push_back("M 1,2 H 4 V 8 H 1 z"); + rectanglesRelativeClosed.push_back("m 1,2 l 3,0 l 0,6 l -3,0 z"); + rectanglesRelativeClosed.push_back("m 1,2 3,0 0,6 -3,0 z"); + rectanglesRelativeClosed.push_back("m 1,2 h 3 v 6 h -3 z"); + rectanglesAbsoluteOpen.push_back("M 1,2 L 4,2 L 4,8 L 1,8 L 1,2"); + rectanglesAbsoluteOpen.push_back("M 1,2 4,2 4,8 1,8 1,2"); + rectanglesAbsoluteOpen.push_back("M 1,2 H 4 V 8 H 1 V 2"); + rectanglesRelativeOpen.push_back("m 1,2 l 3,0 l 0,6 l -3,0 l 0,-6"); + rectanglesRelativeOpen.push_back("m 1,2 3,0 0,6 -3,0 0,-6"); + rectanglesRelativeOpen.push_back("m 1,2 h 3 v 6 h -3 v -6"); + rectangleBpath[0].code = NR_MOVETO; + rectangleBpath[0].x3 = 1; + rectangleBpath[0].y3 = 2; + rectangleBpath[1].code = NR_LINETO; + rectangleBpath[1].x3 = 4; + rectangleBpath[1].y3 = 2; + rectangleBpath[2].code = NR_LINETO; + rectangleBpath[2].x3 = 4; + rectangleBpath[2].y3 = 8; + rectangleBpath[3].code = NR_LINETO; + rectangleBpath[3].x3 = 1; + rectangleBpath[3].y3 = 8; + rectangleBpath[4].code = NR_LINETO; + rectangleBpath[4].x3 = 1; + rectangleBpath[4].y3 = 2; + rectangleBpath[5].code = NR_END; + // TODO: Also test some (smooth) cubic/quadratic beziers and elliptical arcs + } + + void testReadRectanglesAbsoluteClosed() + { + rectangleBpath[0].code = NR_MOVETO; + for(size_t i=0; icode != NR_END && b->code == a->code) { + switch(a->code) { + case NR_MOVETO: + case NR_MOVETO_OPEN: + case NR_LINETO: + if (!Geom::are_near(a->x3,b->x3, eps) || !Geom::are_near(a->y3,b->y3, eps)) return false; + break; + case NR_CURVETO: + if (!Geom::are_near(a->x1,b->x1, eps) || !Geom::are_near(a->y1,b->y1, eps)) return false; + if (!Geom::are_near(a->x2,b->x2, eps) || !Geom::are_near(a->y2,b->y2, eps)) return false; + if (!Geom::are_near(a->x3,b->x3, eps) || !Geom::are_near(a->y3,b->y3, eps)) return false; + break; + default: + TS_FAIL("Unknown path code!"); + } + a++; + b++; + } + return a->code == b->code; + } +}; + + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : diff --git a/src/util/list-container-test.h b/src/util/list-container-test.h index 9d8507f65..1c4fe511b 100644 --- a/src/util/list-container-test.h +++ b/src/util/list-container-test.h @@ -1,245 +1,245 @@ -#include - -#include -#include "util/list-container.h" - -using Inkscape::Util::ListContainer; - -#define ARRAY_RANGE(array) (array), (array)+sizeof((array))/sizeof((array)[0]) - -static bool check_values(ListContainer const &c, unsigned n_values, ...) { - bool ret = true; - va_list args; - va_start(args, n_values); - ListContainer::const_iterator iter(c.begin()); - while ( n_values && iter != c.end() ) { - int const value = va_arg(args, int); - if ( value != *iter ) { - ret = false; - } - if ( n_values == 1 && &c.back() != &*iter ) { - ret = false; - } - n_values--; - ++iter; - } - va_end(args); - return ret && n_values == 0 && iter == c.end(); -} - -class ListContainerTest : public CxxTest::TestSuite { -public: - ListContainerTest() - { - Inkscape::GC::init(); - } - virtual ~ListContainerTest() {} - - void testRangeConstructor() - { - int const values[]={1,2,3,4}; - int const * const values_end=values+4; - ListContainer container(values, values_end); - - ListContainer::iterator container_iter=container.begin(); - int const * values_iter=values; - - while ( values_iter != values_end && container_iter != container.end() ) { - TS_ASSERT_EQUALS(*values_iter , *container_iter); - ++values_iter; - ++container_iter; - } - - TS_ASSERT_EQUALS(values_iter , values_end); - TS_ASSERT_EQUALS(container_iter , container.end()); - } - - void testEqualityTests() - { - int const a[] = { 1, 2, 3, 4 }; - int const b[] = { 1, 2, 3, 4 }; - int const c[] = { 1, 2, 3 }; - int const d[] = { 1, 2, 3, 5 }; - ListContainer c_a(ARRAY_RANGE(a)); - ListContainer c_b(ARRAY_RANGE(b)); - ListContainer c_c(ARRAY_RANGE(c)); - ListContainer c_d(ARRAY_RANGE(d)); - - TS_ASSERT(c_a == c_b); - TS_ASSERT(!( c_a != c_b )); - TS_ASSERT(!( c_a == c_c )); - TS_ASSERT(c_a != c_c); - TS_ASSERT(!( c_a == c_d )); - TS_ASSERT(c_a != c_d); - } - - void testLessThan() - { - int const a[] = { 1, 2, 3, 4 }; - int const b[] = { 1, 2, 2, 4 }; - int const c[] = { 1, 2, 4, 4 }; - int const d[] = { 1, 2, 3 }; - ListContainer c_a(ARRAY_RANGE(a)); - ListContainer c_b(ARRAY_RANGE(b)); - ListContainer c_c(ARRAY_RANGE(c)); - ListContainer c_d(ARRAY_RANGE(d)); - TS_ASSERT(c_a >= c_b); - TS_ASSERT(!( c_a < c_b )); - TS_ASSERT(!( c_a >= c_c )); - TS_ASSERT(c_a < c_c); - TS_ASSERT(!( c_a < c_d )); - TS_ASSERT(c_a >= c_d); - TS_ASSERT(c_d < c_a); - } - - void testAssignmentOperator() - { - int const a[] = { 1, 2, 3, 4 }; - ListContainer c_a(ARRAY_RANGE(a)); - ListContainer c_c; - TS_ASSERT(c_a != c_c); - c_c = c_a; - TS_ASSERT(c_a == c_c); - c_c = c_a; - TS_ASSERT(c_a == c_c); - } - - void testFillConstructor() - { - ListContainer filled((std::size_t)3, 2); - TS_ASSERT(check_values(filled, 3, 2, 2, 2)); - } - - void testContainerSize() - { - ListContainer empty; - TS_ASSERT(empty.empty()); - TS_ASSERT_EQUALS(empty.size() , 0); - int const a[] = { 1, 2, 3 }; - ListContainer c_a(ARRAY_RANGE(a)); - TS_ASSERT(!c_a.empty()); - TS_ASSERT_EQUALS(c_a.size() , 3); - - TS_ASSERT_LESS_THAN(0 , empty.max_size()); - } - - void testAppending() - { - ListContainer c; - c.push_back(1); - TS_ASSERT(check_values(c, 1, 1)); - c.push_back(2); - TS_ASSERT(check_values(c, 2, 1, 2)); - c.push_back(3); - TS_ASSERT(check_values(c, 3, 1, 2, 3)); - } - - void testBulkAppending() - { - int const a[] = { 1, 2, 3, 4 }; - int const b[] = { 5, 6, 7 }; - ListContainer c_a(ARRAY_RANGE(a)); - ListContainer c_b(ARRAY_RANGE(b)); - c_a.insert(c_a.end(), c_b.begin(), c_b.end()); - TS_ASSERT(check_values(c_a, 7, 1, 2, 3, 4, 5, 6, 7)); - } - - void testPrepending() - { - ListContainer c; - c.push_front(1); - TS_ASSERT(check_values(c, 1, 1)); - c.push_front(2); - TS_ASSERT(check_values(c, 2, 2, 1)); - c.push_front(3); - TS_ASSERT(check_values(c, 3, 3, 2, 1)); - } - - void testSingleValueInsertion() - { - ListContainer c; - - c.insert(c.begin(), 1); - TS_ASSERT(check_values(c, 1, 1)); - - c.insert(c.end(), 2); - TS_ASSERT(check_values(c, 2, 1, 2)); - - c.insert(c.begin(), 3); - TS_ASSERT(check_values(c, 3, 3, 1, 2)); - - ListContainer::iterator pos=c.begin(); - ++pos; - c.insert(pos, 4); - TS_ASSERT(check_values(c, 4, 3, 4, 1, 2)); - } - - void testSingleValueErasure() - { - int const values[] = { 1, 2, 3, 4 }; - ListContainer c(ARRAY_RANGE(values)); - - c.erase(c.begin()); - TS_ASSERT(check_values(c, 3, 2, 3, 4)); - - ListContainer::iterator pos=c.begin(); - ++pos; - c.erase(pos); - TS_ASSERT(check_values(c, 2, 2, 4)); - - pos=c.begin(); - ++pos; - c.erase(pos); - TS_ASSERT(check_values(c, 1, 2)); - - c.erase(c.begin()); - TS_ASSERT(check_values(c, 0)); - } - - void testPopFront() - { - int const full_ary[] = { 1, 2, 3 }; - ListContainer t(ARRAY_RANGE(full_ary)); - TS_ASSERT(check_values(t, 3, 1, 2, 3)); - TS_ASSERT_EQUALS(t.back() , 3); - t.pop_front(); - TS_ASSERT(check_values(t, 2, 2, 3)); - TS_ASSERT_EQUALS(t.back() , 3); - t.push_back(23); - TS_ASSERT(check_values(t, 3, 2, 3, 23)); - TS_ASSERT_EQUALS(t.back() , 23); - t.pop_front(); - TS_ASSERT(check_values(t, 2, 3, 23)); - TS_ASSERT_EQUALS(t.back() , 23); - t.pop_front(); - TS_ASSERT(check_values(t, 1, 23)); - TS_ASSERT_EQUALS(t.back() , 23); - t.pop_front(); - TS_ASSERT(check_values(t, 0)); - t.push_back(42); - TS_ASSERT(check_values(t, 1, 42)); - TS_ASSERT_EQUALS(t.back() , 42); - } - - void testEraseAfter() - { - int const full_ary[] = { 1, 2, 3, 4 }; - int const exp_ary[] = { 1, 3, 4 }; - ListContainer full_list(ARRAY_RANGE(full_ary)); - ListContainer exp_list(ARRAY_RANGE(exp_ary)); - TS_ASSERT(full_list != exp_list); - full_list.erase_after(full_list.begin()); - TS_ASSERT(full_list == exp_list); - } -}; - -/* - Local Variables: - mode:c++ - c-file-style:"stroustrup" - c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) - indent-tabs-mode:nil - fill-column:99 - End: -*/ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : +#include + +#include +#include "util/list-container.h" + +using Inkscape::Util::ListContainer; + +#define ARRAY_RANGE(array) (array), (array)+sizeof((array))/sizeof((array)[0]) + +static bool check_values(ListContainer const &c, unsigned n_values, ...) { + bool ret = true; + va_list args; + va_start(args, n_values); + ListContainer::const_iterator iter(c.begin()); + while ( n_values && iter != c.end() ) { + int const value = va_arg(args, int); + if ( value != *iter ) { + ret = false; + } + if ( n_values == 1 && &c.back() != &*iter ) { + ret = false; + } + n_values--; + ++iter; + } + va_end(args); + return ret && n_values == 0 && iter == c.end(); +} + +class ListContainerTest : public CxxTest::TestSuite { +public: + ListContainerTest() + { + Inkscape::GC::init(); + } + virtual ~ListContainerTest() {} + + void testRangeConstructor() + { + int const values[]={1,2,3,4}; + int const * const values_end=values+4; + ListContainer container(values, values_end); + + ListContainer::iterator container_iter=container.begin(); + int const * values_iter=values; + + while ( values_iter != values_end && container_iter != container.end() ) { + TS_ASSERT_EQUALS(*values_iter , *container_iter); + ++values_iter; + ++container_iter; + } + + TS_ASSERT_EQUALS(values_iter , values_end); + TS_ASSERT_EQUALS(container_iter , container.end()); + } + + void testEqualityTests() + { + int const a[] = { 1, 2, 3, 4 }; + int const b[] = { 1, 2, 3, 4 }; + int const c[] = { 1, 2, 3 }; + int const d[] = { 1, 2, 3, 5 }; + ListContainer c_a(ARRAY_RANGE(a)); + ListContainer c_b(ARRAY_RANGE(b)); + ListContainer c_c(ARRAY_RANGE(c)); + ListContainer c_d(ARRAY_RANGE(d)); + + TS_ASSERT(c_a == c_b); + TS_ASSERT(!( c_a != c_b )); + TS_ASSERT(!( c_a == c_c )); + TS_ASSERT(c_a != c_c); + TS_ASSERT(!( c_a == c_d )); + TS_ASSERT(c_a != c_d); + } + + void testLessThan() + { + int const a[] = { 1, 2, 3, 4 }; + int const b[] = { 1, 2, 2, 4 }; + int const c[] = { 1, 2, 4, 4 }; + int const d[] = { 1, 2, 3 }; + ListContainer c_a(ARRAY_RANGE(a)); + ListContainer c_b(ARRAY_RANGE(b)); + ListContainer c_c(ARRAY_RANGE(c)); + ListContainer c_d(ARRAY_RANGE(d)); + TS_ASSERT(c_a >= c_b); + TS_ASSERT(!( c_a < c_b )); + TS_ASSERT(!( c_a >= c_c )); + TS_ASSERT(c_a < c_c); + TS_ASSERT(!( c_a < c_d )); + TS_ASSERT(c_a >= c_d); + TS_ASSERT(c_d < c_a); + } + + void testAssignmentOperator() + { + int const a[] = { 1, 2, 3, 4 }; + ListContainer c_a(ARRAY_RANGE(a)); + ListContainer c_c; + TS_ASSERT(c_a != c_c); + c_c = c_a; + TS_ASSERT(c_a == c_c); + c_c = c_a; + TS_ASSERT(c_a == c_c); + } + + void testFillConstructor() + { + ListContainer filled((std::size_t)3, 2); + TS_ASSERT(check_values(filled, 3, 2, 2, 2)); + } + + void testContainerSize() + { + ListContainer empty; + TS_ASSERT(empty.empty()); + TS_ASSERT_EQUALS(empty.size() , 0); + int const a[] = { 1, 2, 3 }; + ListContainer c_a(ARRAY_RANGE(a)); + TS_ASSERT(!c_a.empty()); + TS_ASSERT_EQUALS(c_a.size() , 3); + + TS_ASSERT_LESS_THAN(0 , empty.max_size()); + } + + void testAppending() + { + ListContainer c; + c.push_back(1); + TS_ASSERT(check_values(c, 1, 1)); + c.push_back(2); + TS_ASSERT(check_values(c, 2, 1, 2)); + c.push_back(3); + TS_ASSERT(check_values(c, 3, 1, 2, 3)); + } + + void testBulkAppending() + { + int const a[] = { 1, 2, 3, 4 }; + int const b[] = { 5, 6, 7 }; + ListContainer c_a(ARRAY_RANGE(a)); + ListContainer c_b(ARRAY_RANGE(b)); + c_a.insert(c_a.end(), c_b.begin(), c_b.end()); + TS_ASSERT(check_values(c_a, 7, 1, 2, 3, 4, 5, 6, 7)); + } + + void testPrepending() + { + ListContainer c; + c.push_front(1); + TS_ASSERT(check_values(c, 1, 1)); + c.push_front(2); + TS_ASSERT(check_values(c, 2, 2, 1)); + c.push_front(3); + TS_ASSERT(check_values(c, 3, 3, 2, 1)); + } + + void testSingleValueInsertion() + { + ListContainer c; + + c.insert(c.begin(), 1); + TS_ASSERT(check_values(c, 1, 1)); + + c.insert(c.end(), 2); + TS_ASSERT(check_values(c, 2, 1, 2)); + + c.insert(c.begin(), 3); + TS_ASSERT(check_values(c, 3, 3, 1, 2)); + + ListContainer::iterator pos=c.begin(); + ++pos; + c.insert(pos, 4); + TS_ASSERT(check_values(c, 4, 3, 4, 1, 2)); + } + + void testSingleValueErasure() + { + int const values[] = { 1, 2, 3, 4 }; + ListContainer c(ARRAY_RANGE(values)); + + c.erase(c.begin()); + TS_ASSERT(check_values(c, 3, 2, 3, 4)); + + ListContainer::iterator pos=c.begin(); + ++pos; + c.erase(pos); + TS_ASSERT(check_values(c, 2, 2, 4)); + + pos=c.begin(); + ++pos; + c.erase(pos); + TS_ASSERT(check_values(c, 1, 2)); + + c.erase(c.begin()); + TS_ASSERT(check_values(c, 0)); + } + + void testPopFront() + { + int const full_ary[] = { 1, 2, 3 }; + ListContainer t(ARRAY_RANGE(full_ary)); + TS_ASSERT(check_values(t, 3, 1, 2, 3)); + TS_ASSERT_EQUALS(t.back() , 3); + t.pop_front(); + TS_ASSERT(check_values(t, 2, 2, 3)); + TS_ASSERT_EQUALS(t.back() , 3); + t.push_back(23); + TS_ASSERT(check_values(t, 3, 2, 3, 23)); + TS_ASSERT_EQUALS(t.back() , 23); + t.pop_front(); + TS_ASSERT(check_values(t, 2, 3, 23)); + TS_ASSERT_EQUALS(t.back() , 23); + t.pop_front(); + TS_ASSERT(check_values(t, 1, 23)); + TS_ASSERT_EQUALS(t.back() , 23); + t.pop_front(); + TS_ASSERT(check_values(t, 0)); + t.push_back(42); + TS_ASSERT(check_values(t, 1, 42)); + TS_ASSERT_EQUALS(t.back() , 42); + } + + void testEraseAfter() + { + int const full_ary[] = { 1, 2, 3, 4 }; + int const exp_ary[] = { 1, 3, 4 }; + ListContainer full_list(ARRAY_RANGE(full_ary)); + ListContainer exp_list(ARRAY_RANGE(exp_ary)); + TS_ASSERT(full_list != exp_list); + full_list.erase_after(full_list.begin()); + TS_ASSERT(full_list == exp_list); + } +}; + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :