1+ using System . Collections . ObjectModel ;
2+ using System ;
3+ using System . IO ;
4+ using System . Windows ;
5+ using System . Windows . Media . Imaging ;
6+ using Microsoft . Win32 ;
7+ using System . Xml . Serialization ;
8+ using Popstation . Pbp ;
9+ using PSXPackagerGUI . Models . Resource ;
10+ using PSXPackagerGUI . Pages ;
11+ using PSXPackagerGUI . Templates ;
12+ using ImageLayer = PSXPackagerGUI . Models . Resource . ImageLayer ;
13+ using Layer = PSXPackagerGUI . Models . Resource . Layer ;
14+
15+ namespace PSXPackagerGUI . Common ;
16+
17+ public class ResourceHelper
18+ {
19+
20+ public static void LoadTemplate ( ResourceModel resource , string filename , bool isDefault = false )
21+ {
22+ switch ( resource . Type )
23+ {
24+ case ResourceType . ICON0 :
25+ case ResourceType . BOOT :
26+ case ResourceType . PIC1 :
27+ case ResourceType . PIC0 :
28+ {
29+ XmlSerializer serializer = new XmlSerializer ( typeof ( Resource ) ) ;
30+
31+ var basePath = Path . GetDirectoryName ( filename ) ;
32+
33+ using ( FileStream stream = File . OpenRead ( filename ) )
34+ {
35+ try
36+ {
37+ var xmlResource = ( Resource ) serializer . Deserialize ( stream ) ! ;
38+ var resourceTemplate = xmlResource . ToResourceTemplate ( basePath ! ) ;
39+ if ( resourceTemplate . ResourceType != resource . Type )
40+ {
41+ return ;
42+ }
43+ resource . Composite . Clear ( ) ;
44+ resource . Composite . Layers = new ObservableCollection < Layer > ( resourceTemplate . Layers ) ;
45+ resource . RefreshIcon ( ) ;
46+ }
47+ finally
48+ {
49+
50+ }
51+ }
52+ resource . HasResource = true ;
53+ break ;
54+ }
55+ }
56+ }
57+
58+ public static void LoadResource ( ResourceModel resource , string filename , bool isDefault = false )
59+ {
60+ switch ( resource . Type )
61+ {
62+ case ResourceType . ICON0 :
63+ case ResourceType . BOOT :
64+ case ResourceType . PIC1 :
65+ case ResourceType . PIC0 :
66+ {
67+ resource . Composite . Clear ( ) ;
68+
69+ try
70+ {
71+ var appPath = ApplicationInfo . AppPath ;
72+
73+ using var fileStream = new FileStream ( filename , FileMode . Open , FileAccess . Read ) ;
74+
75+ BitmapSource image = ImageProcessing . GetBitmapImage ( fileStream ) ;
76+
77+ switch ( resource . Type )
78+ {
79+ case ResourceType . ICON0 :
80+ {
81+ //image = ImageProcessing.Resize(image, 80, 80);
82+
83+
84+ if ( ServiceLocator . Settings . GenerateIconFrame )
85+ {
86+ var alphaMaskUri = Path . Combine ( appPath , "Resources" , "alpha.png" ) ;
87+ using var maskStream = new FileStream ( alphaMaskUri , FileMode . Open , FileAccess . Read ) ;
88+ resource . Composite . SetAplhaMask ( ImageProcessing . GetBitmapImage ( maskStream ) ) ;
89+
90+ resource . Composite . Layers . Add ( new ImageLayer ( image , "image" , alphaMaskUri ) ) ;
91+
92+ var overlayUri = Path . Combine ( appPath , "Resources" , "overlay.png" ) ;
93+ using var frameStream = new FileStream ( overlayUri , FileMode . Open , FileAccess . Read ) ;
94+ resource . Composite . Layers . Add ( new ImageLayer ( ImageProcessing . GetBitmapImage ( frameStream ) , "frame" , overlayUri ) ) ;
95+ }
96+ else
97+ {
98+ resource . Composite . Layers . Add ( new ImageLayer ( image , "image" , filename ) ) ;
99+ }
100+
101+
102+ break ;
103+ }
104+ case ResourceType . PIC0 :
105+ {
106+ //image = ImageProcessing.Resize(image, 310, 180);
107+
108+ resource . Composite . Layers . Add ( new ImageLayer ( image , "image" , filename ) ) ;
109+ break ;
110+ }
111+ case ResourceType . PIC1 :
112+ case ResourceType . BOOT :
113+ {
114+ //image = ImageProcessing.Resize(image, 480, 272);
115+
116+ resource . Composite . Layers . Add ( new ImageLayer ( image , "image" , filename ) ) ;
117+ break ;
118+ }
119+ }
120+ resource . HasResource = true ;
121+ resource . SourceUrl = filename ;
122+ resource . RefreshIcon ( ) ;
123+ }
124+ catch ( Exception e )
125+ {
126+ }
127+
128+ break ;
129+ }
130+ default :
131+ {
132+ try
133+ {
134+ using var fileStream = new FileStream ( filename , FileMode . Open , FileAccess . Read ) ;
135+ resource . CopyFromStream ( fileStream ) ;
136+ resource . HasResource = true ;
137+ resource . SourceUrl = filename ;
138+ }
139+ catch ( Exception e )
140+ {
141+ }
142+ break ;
143+ }
144+ }
145+
146+ }
147+ }
0 commit comments