@@ -151,16 +151,17 @@ iimage_save(Model *model, xmlNode *xnode)
151151 !set_iprop (xthis , "image_top" , iimage -> image_top ) ||
152152 !set_iprop (xthis , "image_mag" , iimage -> image_mag ) ||
153153 !set_sprop (xthis , "show_status" , bool_to_char (iimage -> show_status )) ||
154- !set_sprop (xthis , "show_convert" , bool_to_char (iimage -> show_convert )) ||
155- !set_dprop (xthis , "scale" , iimage -> scale ) ||
156- !set_dprop (xthis , "offset" , iimage -> offset ) ||
157- !set_iprop (xthis , "page" , iimage -> page ) ||
158- !set_sprop (xthis , "falsecolour" , bool_to_char (iimage -> falsecolour )))
154+ !set_sprop (xthis , "show_convert" , bool_to_char (iimage -> show_convert )))
159155 return NULL ;
160156
161- if (iimage -> mode != TILESOURCE_MODE_UNSET &&
162- !set_sprop (xthis , "mode" ,
163- vips_enum_nick (TILESOURCE_MODE_TYPE , iimage -> mode )))
157+ if (iimage -> view_settings .valid &&
158+ (!set_dprop (xthis , "scale" , iimage -> view_settings .scale ) ||
159+ !set_dprop (xthis , "offset" , iimage -> view_settings .offset ) ||
160+ !set_iprop (xthis , "page" , iimage -> view_settings .page ) ||
161+ !set_sprop (xthis , "falsecolour" ,
162+ bool_to_char (iimage -> view_settings .falsecolour )) ||
163+ !set_sprop (xthis , "mode" ,
164+ vips_enum_nick (TILESOURCE_MODE_TYPE , iimage -> view_settings .mode ))))
164165 return NULL ;
165166
166167 return xthis ;
@@ -180,14 +181,17 @@ iimage_load(Model *model,
180181 (void ) get_bprop (xnode , "show_status" , & iimage -> show_status );
181182 (void ) get_bprop (xnode , "show_paintbox" , & iimage -> show_paintbox );
182183 (void ) get_bprop (xnode , "show_convert" , & iimage -> show_convert );
183- (void ) get_dprop (xnode , "scale" , & iimage -> scale );
184- (void ) get_dprop (xnode , "offset" , & iimage -> offset );
185- (void ) get_iprop (xnode , "page" , & iimage -> page );
186- (void ) get_bprop (xnode , "falsecolour" , & iimage -> falsecolour );
187184
188185 char mode [64 ];
189- if (get_sprop (xnode , "mode" , mode , sizeof (mode )))
190- iimage -> mode = vips_enum_from_nick ("nip4" , TILESOURCE_MODE_TYPE , mode );
186+ if (get_dprop (xnode , "scale" , & iimage -> view_settings .scale ) &&
187+ get_dprop (xnode , "offset" , & iimage -> view_settings .offset ) &&
188+ get_iprop (xnode , "page" , & iimage -> view_settings .page ) &&
189+ get_bprop (xnode , "falsecolour" , & iimage -> view_settings .falsecolour ) &&
190+ get_sprop (xnode , "mode" , mode , sizeof (mode ))) {
191+ iimage -> view_settings .mode =
192+ vips_enum_from_nick ("nip4" , TILESOURCE_MODE_TYPE , mode );
193+ iimage -> view_settings .valid = TRUE;
194+ }
191195
192196 return MODEL_CLASS (iimage_parent_class )-> load (model , state , parent , xnode );
193197}
@@ -411,27 +415,14 @@ iimage_init(iImage *iimage)
411415 iimage -> show_paintbox = FALSE;
412416 iimage -> show_convert = FALSE;
413417
414- iimage -> mode = TILESOURCE_MODE_UNSET ;
415- iimage -> scale = 0.0 ;
416- iimage -> offset = 0.0 ;
417- iimage -> falsecolour = FALSE;
418- iimage -> log = FALSE;
419- iimage -> icc = FALSE;
420- iimage -> page = 0 ;
421-
422418 vips_buf_init_dynamic (& iimage -> caption_buffer , MAX_LINELENGTH );
423419
424420 iobject_set (IOBJECT (iimage ), CLASS_IMAGE , NULL );
425421}
426422
427423void
428- iimage_update_from_tilesource (iImage * iimage , Tilesource * tilesource )
424+ iimage_update_view_settings (iImage * iimage , ViewSettings * view_settings )
429425{
430- iimage -> scale = tilesource -> scale ;
431- iimage -> offset = tilesource -> offset ;
432- iimage -> falsecolour = tilesource -> falsecolour ;
433- iimage -> page = tilesource -> page ;
434- iimage -> mode = tilesource -> mode ;
435-
426+ iimage -> view_settings = * view_settings ;
436427 iobject_changed (IOBJECT (iimage ));
437428}
0 commit comments