프로젝트

일반

사용자정보

통계
| 브랜치(Branch): | 개정판:

markus / KCOM / Common / ViewerDataModel.cs @ 90d1dee0

이력 | 보기 | 이력해설 | 다운로드 (38.2 KB)

1 b643fcca taeseongkim
using KCOM.Events;
2
using KCOM.Messenger;
3 992a98b4 KangIngu
using KCOMDataModel.DataModel;
4 787a4489 KangIngu
//using Leadtools;
5
using MarkupToPDF.Common;
6 6707a5c7 ljiyeon
using Newtonsoft.Json;
7 787a4489 KangIngu
using System;
8 6707a5c7 ljiyeon
using System.Collections;
9 787a4489 KangIngu
using System.Collections.Generic;
10
using System.Collections.ObjectModel;
11
using System.ComponentModel;
12 6707a5c7 ljiyeon
using System.IO;
13 787a4489 KangIngu
using System.Linq;
14
using System.Text;
15 6af42ff0 taeseongkim
using System.Threading.Tasks;
16 787a4489 KangIngu
using System.Windows;
17
using System.Windows.Controls;
18
using System.Windows.Ink;
19
using System.Windows.Media;
20 6707a5c7 ljiyeon
using System.Xml;
21
using System.Xml.Serialization;
22 787a4489 KangIngu
//using IKCOM;
23
24
namespace KCOM.Common
25
{
26
    public class ViewerDataModel : INotifyPropertyChanged
27
    {
28 24c5e56c taeseongkim
29 d2050059 taeseongkim
        System.Threading.CancellationTokenSource PageImageTokenSource;
30
        System.Threading.CancellationTokenSource MarkupTokenSource;
31 24c5e56c taeseongkim
32 d2050059 taeseongkim
        public System.Threading.CancellationToken? PagImageCancelToken()
33 24c5e56c taeseongkim
        {
34 d2050059 taeseongkim
            return PageImageTokenSource?.Token;
35 24c5e56c taeseongkim
        }
36
37 d2050059 taeseongkim
        public void PagImageCancelDispose()
38 24c5e56c taeseongkim
        {
39 d2050059 taeseongkim
            if (PageImageTokenSource != null)
40
            {
41
                PageImageTokenSource.Dispose();
42
                PageImageTokenSource = null;
43
            }
44
        }
45
46
        public System.Threading.CancellationToken NewPagImageCancelToken()
47
        {
48
            if (PageImageTokenSource != null)
49
            {
50
                System.Diagnostics.Debug.WriteLine("cancel Token");
51
                PageImageTokenSource.Cancel(true);
52
53
                while (!PageImageTokenSource.IsCancellationRequested)
54
                {
55
                    // Do some work, or just wait
56
                    System.Threading.Thread.Sleep(50);
57
                }
58
            }
59
60
            PageImageTokenSource = new System.Threading.CancellationTokenSource();
61
62
            return PageImageTokenSource.Token;
63
        }
64
65
        public System.Threading.CancellationToken MarkupCancelToken()
66
        {
67
            return MarkupTokenSource.Token;
68
        }
69
70
        public void MarkupCancelDispose()
71
        {
72
            if (MarkupTokenSource != null)
73
            {
74
                MarkupTokenSource.Dispose();
75
                MarkupTokenSource = null;
76
            }
77
        }
78
79
        public System.Threading.CancellationToken NewMarkupCancelToken()
80
        {
81
            if (MarkupTokenSource != null)
82 24c5e56c taeseongkim
            {
83
                System.Diagnostics.Debug.WriteLine("cancel Token");
84 d2050059 taeseongkim
                MarkupTokenSource.Cancel(true);
85 6a19b48d taeseongkim
86 d2050059 taeseongkim
                while (!MarkupTokenSource.IsCancellationRequested)
87 6a19b48d taeseongkim
                {
88
                    // Do some work, or just wait
89
                    System.Threading.Thread.Sleep(50);
90
                }
91 24c5e56c taeseongkim
            }
92
93 d2050059 taeseongkim
            MarkupTokenSource = new System.Threading.CancellationTokenSource();
94 24c5e56c taeseongkim
95 d2050059 taeseongkim
            return MarkupTokenSource.Token;
96 24c5e56c taeseongkim
        }
97
98
99
        private static DateTime KeyInputTime = DateTime.Now;
100
        private static TimeSpan KeyInputDelay = new TimeSpan(0, 0, 1);
101
102
        public bool IsFastKeyInput()
103
        {
104
            if(DateTime.Now - KeyInputTime < KeyInputDelay)
105
            {
106
                return true;
107
            }
108
            else
109
            {
110
                KeyInputTime = DateTime.Now;
111
                return false;
112
            }
113
        }
114
115 787a4489 KangIngu
        #region Data Members
116
117
        private static ViewerDataModel instance = new ViewerDataModel();
118
119
        //private ObservableCollection<CommentUserInfo> markupControls_Pre = new ObservableCollection<CommentUserInfo>();
120
121
        private ObservableCollection<CommentUserInfo> markupControls = new ObservableCollection<CommentUserInfo>();
122
        private ObservableCollection<CommentUserInfo> markupControls_Sync = new ObservableCollection<CommentUserInfo>();
123
        private ObservableCollection<CommentUserInfo> markupControls_User = new ObservableCollection<CommentUserInfo>();
124
125
126
        ////강인구 추가
127
        //private List<Check_Inferface> check_Item = new List<Check_Inferface>();
128
        private ObservableCollection<KCOMDataModel.DataModel.DOCPAGE> document_Info = new ObservableCollection<KCOMDataModel.DataModel.DOCPAGE>();
129 873011c4 humkyung
        private ObservableCollection<UndoDataGroup> undoDataList = new ObservableCollection<UndoDataGroup>();
130 6707a5c7 ljiyeon
        
131 787a4489 KangIngu
        //public  UndoDataList { get; set; }
132
133
134
        private ObservableCollection<IKCOM.MarkupInfoItem> markupInfoList = new ObservableCollection<IKCOM.MarkupInfoItem>();
135 8e5a4a6a taeseongkim
        private ObservableCollection<MarkupUserInfo> markupUserList = new ObservableCollection<MarkupUserInfo>();
136
        
137 787a4489 KangIngu
        private ObservableCollection<IKCOM.MarkupInfoItem> markupInfoRevList = new ObservableCollection<IKCOM.MarkupInfoItem>();
138
139 992a98b4 KangIngu
        public List<FAVORITE_DOC> FavoriteSelctedSet = new List<FAVORITE_DOC>();
140
        public List<FAVORITE_DOC> FavoriteSet = new List<FAVORITE_DOC>();
141 2b19f5f2 djkim
        public List<KCOMDataModel.DataModel.DOCPAGE> RotationDocs = new List<KCOMDataModel.DataModel.DOCPAGE>();
142 787a4489 KangIngu
        //_markupInfoList
143
144
        private StrokeCollection markupPens = new StrokeCollection();
145
146
        //private ObservableCollection<RectangleData> rectangles = new ObservableCollection<RectangleData>();
147
148
149
        private double contentScale = 1;
150
151
        private double contentOffsetY = 0;
152
153
        private double contentOffsetX = 0;
154
155 9cd2865b KangIngu
        private double Sync_contentScale = 1;
156
157
        private double Sync_contentOffsetY = 0;
158
159
        private double Sync_contentOffsetX = 0;
160
161 787a4489 KangIngu
        private double contentViewportHeight = 0;
162
163
        private double contentViewportWidth = 0;
164
165
        private double contentWidth = 0;
166
167
        private MessageCollection _k_talkMessageSet;
168 2b19f5f2 djkim
169 787a4489 KangIngu
        private double contentHeight = 0;
170
171 4f017ed3 taeseongkim
        private double markupAngle = 0;
172
173
        private double pageAngle = 0;
174 787a4489 KangIngu
175
        private double angleOffsetX = 0;
176
177
        private double angleOffsetY = 0;
178 2b19f5f2 djkim
179 787a4489 KangIngu
        private ImageBrush backgroundImage;
180
181
        //private RasterImage _rasterimage;
182
183
184
        #endregion Data Members
185
186
        #region Property Member
187
188 a1142a6b taeseongkim
        public bool IsWheelPageChanage = false;
189
190 787a4489 KangIngu
        public static ViewerDataModel Instance
191
        {
192
            get
193
            {
194
                return instance;
195
            }
196
        }
197
198 5ba8f2d5 taeseongkim
        private  bool isMarkupUpdate;
199
200 6af42ff0 taeseongkim
        private bool isDownloadOriginal;
201
        public bool IsDownloadOriginal
202
        {
203
            get => isDownloadOriginal;
204
            set
205
            {
206
                if (isDownloadOriginal != value)
207
                {
208
                    isDownloadOriginal = value;
209
                    OnPropertyChanged("IsDownloadOriginal");
210
                }
211
            }
212
        }
213
214 5a65e058 taeseongkim
        private bool isAdmin;
215
        public bool IsAdmin
216
        {
217 9d5b4bc2 taeseongkim
            //get => true;
218 5a65e058 taeseongkim
            get => isAdmin;
219
            set
220
            {
221
                isAdmin = value;
222
                OnPropertyChanged("IsAdmin");
223
            }
224
        }
225 8e6884a5 taeseongkim
226
        private bool isDocumentHistory;
227
        public bool IsDocumentHistory
228
        {
229
            get => isDocumentHistory;
230
            set
231
            {
232
                isDocumentHistory = value;
233
                OnPropertyChanged("IsDocumentHistory");
234
            }
235
        }
236
237 6af42ff0 taeseongkim
        private bool isDownloadCancel;
238
        public bool IsDownloadCancel
239
        {
240
            get => isDownloadCancel;
241
            set
242
            {
243
                if (isDownloadCancel != value)
244
                {
245
                    isDownloadCancel = value;
246
                    OnPropertyChanged("IsDownloadCancel");
247
                }
248
            }
249
        }
250
251
        private int downloadFileProgress;
252
        public int DownloadFileProgress
253
        {
254
            get => downloadFileProgress;
255
            set
256
            {
257
                if (downloadFileProgress != value)
258
                {
259
                    downloadFileProgress = value;
260
                    OnPropertyChanged("DownloadFileProgress");
261
                }
262
            }
263
        }
264
265
        private string originalTempFile;
266
        public string OriginalTempFile
267
        {
268
            get => originalTempFile;
269
            set
270
            {
271
                if (originalTempFile != value)
272
                {
273
                    originalTempFile = value;
274
                    OnPropertyChanged("OriginalTempFile");
275
                }
276
            }
277
        }
278
279 787a4489 KangIngu
        private List<IKCOM.MarkupItemEx> _MarkupList_MY { get; set; }
280
        public List<IKCOM.MarkupItemEx> MarkupList_MY
281
        {
282
            get
283
            {
284
                if (_MarkupList_MY == null)
285
                {
286
                    _MarkupList_MY = new List<IKCOM.MarkupItemEx>();
287
                }
288
289
                return _MarkupList_MY;
290
            }
291
            set
292
            {
293
294
                _MarkupList_MY = value;
295
                OnPropertyChanged("MarkupList_MY");
296
            }
297
        }
298
299
        private List<IKCOM.MarkupItemEx> _MarkupList_USER { get; set; }
300 d62c0439 humkyung
        public List<IKCOM.MarkupItemEx> MyMarkupList
301 787a4489 KangIngu
        {
302
            get
303
            {
304
                if (_MarkupList_USER == null)
305
                {
306
                    _MarkupList_USER = new List<IKCOM.MarkupItemEx>();
307
                }
308
309
                return _MarkupList_USER;
310
            }
311
            set
312
            {
313
314
                _MarkupList_USER = value;
315
                OnPropertyChanged("_MarkupList_USER");
316
            }
317
        }
318
319
        private List<IKCOM.MarkupItemEx> _MarkupList_Pre { get; set; }
320
        public List<IKCOM.MarkupItemEx> MarkupList_Pre
321
        {
322
            get
323
            {
324 2b19f5f2 djkim
                if (_MarkupList_Pre == null)
325 787a4489 KangIngu
                {
326 2b19f5f2 djkim
                    _MarkupList_Pre = new List<IKCOM.MarkupItemEx>();
327 787a4489 KangIngu
                }
328
329
                return _MarkupList_Pre;
330
            }
331
            set
332
            {
333 2b19f5f2 djkim
334
                _MarkupList_Pre = value;
335 787a4489 KangIngu
                OnPropertyChanged("MarkupList_Pre");
336
            }
337
338
        }
339
340 992a98b4 KangIngu
        private System.IO.FileInfo _searchPDF { get; set; }
341
        public System.IO.FileInfo searchPDF
342
        {
343
            get
344
            {
345
                return _searchPDF;
346
            }
347
            set
348
            {
349
                _searchPDF = value;
350
                OnPropertyChanged("searchPDF");
351
            }
352
        }
353
354 787a4489 KangIngu
355
        /// <summary>
356
        /// 현재 상단 메뉴에서 선택된 컨트롤
357
        /// </summary>
358
        private string _SelectedControl { get; set; }
359
        public string SelectedControl
360
        {
361
            get
362
            {
363
                return _SelectedControl;
364
            }
365
            set
366
            {
367
                _SelectedControl = value;
368
                OnPropertyChanged("SelectedControl");
369
            }
370
        }
371
372 b74a9c91 taeseongkim
        private List<KCOM.Common.MacroItem> _MacroItems;
373
374
        public List<KCOM.Common.MacroItem> MacroItems
375
        {
376
            get
377
            {
378
                return _MacroItems;
379
            }
380
381
            set
382
            {
383
                _MacroItems = value;
384
            }
385
        }
386
387
        private int _MacroCommandIndex;
388
389
        public int MacroCommandIndex
390
        {
391
            get
392
            {
393
                return _MacroCommandIndex;
394
            }
395
396
            set
397
            {
398
                _MacroCommandIndex = value;
399
            }
400
        }
401
402
        private bool _IsMacroCommand;
403
404
        public bool IsMacroCommand
405
        {
406
            get
407
            {
408
                return _IsMacroCommand;
409
            }
410
411
            set
412
            {
413
                _IsMacroCommand = value;
414
            }
415
        }
416 787a4489 KangIngu
417
        /// <summary>
418
        /// 현재 상단 메뉴의 선 굵기값
419
        /// </summary>
420
        private double _LineSize { get; set; }
421
        public double LineSize
422
        {
423
            get
424
            {
425
                return _LineSize;
426
            }
427
            set
428
            {
429
                _LineSize = value;
430
                OnPropertyChanged("LineSize");
431
            }
432
        }
433
434 5ce56a3a KangIngu
        private double _Interval { get; set; }
435
        public double Interval
436
        {
437
            get
438
            {
439
                return _Interval;
440
            }
441
            set
442
            {
443
                _Interval = value;
444
                OnPropertyChanged("Interval");
445
            }
446
        }
447 537f4cd8 djkim
        private double _SaveInterval { get; set; }
448
        public double SaveInterval
449
        {
450
            get
451
            {
452
                return _SaveInterval;
453
            }
454
            set
455
            {
456
                _SaveInterval = value;
457
                OnPropertyChanged("SaveInterval");
458
            }
459
        }
460 9f473fb7 KangIngu
        private double _ArcLength { get; set; }
461
        public double ArcLength
462
        {
463
            get
464
            {
465
                return _ArcLength;
466
            }
467
            set
468
            {
469
                _ArcLength = value;
470
                OnPropertyChanged("ArcLength");
471
            }
472
        }
473
474 787a4489 KangIngu
        public bool IsPressShift
475
        {
476
            get
477
            {
478 e36af3a8 humkyung
                return ((System.Windows.Input.Keyboard.Modifiers & System.Windows.Input.ModifierKeys.Shift) == System.Windows.Input.ModifierKeys.Shift);
479 787a4489 KangIngu
            }
480
        }
481
482
        public bool IsPressCtrl
483
        {
484
            get
485
            {
486 e36af3a8 humkyung
                return ((System.Windows.Input.Keyboard.Modifiers & System.Windows.Input.ModifierKeys.Control) == System.Windows.Input.ModifierKeys.Control);
487 787a4489 KangIngu
            }
488
        }
489
490
        /// <summary>
491
        /// Dash 사이즈 
492
        /// </summary>
493
        private DoubleCollection _DashSize { get; set; }
494
        public DoubleCollection DashSize
495
        {
496
            get
497
            {
498
                return _DashSize;
499
            }
500
            set
501
            {
502
                _DashSize = value;
503
                OnPropertyChanged("DashSize");
504
            }
505
        }
506
507
        private string _ControlTag { get; set; }
508
        public string ControlTag
509
        {
510
            get
511
            {
512
                return _ControlTag;
513
            }
514
            set
515
            {
516
                _ControlTag = value;
517
                OnPropertyChanged("ControlTag");
518
            }
519
        }
520
521 69ef0800 KangIngu
        private string _CheckStatus { get; set; }
522
        public string CheckStatus
523
        {
524
            get
525
            {
526
                return _CheckStatus;
527
            }
528
            set
529
            {
530
                _CheckStatus = value;
531
                OnPropertyChanged("CheckStatus");
532
            }
533
        }
534
535
536
537 787a4489 KangIngu
        //private bool _IsPageChanged { get; set; }
538
        //public bool IsPageChanged
539
        //{
540
        //    get
541
        //    {
542
        //        return _IsPageChanged;
543
        //    }
544
        //    set
545
        //    {
546
        //        _IsPageChanged = value;
547
        //        OnPropertyChanged("IsPageChanged");
548
        //    }
549
        //}
550
551
552
553
        ///// <summary>
554
        ///// 강인구 추가(Check List관련)
555
        ///// </summary>
556
        //public List<Check_Inferface> Check_Item
557
        //{
558
        //    get
559
        //    {
560
        //        return check_Item;
561
        //    }
562
        //}
563
564
        private bool _IsConsolidate { get; set; }
565
        public bool IsConsolidate
566
        {
567
            get
568
            {
569
                return _IsConsolidate;
570
            }
571
            set
572
            {
573
                _IsConsolidate = value;
574
                OnPropertyChanged("IsConsolidate");
575
            }
576
        }
577
578 bae83c92 taeseongkim
        private bool _IsFinalPDF { get; set; }
579
        public bool IsFinalPDF
580
        {
581
            get
582
            {
583
                return _IsFinalPDF;
584
            }
585
            set
586
            {
587
                _IsFinalPDF = value;
588
                OnPropertyChanged("IsFinalPDF");
589
            }
590
        }
591
        private DateTime _FinalPDFTime { get; set; }
592
        public DateTime FinalPDFTime
593
        {
594
            get
595
            {
596
                return _FinalPDFTime;
597
            }
598
            set
599
            {
600
                _FinalPDFTime = value;
601
                OnPropertyChanged("FinalPDFTime");
602
            }
603
        }
604
605 787a4489 KangIngu
        ////////////////////////////////////////////////
606
607
608
        #region Angle 관련
609 4f017ed3 taeseongkim
        private Visibility _MarkupAngleVisibility { get; set; }
610
        public Visibility MarkupAngleVisibility
611 787a4489 KangIngu
        {
612
            get
613
            {
614 4f017ed3 taeseongkim
                return _MarkupAngleVisibility;
615 787a4489 KangIngu
            }
616
            set
617
            {
618 4f017ed3 taeseongkim
                _MarkupAngleVisibility = value;
619
                OnPropertyChanged("MarkupAngleVisibility");
620 787a4489 KangIngu
            }
621
622
        }
623
624 4f017ed3 taeseongkim
        public double MarkupAngle
625
        {
626
            get
627
            {
628
                return markupAngle;
629
            }
630
            set
631
            {
632
                markupAngle = value;
633
                OnPropertyChanged("MarkupAngle");
634
            }
635
        }
636
637
        public double PageAngle
638 168f8027 taeseongkim
        {
639
            get
640
            {
641 4f017ed3 taeseongkim
                return pageAngle;
642 168f8027 taeseongkim
            }
643
            set
644
            {
645 4f017ed3 taeseongkim
                pageAngle = value;
646
                OnPropertyChanged("PageAngle");
647 168f8027 taeseongkim
            }
648
        }
649
650 787a4489 KangIngu
        private string _HelperContent { get; set; }
651
        public string HelperContent
652
        {
653
            get
654
            {
655
                return _HelperContent;
656
            }
657
            set
658
            {
659
                _HelperContent = value;
660
                OnPropertyChanged("HelperContent");
661
            }
662
        }
663
664
        private string _HelperHeader { get; set; }
665
        public string HelperHeader
666
        {
667
            get
668
            {
669
                return _HelperHeader;
670
            }
671
            set
672
            {
673
                _HelperHeader = value;
674
                OnPropertyChanged("HelperHeader");
675
            }
676
        }
677
678
        private bool _HelperExit { get; set; }
679
        public bool HelperExit
680
        {
681
            get
682
            {
683
                return _HelperExit;
684
            }
685
            set
686
            {
687
                _HelperExit = value;
688
                OnPropertyChanged("HelperExit");
689
            }
690
        }
691
692
        #endregion
693
694 eeb0a39c taeseongkim
        public event EventHandler<EventArgs> PageLoaded;
695 f65e6c02 taeseongkim
696
        /// <summary>
697
        /// 페이지 변경 후 페이지에 해당하는 마크업을 모두 읽었을때 이벤트를 보내도록 한다.
698
        /// </summary>
699 d5096d58 taeseongkim
        public void LoadPageMarkupFinish(Rect rect)
700 f65e6c02 taeseongkim
        {
701 eeb0a39c taeseongkim
            if(PageLoaded != null)
702 f65e6c02 taeseongkim
            {
703 eeb0a39c taeseongkim
                PageLoaded(this, new EventArgs());
704 f65e6c02 taeseongkim
            }
705 d5096d58 taeseongkim
            else
706
            {
707
                this.SystemMain.dzMainMenu.zoomAndPanControl.ZoomTo(rect);
708
            }
709 f65e6c02 taeseongkim
        }
710
711 bae83c92 taeseongkim
        public bool SaveCheck()
712
        {
713
            bool result = false;
714
715
            if (ViewerDataModel.Instance.UndoDataList.Count > 0)
716
            {
717
                DateTime undoTime = UndoDataList.OrderByDescending(order => order.EventTime).FirstOrDefault().EventTime;
718
                DateTime updatetime = DateTime.Now.AddDays(-1);
719
                
720
                if (_markupInfoList.Count > 0)
721
                {
722
                    updatetime = _markupInfoList.OrderByDescending(order => order.UpdateTime).FirstOrDefault().UpdateTime;
723
                }
724
725
                if (undoTime > updatetime)
726
                {
727
                    result = false;
728
                }
729
                else
730
                {
731
                    result = true;
732
                }
733
            }
734
            else
735
            {
736
                result = true;
737
            }
738
739
            return result;
740
        }
741
742
        public bool FinalPDFCheck()
743
        {
744
            bool result = false;
745
746
            DateTime updatetime = DateTime.Now.AddDays(-1);
747
748
            if (_markupInfoList.Count > 0)
749
            {
750
               var consolidateItems = _markupInfoList.Where(x => x.Consolidate == 1 && x.AvoidConsolidate == 0);
751
752
                if (consolidateItems.Count() > 0)
753
                {
754
                    updatetime = consolidateItems.OrderByDescending(order => order.UpdateTime).FirstOrDefault().UpdateTime;
755
                }
756
            }
757
758
            if (FinalPDFTime > updatetime)
759
            {
760
                result = true;
761
            }
762
763
            return result;
764
        }
765
766 b643fcca taeseongkim
        public void SetAngleVisible(Visibility visibility)
767
        {
768 4f017ed3 taeseongkim
            this.MarkupAngleVisibility = visibility;
769 b643fcca taeseongkim
        }
770
771 f65e6c02 taeseongkim
772 787a4489 KangIngu
        public ObservableCollection<CommentUserInfo> MarkupControls
773
        {
774
            get
775
            {
776
                return markupControls;
777
            }
778
        }
779
780
        public ObservableCollection<CommentUserInfo> MarkupControls_Sync
781
        {
782
            get
783
            {
784
                return markupControls_Sync;
785
            }
786
        }
787 6707a5c7 ljiyeon
        public int current_page_commentcnt = 0;
788 787a4489 KangIngu
        public ObservableCollection<CommentUserInfo> MarkupControls_USER
789
        {
790
            get
791
            {
792
                return markupControls_User;
793
            }
794
        }
795
796 873011c4 humkyung
        public ObservableCollection<UndoDataGroup> UndoDataList
797 787a4489 KangIngu
        {
798
            get
799
            {
800
                return undoDataList;
801
            }
802
        }
803 6707a5c7 ljiyeon
        
804 787a4489 KangIngu
        public StrokeCollection MarkupPens
805
        {
806
            get
807
            {
808
                return markupPens;
809
            }
810
811
        }
812
813
        #region 버튼 여부
814
815
        /// <summary>
816
        /// 상단 Fill 버튼이 클릭 되어있는지
817
        /// </summary>
818
        private bool _checkFillShape { get; set; }
819
        public bool checkFillShape
820
        {
821
            get
822
            {
823
                return _checkFillShape;
824
            }
825
            set
826
            {
827
                _checkFillShape = value;
828
                OnPropertyChanged("checkFillShape");
829
            }
830
        }
831
832
        /// <summary>
833
        /// 상단 Hatch 버튼이 클릭 되어있는지
834
        /// </summary>
835
        private bool _checkHatchShape { get; set; }
836
        public bool checkHatchShape
837
        {
838
            get
839
            {
840
                return _checkHatchShape;
841
            }
842
            set
843
            {
844
                _checkHatchShape = value;
845
                OnPropertyChanged("checkHatchShape");
846
            }
847
        }
848
849
        private double _controlOpacity { get; set; }
850
        public double ControlOpacity
851
        {
852
            get
853
            {
854
                return _controlOpacity;
855
            }
856
            set
857
            {
858 2b19f5f2 djkim
859
                _controlOpacity = value;
860 787a4489 KangIngu
                OnPropertyChanged("ControlOpacity");
861
            }
862
        }
863
864
        private MarkupToPDF.Controls.Common.PaintSet _paintSet { get; set; }
865
        public MarkupToPDF.Controls.Common.PaintSet paintSet
866
        {
867
            get
868
            {
869
                return _paintSet;
870
            }
871
            set
872
            {
873
                _paintSet = value;
874
                OnPropertyChanged("paintSet");
875
            }
876
        }
877
878
        /// <summary>
879
        /// 강인구 추가
880
        /// 상단 TextStyle 버튼이 클릭 되어있는지
881
        /// </summary>
882
        private bool _checkTextStyle { get; set; }
883
        public bool checkTextStyle
884
        {
885
            get
886
            {
887
                return _checkTextStyle;
888
            }
889
            set
890
            {
891
                _checkTextStyle = value;
892
                OnPropertyChanged("checkTextStyle");
893
            }
894
        }
895
896
        /// <summary>
897
        /// 강인구 추가
898
        /// 상단 TextWeight 버튼이 클릭 되어있는지
899
        /// </summary>
900
        private bool _checkTextWeight { get; set; }
901
        public bool checkTextWeight
902
        {
903
            get
904
            {
905
                return _checkTextWeight;
906
            }
907
            set
908
            {
909
                _checkTextWeight = value;
910
                OnPropertyChanged("checkTextWeight");
911
            }
912
        }
913
914
        /// <summary>
915
        /// 강인구 추가
916
        /// 상단 UnderLine 버튼이 클릭 되어있는지
917
        /// </summary>
918
        private bool _checkUnderLine { get; set; }
919
        public bool checkUnderLine
920
        {
921
            get
922
            {
923
                return _checkUnderLine;
924
            }
925
            set
926
            {
927
                _checkUnderLine = value;
928
                OnPropertyChanged("checkUnderLine");
929
            }
930
        }
931
932
        /// <summary>
933
        /// 상단 Hatch 버튼이 클릭 되어있는지
934
        /// </summary>
935
        private bool _checkHighShape { get; set; }
936
        public bool checkHighShape
937
        {
938
            get
939
            {
940
                return _checkHighShape;
941
            }
942
            set
943
            {
944
                _checkHighShape = value;
945
                OnPropertyChanged("checkHighShape");
946
            }
947
        }
948
949
        /// <summary>
950
        /// 상단 Axis 버튼이 클릭 되어있는지
951
        /// </summary>
952 233ef333 taeseongkim
        private bool _IsAxisLock { get; set; }
953
        public bool IsAxisLock
954 787a4489 KangIngu
        {
955
            get
956
            {
957 233ef333 taeseongkim
                return _IsAxisLock;
958 787a4489 KangIngu
            }
959
            set
960
            {
961 233ef333 taeseongkim
                _IsAxisLock = value;
962
                OnPropertyChanged("IsAxisLock");
963 787a4489 KangIngu
            }
964
        }
965 d4b0c723 KangIngu
966
        /// <summary>
967
        /// 상단 Highlight 버튼이 클릭 되어있는지
968
        /// </summary>
969
        private bool _checkHighlight { get; set; }
970
        public bool checkHighlight
971
        {
972
            get
973
            {
974
                return _checkHighlight;
975
            }
976
            set
977
            {
978
                _checkHighlight = value;
979
                OnPropertyChanged("checkHighlight");
980
            }
981
        }
982
983
        /// <summary>
984
        /// 강인구 추가
985
        /// 상단 TextWeight 버튼이 클릭 되어있는지
986
        /// </summary>
987
        private double _TextSize { get; set; }
988
        public double TextSize
989
        {
990
            get
991
            {
992
                return _TextSize;
993
            }
994
            set
995
            {
996
                _TextSize = value;
997
                OnPropertyChanged("TextSize");
998
            }
999
        }
1000 787a4489 KangIngu
        #endregion
1001
1002
        public ImageBrush BackgroundImage
1003
        {
1004
            get
1005
            {
1006
                return backgroundImage;
1007
            }
1008
            set
1009
            {
1010
                backgroundImage = value;
1011
                OnPropertyChanged("BackgroundImage");
1012
            }
1013
        }
1014
1015
        public ObservableCollection<KCOMDataModel.DataModel.DOCPAGE> Document_Info
1016
        {
1017
            get
1018
            {
1019
                return document_Info;
1020
            }
1021
        }
1022
1023
        public double ContentScale
1024
        {
1025
            get
1026
            {
1027
                return contentScale;
1028
            }
1029
            set
1030
            {
1031
                contentScale = value;
1032
1033
                double minOffsetX = 0.0;
1034
                double maxOffsetX = Math.Max(0.0, ContentWidth - ContentViewportWidth);
1035
                contentOffsetX = Math.Min(Math.Max(contentOffsetX, minOffsetX), maxOffsetX);
1036
1037
                double minOffsetY = 0.0;
1038
                double maxOffsetY = Math.Max(0.0, ContentHeight - ContentViewportHeight);
1039
                contentOffsetY = Math.Min(Math.Max(contentOffsetY, minOffsetY), maxOffsetY);
1040
1041
                OnPropertyChanged("ContentScale");
1042
            }
1043
        }
1044
1045 9cd2865b KangIngu
        public double Sync_ContentScale
1046
        {
1047
            get
1048
            {
1049
                return Sync_contentScale;
1050
            }
1051
            set
1052
            {
1053
                Sync_contentScale = value;
1054
                OnPropertyChanged("Sync_ContentScale");
1055
            }
1056
        }
1057
1058 787a4489 KangIngu
        public ObservableCollection<IKCOM.MarkupInfoItem> _markupInfoList
1059
        {
1060
            get
1061
            {
1062
                return markupInfoList;
1063
            }
1064
            set
1065
            {
1066
                markupInfoList = value;
1067
                OnPropertyChanged("_markupInfoList");
1068
            }
1069
        }
1070
1071 8e5a4a6a taeseongkim
        public ObservableCollection<MarkupUserInfo> _markupUserList
1072
        {
1073
            get
1074
            {
1075
                return markupUserList;
1076
            }
1077
            set
1078
            {
1079
                markupUserList = value;
1080
                OnPropertyChanged("_markupUserList");
1081
            }
1082
        }
1083
1084 787a4489 KangIngu
        public ObservableCollection<IKCOM.MarkupInfoItem> _markupInfoRevList
1085
        {
1086
            get
1087
            {
1088
                return markupInfoRevList;
1089
            }
1090
            set
1091
            {
1092
                markupInfoRevList = value;
1093
                OnPropertyChanged("_markupInfoRevList");
1094
            }
1095
        }
1096
1097
        public double ContentOffsetX
1098
        {
1099
            get
1100
            {
1101
                return contentOffsetX;
1102
            }
1103
            set
1104
            {
1105
                double minOffsetX = 0.0;
1106
                double maxOffsetX = Math.Max(0.0, ContentWidth - ContentViewportWidth);
1107
                contentOffsetX = Math.Min(Math.Max(value, minOffsetX), maxOffsetX);
1108
                OnPropertyChanged("ContentOffsetX");
1109
            }
1110
        }
1111
1112
        public double ContentOffsetY
1113
        {
1114
            get
1115
            {
1116
                return contentOffsetY;
1117
            }
1118
            set
1119
            {
1120
                double minOffsetY = 0.0;
1121
                double maxOffsetY = Math.Max(0.0, ContentHeight - ContentViewportHeight);
1122
                contentOffsetY = Math.Min(Math.Max(value, minOffsetY), maxOffsetY);
1123
                OnPropertyChanged("ContentOffsetY");
1124
            }
1125
        }
1126
1127 9cd2865b KangIngu
        public double Sync_ContentOffsetX
1128
        {
1129
            get
1130
            {
1131
                return Sync_contentOffsetX;
1132
            }
1133
            set
1134
            {
1135
                Sync_contentOffsetX = value;
1136
                OnPropertyChanged("Sync_ContentOffsetX");
1137
            }
1138
        }
1139
1140
        public double Sync_ContentOffsetY
1141
        {
1142
            get
1143
            {
1144
                return Sync_contentOffsetY;
1145
            }
1146
            set
1147
            {
1148
                Sync_contentOffsetY = value;
1149
                OnPropertyChanged("Sync_ContentOffsetY");
1150
            }
1151
        }
1152
1153 787a4489 KangIngu
        public MessageCollection k_talkMessageSet
1154
        {
1155
            get
1156
            {
1157 2b19f5f2 djkim
                if (_k_talkMessageSet == null)
1158 787a4489 KangIngu
                {
1159
                    _k_talkMessageSet = new MessageCollection();
1160
                }
1161
                return _k_talkMessageSet;
1162
            }
1163
            set
1164
            {
1165
                _k_talkMessageSet = value;
1166
                OnPropertyChanged("k_talkMessageSet");
1167
            }
1168
        }
1169
1170
        public double ContentWidth
1171
        {
1172
            get
1173
            {
1174
                return contentWidth;
1175
            }
1176
            set
1177
            {
1178
                contentWidth = value;
1179
                OnPropertyChanged("ContentWidth");
1180
            }
1181
        }
1182
1183
        public double ContentHeight
1184
        {
1185
            get
1186
            {
1187
                return contentHeight;
1188
            }
1189
            set
1190
            {
1191
                contentHeight = value;
1192
                OnPropertyChanged("ContentHeight");
1193
            }
1194
        }
1195
1196
        public double ContentViewportWidth
1197
        {
1198
            get
1199
            {
1200
                return contentViewportWidth;
1201
            }
1202
            set
1203
            {
1204
                contentViewportWidth = value;
1205
                OnPropertyChanged("ContentViewportWidth");
1206
            }
1207
        }
1208
1209
        public double ContentViewportHeight
1210
        {
1211
            get
1212
            {
1213
                return contentViewportHeight;
1214
            }
1215
            set
1216
            {
1217
                contentViewportHeight = value;
1218
                OnPropertyChanged("ContentViewportHeight");
1219
            }
1220
        }
1221
1222
        public MainWindow SystemMain { get; set; }
1223
1224
        private bool _PageBalanceMode { get; set; }
1225
        public bool PageBalanceMode
1226
        {
1227
            get
1228
            {
1229
                return _PageBalanceMode;
1230
            }
1231
            set
1232
            {
1233
                _PageBalanceMode = value;
1234
                OnPropertyChanged("PageBalanceMode");
1235
            }
1236
        }
1237
1238
        private int _PageBalanceNumber { get; set; }
1239
        public int PageBalanceNumber
1240
        {
1241
            get
1242
            {
1243
                return _PageBalanceNumber;
1244
            }
1245
            set
1246
            {
1247
                _PageBalanceNumber = value;
1248
                OnPropertyChanged("PageBalanceNumber");
1249
            }
1250
        }
1251
1252 752b18ef taeseongkim
        
1253
        private int _SyncPageNumber { get; set; }
1254
1255
        /// <summary>
1256
        /// Sync Page No
1257
        /// </summary>
1258
        public int SyncPageNumber
1259 787a4489 KangIngu
        {
1260
            get
1261
            {
1262 752b18ef taeseongkim
                return _SyncPageNumber;
1263 787a4489 KangIngu
            }
1264
            set
1265
            {
1266 752b18ef taeseongkim
                if (_SyncPageNumber != value)
1267 e13b43de taeseongkim
                {
1268 752b18ef taeseongkim
                    _SyncPageNumber = value;
1269 e13b43de taeseongkim
                    OnPropertyChanged("PageNumber");
1270
                }
1271 787a4489 KangIngu
            }
1272
        }
1273
1274
        public double AngleOffsetX
1275
        {
1276
            get
1277
            {
1278
                return angleOffsetX;
1279
            }
1280
            set
1281
            {
1282
                angleOffsetX = value;
1283
                OnPropertyChanged("AngleOffsetX");
1284
            }
1285
        }
1286
1287
        public double AngleOffsetY
1288
        {
1289
            get
1290
            {
1291
                return angleOffsetY;
1292
            }
1293
            set
1294
            {
1295
                angleOffsetY = value;
1296
                OnPropertyChanged("AngleOffsetY");
1297
            }
1298
        }
1299
1300
        //강인구 추가(체크리스트)
1301
        private string _CheckList_ID { get; set; }
1302
        public string CheckList_ID
1303
        {
1304
            get
1305
            {
1306
                return _CheckList_ID;
1307
            }
1308
            set
1309
            {
1310
                _CheckList_ID = value;
1311
                OnPropertyChanged("CheckList_ID");
1312
            }
1313
        }
1314
        //강인구 추가(캡쳐 모드)
1315
        private double _Capture_Opacity { get; set; }
1316
        public double Capture_Opacity
1317
        {
1318
            get
1319
            {
1320
                return _Capture_Opacity;
1321
            }
1322
            set
1323
            {
1324
                _Capture_Opacity = value;
1325
                OnPropertyChanged("Capture_Opacity");
1326
            }
1327
        }
1328
1329
        private Visibility _ViewVisible { get; set; }
1330
        public Visibility ViewVisible
1331
        {
1332
            get
1333
            {
1334
                return _ViewVisible;
1335
            }
1336
            set
1337
            {
1338
                _ViewVisible = value;
1339
                OnPropertyChanged("ViewVisible");
1340
            }
1341
        }
1342
1343
        private bool _IsSync { get; set; }
1344
        public bool IsSync
1345
        {
1346
            get
1347
            {
1348
                return _IsSync;
1349
            }
1350
            set
1351
            {
1352
                _IsSync = value;
1353
                OnPropertyChanged("IsSync");
1354
            }
1355
        }
1356
1357 eeb0a39c taeseongkim
        private System.Windows.Media.Imaging.BitmapFrame _ImageViewPath;
1358
        public System.Windows.Media.Imaging.BitmapFrame ImageViewPath
1359 787a4489 KangIngu
        {
1360
            get
1361
            {
1362
                return _ImageViewPath;
1363
            }
1364
            set
1365
            {
1366
                _ImageViewPath = value;
1367
                OnPropertyChanged("ImageViewPath");
1368
            }
1369
        }
1370
        private double _ImageViewWidth { get; set; }
1371
        public double ImageViewWidth
1372
        {
1373
            get
1374
            {
1375
                return _ImageViewWidth;
1376
            }
1377
            set
1378
            {
1379
                _ImageViewWidth = value;
1380
                OnPropertyChanged("ImageViewWidth");
1381
            }
1382
        }
1383
        private double _ImageViewHeight { get; set; }
1384
        public double ImageViewHeight
1385
        {
1386
            get
1387
            {
1388
                return _ImageViewHeight;
1389
            }
1390
            set
1391
            {
1392
                _ImageViewHeight = value;
1393
                OnPropertyChanged("ImageViewHeight");
1394
            }
1395
        }
1396
1397 eeb0a39c taeseongkim
        private System.Windows.Media.Imaging.BitmapImage _ImageViewPath_C;
1398 787a4489 KangIngu
        public System.Windows.Media.Imaging.BitmapImage ImageViewPath_C
1399
        {
1400
            get
1401
            {
1402
                return _ImageViewPath_C;
1403
            }
1404
            set
1405
            {
1406
                _ImageViewPath_C = value;
1407
                OnPropertyChanged("ImageViewPath_C");
1408
            }
1409
        }
1410
        private double _ImageViewWidth_C { get; set; }
1411
        public double ImageViewWidth_C
1412
        {
1413
            get
1414
            {
1415
                return _ImageViewWidth_C;
1416
            }
1417
            set
1418
            {
1419
                _ImageViewWidth_C = value;
1420
                OnPropertyChanged("ImageViewWidth_C");
1421
            }
1422
        }
1423
        private double _ImageViewHeight_C { get; set; }
1424
        public double ImageViewHeight_C
1425
        {
1426
            get
1427
            {
1428
                return _ImageViewHeight_C;
1429
            }
1430
            set
1431
            {
1432
                _ImageViewHeight_C = value;
1433
                OnPropertyChanged("ImageViewHeight_C");
1434
            }
1435
        }
1436
1437
1438
        #endregion Property Member
1439
1440
        public System.IO.Stream GetStreamFromUrl(string url)
1441
        {
1442
            byte[] imageData = null;
1443
1444
            using (var wc = new System.Net.WebClient())
1445
                imageData = wc.DownloadData(url);
1446
1447
            return new System.IO.MemoryStream(imageData);
1448
        }
1449
1450
        public ViewerDataModel()
1451
        {
1452
            //rectangles.Add(new RectangleData(50, 50, 80, 150, Colors.Blue));
1453
            //rectangles.Add(new RectangleData(550, 350, 80, 150, Colors.Green));
1454
            //rectangles.Add(new RectangleData(850, 850, 30, 20, Colors.Purple));
1455
            //rectangles.Add(new RectangleData(1850, 1850, 80, 150, Colors.Red));
1456
1457
            //RectangleControl rect1 = new RectangleControl();
1458
            //rect1.StartPoint = new Point(50, 50);
1459
            //rect1.LeftBottomPoint = new Point(100, 50);
1460
            //rect1.TopRightPoint = new Point(50, 100);
1461
            //rect1.EndPoint = new Point(100, 100);
1462
            //rect1.FillColor = new SolidColorBrush(Colors.Red);
1463
            //rectangles.Add(rect1);
1464
            //
1465
            // Populate the data model with some example data.
1466
            //
1467
            //rectangles.Add(new RectangleData(50, 50, 80, 150, Colors.Blue));
1468
            //rectangles.Add(new RectangleData(550, 350, 80, 150, Colors.Green));
1469
            //rectangles.Add(new RectangleData(850, 850, 30, 20, Colors.Purple));
1470
            //rectangles.Add(new RectangleData(1850, 1850, 80, 150, Colors.Red));
1471
1472
            this.ControlOpacity = 1;
1473 2b19f5f2 djkim
1474 5822e146 ljiyeon
            /* Default
1475
             LineSize = 3, TextSize = 30, Interval = 10, ArcLength = 10, SaveInterval = 5
1476
            */            
1477
            this.LineSize = KCOM.Properties.Settings.Default.LineSize;
1478 787a4489 KangIngu
1479 5822e146 ljiyeon
            this.TextSize = KCOM.Properties.Settings.Default.TextSize;
1480 d4b0c723 KangIngu
1481 5822e146 ljiyeon
            this.Interval = KCOM.Properties.Settings.Default.Interval;
1482 5ce56a3a KangIngu
1483 5822e146 ljiyeon
            this.ArcLength = KCOM.Properties.Settings.Default.ArcLength;
1484 9f473fb7 KangIngu
1485 89b30429 djkim
            this.DashSize = new DoubleCollection();
1486 537f4cd8 djkim
1487 5822e146 ljiyeon
            this.SaveInterval = KCOM.Properties.Settings.Default.SaveInterval;
1488 4f017ed3 taeseongkim
            this.MarkupAngleVisibility = Visibility.Collapsed;
1489 6707a5c7 ljiyeon
        }
1490 f714bef8 djkim
1491 6af42ff0 taeseongkim
1492
        public List<IKCOM.MarkupInfoItem> SelectedmarkupInfoItems { get; set; }
1493 5ba8f2d5 taeseongkim
        public bool IsMarkupUpdate { get => isMarkupUpdate; set => isMarkupUpdate = value; }
1494
1495 787a4489 KangIngu
        #region INotifyPropertyChanged Event
1496
1497
        private void OnPropertyChanged(string name)
1498
        {
1499
            if (PropertyChanged != null)
1500
            {
1501
                PropertyChanged(this, new PropertyChangedEventArgs(name));
1502
            }
1503
        }
1504
1505
        public event PropertyChangedEventHandler PropertyChanged;
1506
1507
        #endregion
1508
    }
1509
}
클립보드 이미지 추가 (최대 크기: 500 MB)