From 8d55d1e1ccbe7bde72373e1b127e9d1d3099c999 Mon Sep 17 00:00:00 2001 From: "Jon A. Cruz" Date: Thu, 4 Mar 2010 00:52:16 -0800 Subject: Added method to query "solid paint" status of SPGradient. (bzr r9140) --- src/sp-gradient.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/sp-gradient.cpp') diff --git a/src/sp-gradient.cpp b/src/sp-gradient.cpp index 84a0a9870..3fd120fb3 100644 --- a/src/sp-gradient.cpp +++ b/src/sp-gradient.cpp @@ -638,6 +638,20 @@ sp_gradient_modified(SPObject *object, guint flags) } } + +bool SPGradient::isSolid() const +{ + bool solid = false; + if ( SP_GRADIENT_HAS_STOPS(this) && (sp_number_of_stops(this) == 0) ) { + gchar const * attr = repr->attribute("osb:paint"); + if (attr && !strcmp(attr, "solid")) { + solid = true; + } + } + return solid; +} + + /** * Write gradient attributes to repr. */ -- cgit v1.2.3 From 998e601fb0de79b7617fa9402eb36537041663c6 Mon Sep 17 00:00:00 2001 From: "Jon A. Cruz" Date: Fri, 5 Mar 2010 22:31:33 -0800 Subject: New tab in Fill&Stroke dialog for swatch fills. (bzr r9153) --- src/sp-gradient.cpp | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'src/sp-gradient.cpp') diff --git a/src/sp-gradient.cpp b/src/sp-gradient.cpp index 3fd120fb3..fb16e9e5a 100644 --- a/src/sp-gradient.cpp +++ b/src/sp-gradient.cpp @@ -638,19 +638,27 @@ sp_gradient_modified(SPObject *object, guint flags) } } - -bool SPGradient::isSolid() const +SPStop* SPGradient::getFirstStop() { - bool solid = false; - if ( SP_GRADIENT_HAS_STOPS(this) && (sp_number_of_stops(this) == 0) ) { - gchar const * attr = repr->attribute("osb:paint"); - if (attr && !strcmp(attr, "solid")) { - solid = true; + SPStop* first = 0; + for (SPObject *ochild = sp_object_first_child(this); ochild && !first; ochild = SP_OBJECT_NEXT(ochild)) { + if (SP_IS_STOP(ochild)) { + first = SP_STOP(ochild); } } - return solid; + return first; } +int SPGradient::getStopCount() const +{ + int count = 0; + + for (SPStop *stop = const_cast(this)->getFirstStop(); stop && sp_next_stop(stop); stop = sp_next_stop(stop)) { + count++; + } + + return count; +} /** * Write gradient attributes to repr. -- cgit v1.2.3 From e0a60a7ea64f3576bac00b84c440769c7221e1c3 Mon Sep 17 00:00:00 2001 From: "Jon A. Cruz" Date: Sun, 7 Mar 2010 17:31:49 -0800 Subject: Cleanup of gradients and stops. (bzr r9163) --- src/sp-gradient.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/sp-gradient.cpp') diff --git a/src/sp-gradient.cpp b/src/sp-gradient.cpp index fb16e9e5a..4e8e8e373 100644 --- a/src/sp-gradient.cpp +++ b/src/sp-gradient.cpp @@ -653,7 +653,7 @@ int SPGradient::getStopCount() const { int count = 0; - for (SPStop *stop = const_cast(this)->getFirstStop(); stop && sp_next_stop(stop); stop = sp_next_stop(stop)) { + for (SPStop *stop = const_cast(this)->getFirstStop(); stop && stop->getNextStop(); stop = stop->getNextStop()) { count++; } -- cgit v1.2.3 From be18b3457f1b5c1205cdd45eae0a8a19b9c3e7b3 Mon Sep 17 00:00:00 2001 From: "Jon A. Cruz" Date: Tue, 9 Mar 2010 02:12:09 -0800 Subject: Initial F&S dialog setting of swatch colors. (bzr r9169) --- src/sp-gradient.cpp | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) (limited to 'src/sp-gradient.cpp') diff --git a/src/sp-gradient.cpp b/src/sp-gradient.cpp index 4e8e8e373..3d4d69672 100644 --- a/src/sp-gradient.cpp +++ b/src/sp-gradient.cpp @@ -815,8 +815,7 @@ chase_hrefs(SPGradient *const src, bool (*match)(SPGradient const *)) /** * True if gradient has stops. */ -static bool -has_stops(SPGradient const *gr) +static bool has_stopsFN(SPGradient const *gr) { return SP_GRADIENT_HAS_STOPS(gr); } @@ -840,23 +839,14 @@ has_units_set(SPGradient const *gr) } -/** - * Returns private vector of given gradient (the gradient at the end of the href chain which has - * stops), optionally normalizing it. - * - * \pre SP_IS_GRADIENT(gradient). - * \pre There exists a gradient in the chain that has stops. - */ -SPGradient * -sp_gradient_get_vector(SPGradient *gradient, bool force_vector) +SPGradient *SPGradient::getVector(bool force_vector) { - g_return_val_if_fail(gradient != NULL, NULL); - g_return_val_if_fail(SP_IS_GRADIENT(gradient), NULL); + SPGradient * src = chase_hrefs(this, has_stopsFN); - SPGradient *const src = chase_hrefs(gradient, has_stops); - return ( force_vector - ? sp_gradient_ensure_vector_normalized(src) - : src ); + if (force_vector) { + src = sp_gradient_ensure_vector_normalized(src); + } + return src; } /** -- cgit v1.2.3