=== modified file 'src/widgets/sp-color-icc-selector.cpp' --- src/widgets/sp-color-icc-selector.cpp 2013-05-13 05:49:17 +0000 +++ src/widgets/sp-color-icc-selector.cpp 2013-05-15 08:45:58 +0000 @@ -95,11 +95,13 @@ #endif void _updateSliders( gint ignore ); void _profilesChanged( std::string const & name ); + void getAdjustmentValue( GtkAdjustment *_adj, GtkEntryBuffer *_buf ); ColorICCSelector *_owner; gboolean _updating : 1; gboolean _dragging : 1; + gboolean _isCMYK : 1; guint32 _fixupNeeded; GtkWidget* _fixupBtn; @@ -111,6 +113,8 @@ GtkWidget** _fooSlider; GtkWidget** _fooBtn; GtkWidget** _fooLabel; + GtkWidget** _fooDisplay; + GtkEntryBuffer** _fooDisplayValue; guchar** _fooMap; GtkAdjustment* _adj; // Channel adjustment @@ -305,6 +309,7 @@ _owner(owner), _updating( FALSE ), _dragging( FALSE ), + _isCMYK ( FALSE ), _fixupNeeded(0), _fixupBtn(0), _profileSel(0), @@ -313,7 +318,9 @@ _fooSlider(new GtkWidget*[_fooCount]), _fooBtn(new GtkWidget*[_fooCount]), _fooLabel(new GtkWidget*[_fooCount]), - _fooMap(new guchar*[_fooCount]), + _fooDisplay(new GtkWidget*[_fooCount]), + _fooDisplayValue(new GtkEntryBuffer*[_fooCount]), + _fooMap(new guchar*[_fooCount]), _adj(0), _slider(0), _sbtn(0), @@ -328,6 +335,15 @@ { } +void ColorICCSelectorImpl::getAdjustmentValue( GtkAdjustment *_adj, GtkEntryBuffer *_buf ) +{ + char arr[4]; + gdouble temp=gtk_adjustment_get_value(_adj); + int _valInt=(int)((double)temp * 100.0 + 0.5); + sprintf(arr,"%d",_valInt); + gtk_entry_buffer_set_text(_buf, arr, strlen(arr)); +} + ColorICCSelectorImpl::~ColorICCSelectorImpl() { _adj = 0; @@ -484,6 +500,28 @@ _impl->_fooMap[i] = g_new( guchar, 4 * 1024 ); memset( _impl->_fooMap[i], 0x0ff, 1024 * 4 ); + + _impl->_fooDisplayValue[i]=gtk_entry_buffer_new("000",3); + _impl->_fooDisplay[i]=gtk_entry_new_with_buffer(_impl->_fooDisplayValue[i]); + + gtk_entry_set_width_chars((GtkEntry*)_impl->_fooDisplay[i], 3); + gtk_editable_set_editable((GtkEditable*)_impl->_fooDisplay[i], FALSE ) ; + _impl->getAdjustmentValue( (GtkAdjustment*)_impl->_fooAdj[i],/*(GtkEntryBuffer*)*/_impl->_fooDisplayValue[i]); + + if(_impl->_isCMYK) + gtk_widget_show( _impl->_fooDisplay[i] ); + +#if GTK_CHECK_VERSION(3,0,0) + gtk_widget_set_margin_left(_impl->_fooDisplay[i], XPAD); + gtk_widget_set_margin_right(_impl->_fooDisplay[i], 0); + gtk_widget_set_margin_top(_impl->_fooDisplay[i], YPAD); + gtk_widget_set_margin_bottom(_impl->_fooDisplay[i], YPAD); + gtk_widget_set_halign(_impl->_fooDisplay[i], GTK_ALIGN_CENTER); + gtk_widget_set_valign(_impl->_fooDisplay[i], GTK_ALIGN_CENTER); + gtk_grid_attach(GTK_GRID(t),_impl->_fooDisplay[i], 3, row, 1, 1); +#else + gtk_table_attach( GTK_TABLE (t), _impl->_fooDisplay[i], 3, 4, row, row + 1, (GtkAttachOptions)0,(GtkAttachOptions)0, XPAD, YPAD ); +#endif // Signals @@ -669,6 +707,14 @@ gchar const** tips = 0; guint const* scales = 0; getThings( asICColorSpaceSig(newProf->getColorSpace()), names, tips, scales ); + + if ( asICColorSpaceSig(newProf->getColorSpace()) == cmsSigCmykData ) + { + _isCMYK=TRUE; + } + else { + _isCMYK=FALSE; + } for ( guint i = 0; i < count; i++ ) { gdouble val = (((gdouble)post[i])/65535.0) * (gdouble)scales[i]; @@ -747,6 +793,12 @@ if ( name == prof->name ) { gtk_combo_box_set_active( combo, index ); + if ( asICColorSpaceSig(prof->getColorSpace()) == cmsSigCmykData ) { + _isCMYK=TRUE; + } + else { + _isCMYK=FALSE; + } gtk_widget_set_tooltip_text(_profileSel, prof->name ); } @@ -789,6 +841,12 @@ if (_impl->_prof) { if (_impl->_prof->getTransfToSRGB8() ) { + if ( asICColorSpaceSig(_impl->_prof->getColorSpace()) == cmsSigCmykData ) { + _impl->_isCMYK=TRUE; + } + else { + _impl->_isCMYK=FALSE; + } cmsUInt16Number tmp[4]; for ( guint i = 0; i < _impl->_profChannelCount; i++ ) { gdouble val = 0.0; @@ -851,6 +909,7 @@ gtk_widget_hide( _fooLabel[i] ); gtk_widget_hide( _fooSlider[i] ); gtk_widget_hide( _fooBtn[i] ); + gtk_widget_hide( _fooDisplay[i] ); } if ( profile ) { @@ -865,6 +924,13 @@ gchar const** names = 0; gchar const** tips = 0; getThings( asICColorSpaceSig(_prof->getColorSpace()), names, tips, _fooScales ); + + if ( asICColorSpaceSig(_prof->getColorSpace()) == cmsSigCmykData ) { + _isCMYK=TRUE; + } + else { + _isCMYK=FALSE; + } if ( profChanged ) { for ( guint i = 0; i < _profChannelCount; i++ ) { @@ -888,6 +954,9 @@ gtk_widget_show( _fooLabel[i] ); gtk_widget_show( _fooSlider[i] ); gtk_widget_show( _fooBtn[i] ); + if(_isCMYK) { + gtk_widget_show( _fooDisplay[i] ); + } //gtk_adjustment_set_value( _fooAdj[i], 0.0 ); //gtk_adjustment_set_value( _fooAdj[i], val ); } @@ -895,6 +964,7 @@ gtk_widget_hide( _fooLabel[i] ); gtk_widget_hide( _fooSlider[i] ); gtk_widget_hide( _fooBtn[i] ); + gtk_widget_hide( _fooDisplay[i] ); } } } else { @@ -924,6 +994,7 @@ } } gtk_adjustment_set_value( _fooAdj[i], val ); + getAdjustmentValue((GtkAdjustment*)_fooAdj[i], _fooDisplayValue[i]); } if ( _prof ) {