2 #include "NewTclCommands.h"
3 #include "DataandMorphing.h"
5 #include "CommandConcatenation.h"
9 int TKVMDemo_Setposition( ClientData cd, Tcl_Interp *interp,
10 int argc, char **argv)
12 //Tk_Window win1 , win2 , win3;
13 Tk_Window mainWindow = Tk_MainWindow(interp);
14 Tk_MoveToplevelWindow(mainWindow,300,300);
18 int TKVMDemo_fileopen( ClientData cd, Tcl_Interp *interp,
19 int argc, char **argv)
21 //Open file dialog and sets path to interp.result
22 Tcl_Eval(interp,"tk_getOpenFile");
23 if (!(*(interp->result))) return 2;
26 //Initialising dynamic strings for storing data
27 Tcl_DString s, dir, inifiletoken, file;
29 Tcl_DStringInit(&dir);
30 Tcl_DStringInit(&inifiletoken);
31 Tcl_DStringInit(&file);
33 //Saving path to the file
34 Tcl_DStringGetResult(interp, &file);
36 //Saving directory path
37 Tcl_Eval(interp, CommandConcatenation(&s,"%s%s", "file dirname ", file.string));
38 Tcl_DStringGetResult(interp, &dir);
40 // Running package for parsing .ini files
41 Tcl_EvalFile (interp, "iniparse.tcl");
45 Tcl_Eval(interp, ".bottom.cb1 deselect");
46 Tcl_Eval(interp, "CShowScanlines");
48 // disable slider and checkbutton
49 Tcl_Eval(interp, ".bottom.cb1 configure -state disabled");
50 Tcl_Eval(interp, ".s configure -state disabled");
53 Tcl_Eval (interp, CommandConcatenation(&s,"%s%s", "iniparse:openfile ",
56 // Saving opend file Tcl token
57 Tcl_DStringAppend(&inifiletoken , (*interp).result,-1);
59 // Saving token for opened ini file to a Tcl variable
60 CommandConcatenation(&s,"%s%s", "set var ", inifiletoken.string);
61 Tcl_Eval (interp, s.string);
64 //Reading 1-st image from a file
65 CommandConcatenation(&s,"%s%s%s", "readini ", inifiletoken.string,
67 Tcl_Eval (interp, s.string);
68 if (!(*(interp->result))) return 2;
70 CommandConcatenation(&s,
72 dir.string,"/", (*interp).result);
74 sprintf(temp, "%s", s.string);
75 while( temp[strlen(temp) - 1] <= ' ' && temp[strlen(temp) - 1] > 0 )
76 temp[strlen(temp) - 1] = 0;
78 cvReleaseImage( &datal );
79 datal = cvvLoadImage( temp );
82 if( !datal ) return 2;
84 //Reading 2-d image from a file
85 CommandConcatenation(&s,"%s%s%s", "readini ", inifiletoken.string,
87 Tcl_Eval (interp, s.string);
88 if (!(*(interp->result))) return 2;
90 CommandConcatenation(&s,
92 dir.string,"/", (*interp).result);
94 sprintf(temp, "%s", s.string);
95 while( temp[strlen(temp) - 1] <= ' ' && temp[strlen(temp) - 1] > 0 )
96 temp[strlen(temp) - 1] = 0;
98 cvReleaseImage( &datar );
99 datar = cvvLoadImage( temp );
102 if( !datar ) return 2;
104 // Loading images data and fundanental matrix
106 if(loaddata( interp)) return 2;
110 Tcl_Eval(interp, "CSetpos");
112 //Displaying source images
113 cvvShowImage( "left", datal );
114 cvvShowImage( "right", datar );
116 Tcl_Eval(interp, ".s configure -state active");
117 Tcl_Eval(interp, ".s set 0.0");
118 Tcl_Eval(interp, ".bottom.cb1 configure -state normal");
119 Tcl_Eval (interp, CommandConcatenation(&s,"%s%d%s%d%s",
120 ".top.l2 configure -text {",
121 imgsize.width,"X ", imgsize.height,
127 int TKVMDemo_scale(ClientData cd, Tcl_Interp *interp,
128 int argc, char **argv)
130 Tcl_Eval(interp, ".s get");
131 float sk = (float)atof((*interp).result);
132 static float previosposition = 0.0;
134 if ((sk-previosposition)*(sk-previosposition)>= 0.01)
136 OnMakeMorphing(sk, interp);
139 Tcl_DString setposition;
140 Tcl_DStringInit(&setposition);
141 char position = (char)sk;
142 Tcl_DStringAppend(&setposition,".s set",-1);
143 Tcl_DStringAppend(&setposition,&position,-1);
144 Tcl_Eval(interp, setposition.string);
151 int TKVMDemo_ShowScanlines(ClientData cd, Tcl_Interp *interp,
152 int argc, char **argv)
154 Tcl_Eval(interp, "set chb");
155 int chb = atoi(interp->result);
156 Tcl_DString drawlinecommand;
157 Tcl_DStringInit(&drawlinecommand);
161 if (numScanlines>0 && chb )
163 for (n = 0; n < numScanlines; n +=10)
165 x1 = (scanlines_2)[n * 4 ];
166 y1 = (scanlines_2)[n * 4 + 1];
167 x2 = (scanlines_2)[n * 4 + 2];
168 y2 = (scanlines_2)[n * 4 + 3];
170 CommandConcatenation(&drawlinecommand,"%s%s%d%d%d%d%s",
172 ".win1.c create line ",
175 Tcl_Eval(interp, drawlinecommand.string);
176 Tcl_DStringFree(&drawlinecommand);
178 x1 = (scanlines_1)[n * 4 ];
179 y1 = (scanlines_1)[n * 4 + 1];
180 x2 = (scanlines_1)[n * 4 + 2];
181 y2 = (scanlines_1)[n * 4 + 3];
183 CommandConcatenation(&drawlinecommand,"%s%d%d%d%d",
184 ".win2.c create line ",
188 Tcl_Eval(interp, drawlinecommand.string);
189 Tcl_DStringFree(&drawlinecommand);
191 x1 = (scanlines_a)[n * 4 ];
192 y1 = (scanlines_a)[n * 4 + 1];
193 x2 = (scanlines_a)[n * 4 + 2];
194 y2 = (scanlines_a)[n * 4 + 3];
195 CommandConcatenation(&drawlinecommand,"%s%d%d%d%d",
196 ".win3.c create line ",
200 Tcl_Eval(interp, drawlinecommand.string);
202 Tcl_DStringFree(&drawlinecommand);
207 if (numScanlines>0 && !chb )
209 Tcl_Eval(interp,"set numlines1");
210 int numlines1 = atoi(interp->result);
212 Tcl_DString deletelinecommand;
213 Tcl_DStringInit(&deletelinecommand);
215 for (n = 0; n < numScanlines; n +=10)
218 CommandConcatenation(&deletelinecommand,"%s%d%d%d%d",
223 Tcl_Eval(interp, deletelinecommand.string);
224 Tcl_DStringFree(&deletelinecommand);
226 CommandConcatenation(&deletelinecommand,"%s%d%d%d%d",
231 Tcl_Eval(interp, deletelinecommand.string);
232 Tcl_DStringFree(&deletelinecommand);
234 CommandConcatenation(&deletelinecommand,"%s%d%d%d%d",
239 Tcl_Eval(interp, deletelinecommand.string);
240 Tcl_DStringFree(&deletelinecommand);
247 ////////////////////////////////////////////////////////////////////////////
248 void OnExit(ClientData clientData)