001:
002:
003:
004:
005:
006: #include <windows.h>
007: #include "wingui.h"
008: #include "ipcommon.h"
009:
010: #define SMALL_X 0.7321
011: #define SMALL_Y 0.8732
012: #define LARGE_X 1.28
013: #define LARGE_Y 1.42
014: #define DEG 35
015: #define DX 5
016: #define DY -5
017: #define INTP_TYPE INTP_LN
018: #define SCALE_LARGE
019:
020: void toOrg();
021: void set_ipsize();
022: void iSmall1();
023: void iSmall2();
024: void iSmall3();
025: void iSmall4();
026: void iCSmall();
027: void iAffine();
028:
029:
030:
031: MenuInfo MI[] = {
032: {"元画像",toOrg},
033: {"最近傍法",iSmall1},
034: {"線形補間法",iSmall2},
035: {"バイキュービック法",iSmall3},
036: {"面積平均法",iSmall4},
037: {"面積平均法(カラー)",iCSmall},
038: {"アフィン変換",iAffine},
039: {NULL,NULL}
040: };
041:
042:
043:
044: void toOrg() {
045: set_ip_window();
046: CopyMemory(lpBMP,lpOrgBMP,biSize);
047: }
048:
049:
050:
051: void set_ipsize()
052: {
053: int xsize,ysize;
054: xsize = rint(iWidth*SMALL_X);
055: ysize = rint(iHeight*SMALL_Y);
056: set_ip_window(xsize,ysize);
057: }
058:
059:
060:
061: void iSmall1()
062: {
063: set_ip_window();
064: LPBYTE iGray=GetGray();
065: #ifdef SCALE_LARGE
066: nn_scale(iGray,LARGE_X,LARGE_Y);
067: #else
068: nn_scale(iGray,SMALL_X,SMALL_Y);
069: set_ipsize();
070: #endif
071:
072: GrayToColor(iGray,lpBMP);
073:
074: GlobalFree(iGray);
075: }
076:
077:
078:
079: void iSmall2()
080: {
081: set_ip_window();
082: LPBYTE iGray=GetGray();
083: #ifdef SCALE_LARGE
084: linear_scale(iGray,LARGE_X,LARGE_Y);
085: #else
086: linear_scale(iGray,SMALL_X,SMALL_Y);
087: set_ipsize();
088: #endif
089:
090: GrayToColor(iGray,lpBMP);
091:
092: GlobalFree(iGray);
093: }
094:
095:
096:
097: void iSmall3()
098: {
099: set_ip_window();
100: LPBYTE iGray=GetGray();
101: #ifdef SCALE_LARGE
102: bcc_scale(iGray,LARGE_X,LARGE_Y);
103: #else
104: bcc_scale(iGray,SMALL_X,SMALL_Y);
105: set_ipsize();
106: #endif
107:
108: GrayToColor(iGray,lpBMP);
109:
110: GlobalFree(iGray);
111: }
112:
113:
114:
115: void iSmall4()
116: {
117: set_ip_window();
118: LPBYTE iGray=GetGray();
119: #ifdef SCALE_LARGE
120: sqm_scale(iGray,LARGE_X,LARGE_Y);
121: #else
122: sqm_scale(iGray,SMALL_X,SMALL_Y);
123: set_ipsize();
124: #endif
125:
126: GrayToColor(iGray,lpBMP);
127:
128: GlobalFree(iGray);
129: }
130:
131:
132:
133: void iCSmall()
134: {
135: toOrg();
136: #ifdef SCALE_LARGE
137: c_sqm_scale(lpBMP,LARGE_X,LARGE_Y);
138: #else
139: c_sqm_scale(lpBMP,SMALL_X,SMALL_Y);
140: set_ipsize();
141: #endif
142: }
143:
144:
145:
146: void iAffine()
147: {
148: toOrg();
149: #ifdef SCALE_LARGE
150: c_affine_transform(lpBMP,INTP_TYPE,LARGE_X,LARGE_Y,DEG,DX,DY);
151: #else
152: c_affine_transform(lpBMP,INTP_TYPE,SMALL_X,SMALL_Y,DEG,DX,DY);
153: #endif
154: }