diff options
| author | Jon A. Cruz <jon@joncruz.org> | 2010-07-03 09:34:22 +0000 |
|---|---|---|
| committer | Jon A. Cruz <jon@joncruz.org> | 2010-07-03 09:34:22 +0000 |
| commit | d9c3b46f2c4085fa74b3489719534577a032b528 (patch) | |
| tree | 58a57c8daf22104fc61f98af07bd68ffbbd8ea68 /src/widgets/fill-style.cpp | |
| parent | Tutorials. Forgot to install the png file... (diff) | |
| download | inkscape-d9c3b46f2c4085fa74b3489719534577a032b528.tar.gz inkscape-d9c3b46f2c4085fa74b3489719534577a032b528.zip | |
Create only single-stop gradients when using Fill-n-Stroke to convert solid to a swatch. Preserve CMS colors.
(bzr r9560)
Diffstat (limited to 'src/widgets/fill-style.cpp')
| -rw-r--r-- | src/widgets/fill-style.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/widgets/fill-style.cpp b/src/widgets/fill-style.cpp index f1342f3de..19b8448c6 100644 --- a/src/widgets/fill-style.cpp +++ b/src/widgets/fill-style.cpp @@ -523,6 +523,7 @@ void FillNStroke::updateFromPaint() SPGradientType const gradient_type = ( psel->mode != SPPaintSelector::MODE_GRADIENT_RADIAL ? SP_GRADIENT_TYPE_LINEAR : SP_GRADIENT_TYPE_RADIAL ); + bool createSwatch = (psel->mode == SPPaintSelector::MODE_SWATCH); SPCSSAttr *css = 0; if (kind == FILL) { @@ -537,15 +538,18 @@ void FillNStroke::updateFromPaint() SPStyle *query = sp_style_new(desktop->doc()); int result = objects_query_fillstroke(const_cast<GSList *>(items), query, kind == FILL); - SPIPaint &targPaint = (kind == FILL) ? query->fill : query->stroke; - guint32 common_rgb = 0; if (result == QUERY_STYLE_MULTIPLE_SAME) { + SPIPaint &targPaint = (kind == FILL) ? query->fill : query->stroke; + SPColor common; if (!targPaint.isColor()) { - common_rgb = sp_desktop_get_color(desktop, kind == FILL); + common = sp_desktop_get_color(desktop, kind == FILL); } else { - common_rgb = targPaint.value.color.toRGBA32( 0xff ); + common = targPaint.value.color; + } + vector = sp_document_default_gradient_vector( document, common, createSwatch ); + if ( vector && createSwatch ) { + vector->setSwatch(); } - vector = sp_document_default_gradient_vector(document, common_rgb); } sp_style_unref(query); @@ -556,8 +560,8 @@ void FillNStroke::updateFromPaint() } if (!vector) { - SPGradient *gr = sp_gradient_vector_for_object(document, desktop, SP_OBJECT(i->data), kind == FILL); - if ( gr && (psel->mode == SPPaintSelector::MODE_SWATCH) ) { + SPGradient *gr = sp_gradient_vector_for_object( document, desktop, SP_OBJECT(i->data), kind == FILL, createSwatch ); + if ( gr && createSwatch ) { gr->setSwatch(); } sp_item_set_gradient(SP_ITEM(i->data), |
