@@ -194,19 +194,17 @@ protected void OnReflowProgress(string msg) {
194194 ReflowProgress ? . Invoke ( this , msg ) ;
195195 }
196196
197- public bool CacheEnabled { get => _cacheEnabled ; set => SetField ( ref _cacheEnabled , value ) ; }
198-
199- private bool _cacheEnabled = false ;
200-
197+ public class SheetViewModelSettingsChangedEvent {
198+ public bool Reflow { get ; set ; }
199+ public string PropertyName { get ; set ; }
200+ }
201201 // if bool is true, reflow. Otherwise just paint
202- public event EventHandler < bool > SettingsChanged ;
203- protected void OnSettingsChanged ( bool reflow ) {
202+ public event EventHandler < SheetViewModelSettingsChangedEvent > SettingsChanged ;
203+ protected void OnSettingsChanged ( bool reflow , string propertyName ) {
204204 LogService . TraceMessage ( ) ;
205- SettingsChanged ? . Invoke ( this , reflow ) ;
206- }
207205
208- // Caching of pages as bitmaps. Enables faster paint/zoom as well as usage from XAML
209- private List < Image > _cachedSheets = new List < Image > ( ) ;
206+ SettingsChanged ? . Invoke ( this , new SheetViewModelSettingsChangedEvent ( ) { Reflow = reflow , PropertyName = propertyName } ) ;
207+ }
210208
211209 public SheetViewModel ( ) {
212210 }
@@ -225,8 +223,6 @@ public void Reset() {
225223 ContentEngine . PropertyChanged -= OnContentEnginePropertyChanged ( ) ;
226224 ContentEngine = null ;
227225 }
228-
229- ClearCache ( ) ;
230226 _numPages = 0 ;
231227 }
232228
@@ -269,17 +265,17 @@ public void SetSheet(SheetSettings newSheet) {
269265 }
270266
271267 if ( _headerVM != null ) {
272- _headerVM . SettingsChanged -= ( s , reflow ) => OnSettingsChanged ( reflow ) ;
268+ _headerVM . SettingsChanged -= ( s , reflow ) => OnSettingsChanged ( reflow , "Header" ) ;
273269 }
274270
275271 Header = new HeaderViewModel ( this , newSheet . Header ) ;
276- _headerVM . SettingsChanged += ( s , reflow ) => OnSettingsChanged ( reflow ) ;
272+ _headerVM . SettingsChanged += ( s , reflow ) => OnSettingsChanged ( reflow , "Header" ) ;
277273 if ( _footerVM != null ) {
278- _footerVM . SettingsChanged -= ( s , reflow ) => OnSettingsChanged ( reflow ) ;
274+ _footerVM . SettingsChanged -= ( s , reflow ) => OnSettingsChanged ( reflow , "Footer" ) ;
279275 }
280276
281277 Footer = new FooterViewModel ( this , newSheet . Footer ) ;
282- _footerVM . SettingsChanged += ( s , reflow ) => OnSettingsChanged ( reflow ) ;
278+ _footerVM . SettingsChanged += ( s , reflow ) => OnSettingsChanged ( reflow , "Footer" ) ;
283279
284280 // Subscribe to all settings properties
285281 newSheet . PropertyChanged += OnSheetPropertyChanged ( ) ;
@@ -532,10 +528,6 @@ public async Task ReflowAsync() {
532528
533529 Ready = false ;
534530
535- if ( CacheEnabled ) {
536- ClearCache ( ) ;
537- }
538-
539531 if ( ContentEngine is null ) {
540532 LogService . TraceMessage ( "SheetViewModel.ReflowAsync - ContentEngine is null" ) ;
541533 return ;
@@ -590,18 +582,6 @@ public SheetSettings FindSheet(string sheetName, out string sheetID) {
590582 return sheet ;
591583 }
592584
593- private void ClearCache ( ) {
594- if ( ! CacheEnabled ) {
595- return ; // throw new InvalidOperationException("Cache is not enabled!");
596- }
597-
598- LogService . TraceMessage ( ) ;
599- foreach ( var i in _cachedSheets ) {
600- i . Dispose ( ) ;
601- }
602- _cachedSheets . Clear ( ) ;
603- }
604-
605585 private System . ComponentModel . PropertyChangedEventHandler OnSheetPropertyChanged ( ) {
606586 return ( s , e ) => {
607587 var reflow = false ;
@@ -643,7 +623,7 @@ private System.ComponentModel.PropertyChangedEventHandler OnSheetPropertyChanged
643623 default :
644624 throw new InvalidOperationException ( $ "Property change not handled: { e . PropertyName } ") ;
645625 }
646- OnSettingsChanged ( reflow ) ;
626+ OnSettingsChanged ( reflow , e . PropertyName ) ;
647627 } ;
648628 }
649629
@@ -710,7 +690,7 @@ private System.ComponentModel.PropertyChangedEventHandler OnContentSettingsPrope
710690 default :
711691 throw new InvalidOperationException ( $ "Property change not handled: { e . PropertyName } ") ;
712692 }
713- OnSettingsChanged ( reflow ) ;
693+ OnSettingsChanged ( reflow , e . PropertyName ) ;
714694 } ;
715695 }
716696
@@ -738,7 +718,7 @@ private System.ComponentModel.PropertyChangedEventHandler OnContentEnginePropert
738718 return ;
739719 }
740720
741- OnSettingsChanged ( reflow ) ;
721+ OnSettingsChanged ( reflow , e . PropertyName ) ;
742722 } ;
743723 }
744724
@@ -813,38 +793,6 @@ public void PrintSheet(Graphics graphics, int sheetNum) {
813793 graphics . Restore ( state ) ;
814794 }
815795
816-
817- /// <summary>
818- /// Returns an Image with the specified sheet painted on it. Image will be of the size & resolution of the selected printer.
819- /// </summary>
820- /// <param name="sheetNum">Sheet to print. 1-based.</param>
821- /// <returns></returns>
822- public Image GetCachedSheet ( Graphics graphics , int sheetNum ) {
823- if ( ! CacheEnabled ) {
824- throw new InvalidOperationException ( "Cache is not enabled!" ) ;
825- }
826-
827- const int dpiMultiplier = 1 ;
828- float xDpi = PrinterResolution . X * dpiMultiplier ;
829- float yDpi = PrinterResolution . Y * dpiMultiplier ;
830- var xRes = ( int ) ( Bounds . Width / 100 * xDpi ) ;
831- var yRes = ( int ) ( Bounds . Height / 100 * yDpi ) ;
832- if ( _cachedSheets . Count < sheetNum ) {
833- // Create a new bitmap object with the resolution of a printer page
834- var bmp = new Bitmap ( xRes , yRes ) ;
835- //bmp.SetResolution(xDpi, yDpi);
836-
837- // Obtain a Graphics object from that bitmap
838- var g = Graphics . FromImage ( bmp ) ;
839- g . PageUnit = GraphicsUnit . Pixel ;
840- PaintSheet ( g , sheetNum ) ;
841- _cachedSheets . Add ( bmp ) ;
842- }
843-
844- LogService . TraceMessage ( $ "GetCachedSheet({ sheetNum } ) returning image.") ;
845- return _cachedSheets [ sheetNum - 1 ] ;
846- }
847-
848796 private void PaintSheet ( Graphics g , int sheetNum ) {
849797 LogService . TraceMessage ( $ "{ sheetNum } ") ;
850798 // background needs to be filled image scaling to work right
0 commit comments