00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050 #include <gtk/gtk.h>
00051 #include <dirent.h>
00052 #include <fnmatch.h>
00053 #include "config.h"
00054 #include "gxsm/plugin.h"
00055 #include "epsfutils.h"
00056 #include "gxsm/glbvars.h"
00057 #include "mkicons.h"
00058 #include "pyremote.h"
00059
00060 #include "gxsm/action_id.h"
00061
00062
00063
00064 static void mkicons_init( void );
00065 static void mkicons_about( void );
00066 static void mkicons_configure( void );
00067 static void mkicons_query( void );
00068 static void mkicons_cleanup( void );
00069 static void mkicons_run(GtkWidget *w, void *data);
00070
00071
00072 static void mkicons_run_non_interactive(GtkWidget *w, gpointer mki);
00073
00074
00075 GxsmPlugin mkicons_pi = {
00076 NULL,
00077 NULL,
00078 0,
00079 NULL,
00080
00081
00082
00083
00084 "Mkicons",
00085 NULL,
00086
00087 "Mkicons PI.",
00088
00089 "Stefan Schroeder",
00090
00091 N_("_Tools/"),
00092
00093 N_("Makeicons"),
00094
00095 N_("make icons."),
00096
00097 "no more info",
00098 NULL,
00099 NULL,
00100
00101
00102 mkicons_init,
00103
00104
00105 mkicons_query,
00106
00107
00108 mkicons_about,
00109
00110
00111 mkicons_configure,
00112
00113
00114 NULL,
00115
00116
00117 mkicons_cleanup
00118 };
00119
00120
00121 static const char *about_text = N_("Gxsm Plugin\n\n"
00122 "Printer Plugin + Control.");
00123
00124
00125 GxsmPlugin *get_gxsm_plugin_info ( void ){
00126 mkicons_pi.description = g_strdup_printf(N_("Gxsm mkicons plugin %s"), VERSION);
00127 return &mkicons_pi;
00128 }
00129
00130
00131
00132
00133
00134
00135 static void mkicons_init(void)
00136 {
00137 PI_DEBUG (DBG_L2, "mkicons Plugin Init");
00138 }
00139
00140 static void mkicons_about(void)
00141 {
00142 const gchar *authors[] = { mkicons_pi.authors, NULL};
00143 gtk_widget_show(gnome_about_new ( mkicons_pi.name,
00144 VERSION,
00145 N_("(C) 2000 the Free Software Foundation"),
00146 about_text,
00147 authors,
00148 NULL,NULL,NULL
00149 ));
00150 }
00151
00152 static void mkicons_configure(void)
00153 {
00154 if(mkicons_pi.app)
00155 mkicons_pi.app->message("Mkicons Plugin Configuration");
00156 }
00157
00158 static void mkicons_query(void)
00159 {
00160 mkicons_pi.app->ConnectPluginToMkiconsEvent (mkicons_run);
00161 }
00162
00163
00164 static void mkicons_cleanup(void)
00165 {
00166 mkicons_pi.app->ConnectPluginToMkiconsEvent (NULL);
00167 }
00168
00169 static void mkicons_run( GtkWidget *w, void *data )
00170 {
00171 static MkIconsPIControl *mki = NULL;
00172 if(w){
00173 if(!mki)
00174 mki = new MkIconsPIControl();
00175 if(!mki->running()){
00176 mki->run();
00177 }
00178 }
00179 else
00180 if(mki){
00181 delete mki;
00182 }
00183 return;
00184 }
00186
00187
00188
00189
00190
00191 typedef union OptIndex {
00192 struct { unsigned char oi, x, y, z; } s;
00193 unsigned long l;
00194 };
00195
00196 char *Opt_Paper[] = {"A4", "Letter", NULL};
00197 char *Opt_Resolution[] = {"300dpi", "600dpi", "1200dpi", NULL};
00198 char *Opt_ERegression[] = {"no", "E 30% margin", "E 5% margin", NULL};
00199 char *Opt_LRegression[] = {"no", "lin.Reg.", NULL};
00200 char *Opt_ViewMode[] = {"default", "quick", "direct", "logarithmic", "perodic", "horizontal", NULL};
00201 char *Opt_AutoScaling[] = {"default", "auto 5% margin", "auto 20% margin", "auto 30% margin", NULL};
00202 char *Opt_Scaling[] = {"no", "min-max", "Cps-lo-hi", NULL};
00203
00204
00205 #define MK_ICONS_KEYBASE "MkIcons"
00206
00207 MKICONSPI_OPTIONS OptionsList[] = {
00208 { "Paper", Opt_Paper, "AL", 0 },
00209 { "Resolution", Opt_Resolution, "36C", 1 },
00210 { "E-Regression", Opt_ERegression, "-Ee", 0 },
00211 { "L-Regression", Opt_LRegression, "-l", 0 },
00212 { "View-Mode", Opt_ViewMode, "-qdlph", 0 },
00213 { "Auto-Scaling", Opt_AutoScaling, "-123", 0 },
00214 { "Scaling", Opt_Scaling, "-ac", 0 },
00215 { NULL, NULL, NULL, 0 }
00216 };
00217
00218
00219 MkIconsPIControl::MkIconsPIControl (){
00220 PI_DEBUG(DBG_L4, "MkIconsPIControl::MkIconsPIControl");
00221
00222 XsmRescourceManager xrm(MK_ICONS_KEYBASE);
00223
00224 icondata = new MkIconsPIData(
00225 xrm.GetStr("SourcePath","."),
00226 xrm.GetStr("DestPath","/tmp/icons.ps"),
00227 xrm.GetStr("SourceMask","*.nc"),
00228 xrm.GetStr("Options","----------"),
00229 xrm.GetStr("IconFile","icons.ps")
00230 );
00231 icondata = new MkIconsPIData();
00232
00233 PI_DEBUG(DBG_L4, "MkIconsPIControl::MkIconsPIControl OK.");
00234 }
00235
00236 MkIconsPIControl::~MkIconsPIControl (){
00237
00238
00239 PI_DEBUG(DBG_L4, "MkIconsPIControl::~MkIconsPIControl");
00240 MKICONSPI_OPTIONS *opt;
00241 XsmRescourceManager xrm(MK_ICONS_KEYBASE);
00242 for(opt = OptionsList; opt->name; ++opt)
00243 xrm.Put(opt->name, opt->init);
00244
00245 xrm.Put("SourcePath", icondata->pathname);
00246 xrm.Put("DestPath", icondata->outputname);
00247 xrm.Put("SourceMask", icondata->mask);
00248 xrm.Put("Options", icondata->options);
00249 xrm.Put("IconFile", icondata->name);
00250
00251 PI_DEBUG(DBG_L4, "MkIconsPIControl::~MkIconsPIControl done.");
00252 delete icondata;
00253 }
00254
00255 void MkIconsPIControl::run(){
00256 GtkWidget *dialog;
00257 GtkWidget *vbox;
00258 GtkWidget *hbox;
00259 GtkWidget *VarName;
00260 GtkWidget *variable;
00261 GtkWidget *help;
00262 GtkWidget *separator;
00263
00264 PI_DEBUG(DBG_L4, "MkIconsPIControl::run");
00265
00266 dialog = gtk_dialog_new_with_buttons (_("GXSM make icons"),
00267 NULL,
00268 (GtkDialogFlags)(GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT),
00269 _("1x1"), 1, _("2x3"), 2, _("4x6"), 4, _("6x9"), 6,
00270 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
00271 NULL);
00272
00273 vbox = gtk_vbox_new (FALSE, 0);
00274 gtk_widget_show (vbox);
00275
00276 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox),
00277 vbox, TRUE, TRUE, GNOME_PAD);
00278
00279
00280 hbox = gtk_hbox_new (FALSE, 0);
00281 gtk_widget_show (hbox);
00282 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
00283
00284 VarName = gtk_label_new (_("Source Path"));
00285 gtk_widget_set_size_request (VarName, 100, -1);
00286 gtk_widget_show (VarName);
00287 gtk_label_set_justify(GTK_LABEL(VarName), GTK_JUSTIFY_LEFT);
00288 gtk_misc_set_alignment (GTK_MISC (VarName), 0.0, 0.5);
00289 gtk_misc_set_padding (GTK_MISC (VarName), 5, 0);
00290 gtk_box_pack_start (GTK_BOX (hbox), VarName, TRUE, TRUE, 0);
00291
00292 SrcPath = variable = gtk_entry_new ();
00293 gtk_widget_show (variable);
00294 gtk_box_pack_start (GTK_BOX (hbox), variable, TRUE, TRUE, 0);
00295 gtk_entry_set_text (GTK_ENTRY (variable), icondata->pathname);
00296
00297
00298 help = gtk_button_new_with_label (_("Help"));
00299 gtk_widget_show (help);
00300 gtk_box_pack_start (GTK_BOX (hbox), help, TRUE, TRUE, 0);
00301 gtk_signal_connect (GTK_OBJECT (help), "clicked",
00302 GTK_SIGNAL_FUNC (show_info_callback),
00303 (void*)(_("Set to full pathname of data source directory.")));
00304
00305 hbox = gtk_hbox_new (FALSE, 0);
00306 gtk_widget_show (hbox);
00307 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
00308
00309 VarName = gtk_label_new (_("Selection Mask"));
00310 gtk_widget_set_size_request (VarName, 100, -1);
00311 gtk_widget_show (VarName);
00312 gtk_label_set_justify(GTK_LABEL(VarName), GTK_JUSTIFY_LEFT);
00313 gtk_misc_set_alignment (GTK_MISC (VarName), 0.0, 0.5);
00314 gtk_misc_set_padding (GTK_MISC (VarName), 5, 0);
00315 gtk_box_pack_start (GTK_BOX (hbox), VarName, TRUE, TRUE, 0);
00316
00317 SrcMask = variable = gtk_entry_new ();
00318 gtk_widget_show (variable);
00319 gtk_box_pack_start (GTK_BOX (hbox), variable, TRUE, TRUE, 0);
00320 gtk_entry_set_text (GTK_ENTRY (variable), icondata->mask);
00321
00322
00323 help = gtk_button_new_with_label (_("Help"));
00324 gtk_widget_show (help);
00325 gtk_box_pack_start (GTK_BOX (hbox), help, TRUE, TRUE, 0);
00326 gtk_signal_connect (GTK_OBJECT (help), "clicked",
00327 GTK_SIGNAL_FUNC (show_info_callback),
00328 (void*)(_("Select subset of files via wildcard.")));
00329
00330 hbox = gtk_hbox_new (FALSE, 0);
00331 gtk_widget_show (hbox);
00332 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
00333
00334 VarName = gtk_label_new (_("Icon Filename"));
00335 gtk_widget_set_size_request (VarName, 100, -1);
00336 gtk_widget_show (VarName);
00337 gtk_label_set_justify(GTK_LABEL(VarName), GTK_JUSTIFY_LEFT);
00338 gtk_misc_set_alignment (GTK_MISC (VarName), 0.0, 0.5);
00339 gtk_misc_set_padding (GTK_MISC (VarName), 5, 0);
00340 gtk_box_pack_start (GTK_BOX (hbox), VarName, TRUE, TRUE, 0);
00341
00342 IconName = variable = gtk_entry_new ();
00343 gtk_widget_show (variable);
00344 gtk_box_pack_start (GTK_BOX (hbox), variable, TRUE, TRUE, 0);
00345 gtk_entry_set_text (GTK_ENTRY (variable), icondata->outputname);
00346
00347
00348 help = gtk_button_new_with_label (_("Help"));
00349 gtk_widget_show (help);
00350 gtk_box_pack_start (GTK_BOX (hbox), help, TRUE, TRUE, 0);
00351 gtk_signal_connect (GTK_OBJECT (help), "clicked",
00352 GTK_SIGNAL_FUNC (show_info_callback),
00353 (void*)(_("Full Pathname to Iconfile, openmode is append !")));
00354
00355 separator = gtk_hseparator_new ();
00356
00357
00358 gtk_box_pack_start (GTK_BOX (vbox), separator, FALSE, TRUE, 5);
00359 gtk_widget_show (separator);
00360
00361
00362 hbox = gtk_hbox_new (FALSE, 0);
00363 gtk_widget_show (hbox);
00364 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
00365
00366 GtkWidget *mvbox, *label, *wid, *menu, *menuitem;
00367 MKICONSPI_OPTIONS *opt;
00368 char **item;
00369 OptIndex OptI;
00370 int i,j;
00371
00372 PI_DEBUG(DBG_L4, "MkIconsPIControl::run - Setting options");
00373
00374
00375 XsmRescourceManager xrm(MK_ICONS_KEYBASE);
00376 for(j=0, opt = OptionsList; opt->name; ++j, ++opt){
00377
00378 gchar *idefault=g_strdup_printf("%d", opt->init);
00379 xrm.Get(opt->name, &opt->init, idefault);
00380 g_free(idefault);
00381
00382 mvbox = gtk_vbox_new (FALSE, 0);
00383 gtk_widget_show (mvbox);
00384 gtk_box_pack_start (GTK_BOX (hbox), mvbox, TRUE, TRUE, 0);
00385
00386 label = gtk_label_new (opt->name);
00387 gtk_widget_show (label);
00388 gtk_container_add (GTK_CONTAINER (mvbox), label);
00389
00390 wid = gtk_option_menu_new ();
00391 gtk_widget_show (wid);
00392 gtk_container_add (GTK_CONTAINER (mvbox), wid);
00393
00394 menu = gtk_menu_new ();
00395
00396
00397 for(i=0, item=opt->list; *item; ++i, ++item){
00398
00399 menuitem = gtk_menu_item_new_with_label (*item);
00400 gtk_widget_show (menuitem);
00401 gtk_menu_append (GTK_MENU (menu), menuitem);
00402
00403 OptI.l = 0L;
00404 OptI.s.oi = j;
00405 OptI.s.x = i;
00406 gtk_object_set_data(GTK_OBJECT (menuitem), "optindex", (gpointer)OptI.l);
00407 gtk_signal_connect (GTK_OBJECT (menuitem), "activate",
00408 GTK_SIGNAL_FUNC (MkIconsPIControl::option_choice_callback),
00409 this);
00410 }
00411 gtk_option_menu_set_menu (GTK_OPTION_MENU (wid), menu);
00412 gtk_option_menu_set_history (GTK_OPTION_MENU (wid), opt->init);
00413 }
00414
00415 PI_DEBUG(DBG_L4, "MkIconsPIControl::run - Setting options ... OK");
00416
00417 PI_DEBUG(DBG_L4, "MkIconsPIControl::run - Dlg show, run");
00418
00419 gtk_widget_show(dialog);
00420 dlg_clicked (gtk_dialog_run (GTK_DIALOG(dialog)));
00421 gtk_widget_destroy (dialog);
00422
00423 }
00424
00425 void MkIconsPIControl::option_choice_callback(GtkWidget *widget, MkIconsPIControl *mki){
00426 OptIndex i;
00427 i.l=(long)gtk_object_get_data( GTK_OBJECT (widget), "optindex");
00428 mki->icondata->options[i.s.oi] = OptionsList[i.s.oi].id[OptionsList[i.s.oi].init=i.s.x];
00429 PI_DEBUG(DBG_L2, "MkIconsPIControl::option_choice_callback=" << mki->icondata->options );
00430 }
00431
00432 void MkIconsPIControl::dlg_clicked(gint response){
00433
00434 PI_DEBUG(DBG_L4, "MkIconsPIControl::clicked - " << response);
00435
00436 g_free(icondata->pathname);
00437 icondata->pathname = g_strdup(gtk_entry_get_text (GTK_ENTRY (SrcPath)));
00438
00439 g_free(icondata->mask);
00440 icondata->mask = g_strdup(gtk_entry_get_text (GTK_ENTRY (SrcMask)));
00441
00442 g_free(icondata->outputname);
00443 icondata->outputname = g_strdup(gtk_entry_get_text (GTK_ENTRY (IconName)));
00444
00445 switch(response){
00446 case 1:
00447 show_info_callback(NULL, _("Generating 1x1 Icon Pages !"));
00448 icondata->nix=1;
00449 MkIconsPI(icondata);
00450 break;
00451 case 2:
00452 show_info_callback(NULL, _("Generating 2x3 Icon Pages !"));
00453 icondata->nix=2;
00454 MkIconsPI(icondata);
00455 break;
00456 case 4:
00457 show_info_callback(NULL, _("Generating 4x6 Icon Pages !"));
00458 icondata->nix=4;
00459 MkIconsPI(icondata);
00460 break;
00461 case 6:
00462 show_info_callback(NULL, _("Generating 6x9 Icon Pages !"));
00463 icondata->nix=6;
00464 MkIconsPI(icondata);
00465 break;
00466 case GTK_RESPONSE_CANCEL:
00467 break;
00468 }
00469 }
00470
00471
00472
00473
00474
00475
00476
00477 char select_mask[256];
00478 #ifdef IS_MACOSX
00479 int gxsm_select(struct dirent *item){ return !fnmatch(select_mask, item->d_name, 0); }
00480 #else
00481 int gxsm_select(const struct dirent *item){ return !fnmatch(select_mask, item->d_name, 0); }
00482 #endif
00483
00484
00485 MkIconsPIData::MkIconsPIData(gchar *InPath, gchar *OutPath, gchar *InMask,
00486 gchar *Opt, gchar *IconName){
00487
00488 pathname = InPath ? InPath : g_strdup(".") ;
00489 outputname = OutPath ? OutPath : g_strdup("/tmp/icons.ps") ;
00490 name = IconName ? IconName : g_strdup("icons.ps") ;
00491 mask = InMask ? InMask : g_strdup("*.nc") ;
00492 options = Opt ? Opt : g_strdup("--------") ;
00493
00494 redres = 0;
00495 nix = 4;
00496 }
00497
00498 MkIconsPIData::~MkIconsPIData(){
00499 g_free(pathname);
00500 g_free(outputname);
00501 g_free(name);
00502 g_free(mask);
00503 g_free(options);
00504 }
00505
00506
00507
00508
00509
00510
00511
00512
00513
00514
00515
00516
00517
00518
00519
00520
00521
00522
00523
00524
00525
00526 void MkIconsPI(MkIconsPIData *mid){
00527 struct dirent **namelist;
00528 int n;
00529 double hi0,lo0;
00530 lo0=gapp->xsm->data.display.cpslow;
00531 hi0=gapp->xsm->data.display.cpshigh;
00532
00533
00534 if(!gapp->xsm->ActiveScan){
00535 int Ch;
00536 if((Ch=gapp->xsm->FindChan(ID_CH_M_OFF)) < 0){
00537 XSM_SHOW_ALERT(ERR_SORRY, ERR_NOFREECHAN,"for Mk Icons",1);
00538 return;
00539 }
00540 if(gapp->xsm->ActivateChannel(Ch))
00541 return;
00542 gapp->xsm->ActiveScan->create();
00543 }
00544 gapp->xsm->ActiveScan->CpyDataSet(gapp->xsm->data);
00545
00546 if(mid->nix && gapp->xsm->ActiveScan){
00547 int redres;
00548 const double dpifac=72.*6./300.;
00549
00550 switch(mid->options[MkIconOpt_Resolution]){
00551 case '3': redres = (int)(300.*dpifac); break;
00552 case '6': redres = (int)(600.*dpifac); break;
00553 case 'C': redres = (int)(1200.*dpifac); break;
00554 default: redres = (int)(600.*dpifac); break;
00555 }
00556 redres /= mid->nix;
00557 PI_DEBUG (DBG_L2, "N Icons in X: " << mid->nix << ", Reduce to Pixels less than " << redres );
00558
00559
00560 strcpy(select_mask, mid->mask);
00561 n = scandir(mid->pathname, &namelist, gxsm_select, alphasort);
00562 if (n < 0)
00563 perror("scandir");
00564 else{
00565 Scan *Original=NULL, *Icon, *TmpSc, *HlpSc;
00566 char fname[256];
00567
00568 EpsfTools *epsf;
00569 if(IS_SPALEED_CTRL)
00570 epsf = new SPA_epsftools;
00571 else
00572 epsf = new SPM_epsftools;
00573
00574 epsf->SetPaperTyp (mid->options[MkIconOpt_Paper] == 'A' ? A4PAPER:LETTERPAPER);
00575 epsf->open(mid->outputname, TRUE);
00576 epsf->NIcons(mid->nix);
00577 while(n--){
00578 PI_DEBUG(DBG_L2, "Loading " << namelist[n]->d_name );
00579
00580
00581 sprintf(fname,"%s/%s",mid->pathname,namelist[n]->d_name);
00582 PI_DEBUG (DBG_L2, "Icon: " << namelist[n]->d_name);
00583 gapp->xsm->load(fname);
00584
00585 Original = gapp->xsm->ActiveScan;
00586 G_FREE_STRDUP_PRINTF(Original->data.ui.name, namelist[n]->d_name);
00587
00588 Icon = gapp->xsm->NewScan(0, gapp->xsm->data.display.ViewFlg, 0, &gapp->xsm->data);
00589 Icon->create();
00590 TmpSc = gapp->xsm->NewScan(0, gapp->xsm->data.display.ViewFlg, 0, &gapp->xsm->data);
00591 TmpSc->create();
00592
00593
00594 Icon->CpyDataSet(Original->data);
00595 TmpSc->CpyDataSet(Original->data);
00596
00597
00598
00599
00600 if(CopyScan(Original, Icon))
00601 XSM_SHOW_ALERT(ERR_MATH, "", "", 1);
00602
00603 PI_DEBUG (DBG_L2, "W00:" << "nx:" << Icon->data.s.nx << " GetNx:" << Icon->mem2d->GetNx() );
00604
00605 while(Icon->data.s.nx > redres && Icon->data.s.ny > redres){
00606
00607 HlpSc = Icon; Icon = TmpSc; TmpSc = HlpSc;
00608
00609 if(TR_QuenchScan(TmpSc, Icon))
00610 XSM_SHOW_ALERT(ERR_MATH, "", "", 1);
00611 PI_DEBUG (DBG_L2, "WOK:" << "nx:" << Icon->data.s.nx << " GetNx:" << Icon->mem2d->GetNx() );
00612 memcpy( &TmpSc->data, &Icon->data, sizeof(SCAN_DATA));
00613 }
00614 if(CopyScan(Icon, TmpSc))
00615 XSM_SHOW_ALERT(ERR_MATH, "", "", 1);
00616
00617 PI_DEBUG (DBG_L2, "Icon :" << "nx:" << Icon->data.s.nx << " GetNx:" << Icon->mem2d->GetNx() );
00618 PI_DEBUG (DBG_L2, "TmpSc:" << "nx:" << TmpSc->data.s.nx << " GetNx:" << TmpSc->mem2d->GetNx() );
00619
00620
00621
00622
00623
00624 if(mid->options[MkIconOpt_EReg] != '-'){
00625 double eps=0.1;
00626 PI_DEBUG (DBG_L2, "doing E regress ..." );
00627
00628 HlpSc = Icon; Icon = TmpSc; TmpSc = HlpSc;
00629
00630 if(mid->options[MkIconOpt_EReg] == 'e') eps=0.05;
00631 if(mid->options[MkIconOpt_EReg] == 'E') eps=0.3;
00632 TmpSc->Pkt2d[0].x = (int)(eps*TmpSc->mem2d->GetNx());
00633 TmpSc->Pkt2d[0].y = (int)(eps*TmpSc->mem2d->GetNy());
00634 TmpSc->Pkt2d[1].x = (int)((1.-eps)*TmpSc->mem2d->GetNx());
00635 TmpSc->Pkt2d[1].y = (int)((1.-eps)*TmpSc->mem2d->GetNy());
00636 if(BgERegress(TmpSc, Icon))
00637 XSM_SHOW_ALERT(ERR_MATH, "", "", 1);
00638 PI_DEBUG (DBG_L2, "Ereg - Icon :" << "nx:" << Icon->data.s.nx << " GetNx:" << Icon->mem2d->GetNx() );
00639 PI_DEBUG (DBG_L2, "Ereg - TmpSc:" << "nx:" << TmpSc->data.s.nx << " GetNx:" << TmpSc->mem2d->GetNx() );
00640 }
00641
00642
00643 if(mid->options[MkIconOpt_LReg] == 'l'){
00644 PI_DEBUG (DBG_L2, "doing BgLin1D ..." );
00645
00646 HlpSc = Icon; Icon = TmpSc; TmpSc = HlpSc;
00647
00648 if(BgLin1DScan(TmpSc, Icon))
00649 XSM_SHOW_ALERT(ERR_MATH, "", "", 1);
00650 PI_DEBUG (DBG_L2, "BgLin1D - Icon :" << "nx:" << Icon->data.s.nx << " GetNx:" << Icon->mem2d->GetNx() );
00651 PI_DEBUG (DBG_L2, "BgLin1D - TmpSc:" << "nx:" << TmpSc->data.s.nx << " GetNx:" << TmpSc->mem2d->GetNx() );
00652 }
00653
00654
00655 switch(mid->options[MkIconOpt_ViewMode]){
00656 case 'q': Icon->mem2d->SetDataPktMode (SCAN_V_QUICK); break;
00657 case 'd': Icon->mem2d->SetDataPktMode (SCAN_V_DIRECT); break;
00658 case 'l': Icon->mem2d->SetDataPktMode (SCAN_V_LOG); break;
00659 case 'h': Icon->mem2d->SetDataPktMode (SCAN_V_HORIZONTAL); break;
00660 case 'p': Icon->mem2d->SetDataPktMode (SCAN_V_PERIODIC); break;
00661 }
00662
00663
00664 if(mid->options[MkIconOpt_AutoSkl] != '-'){
00665 double eps=0.1;
00666 PI_DEBUG (DBG_L2, "doing Skl ..." );
00667
00668 HlpSc = gapp->xsm->ActiveScan; gapp->xsm->ActiveScan = Icon;
00669 if(mid->options[MkIconOpt_AutoSkl] == '1') eps=0.05;
00670 if(mid->options[MkIconOpt_AutoSkl] == '2') eps=0.20;
00671 if(mid->options[MkIconOpt_AutoSkl] == '3') eps=0.30;
00672 Icon->Pkt2d[0].x = (int)(eps*(double)Icon->mem2d->GetNx());
00673 Icon->Pkt2d[0].y = (int)(eps*(double)Icon->mem2d->GetNy());
00674 Icon->Pkt2d[1].x = (int)((1.-eps)*(double)Icon->mem2d->GetNx());
00675 Icon->Pkt2d[1].y = (int)((1.-eps)*(double)Icon->mem2d->GetNy());
00676 Icon->PktVal=2;
00677 Icon->mem2d->AutoHistogrammEvalMode (&Icon->Pkt2d[0], &Icon->Pkt2d[1]);
00678
00679 Icon->PktVal=0;
00680 gapp->xsm->ActiveScan = HlpSc;
00681 PI_DEBUG (DBG_L2, "AutoSkl - Icon :" << "nx:" << Icon->data.s.nx << " GetNx:" << Icon->mem2d->GetNx() );
00682 Original->data.display.contrast = gapp->xsm->data.display.contrast;
00683 Original->data.display.bright = gapp->xsm->data.display.bright;
00684 PI_DEBUG (DBG_L2, "Contrast=" << Original->data.display.contrast);
00685 }
00686 if(mid->options[MkIconOpt_Scaling] == 'c'){
00687 PI_DEBUG (DBG_L2, "doing manual Cps hi=" << hi0 << " ... lo=" << lo0 << " Gate=" << gapp->xsm->data.display.cnttime);
00688
00689 HlpSc = gapp->xsm->ActiveScan; gapp->xsm->ActiveScan = Icon;
00690 gapp->xsm->AutoDisplay(hi0*gapp->xsm->data.display.cnttime, lo0*gapp->xsm->data.display.cnttime);
00691 gapp->xsm->ActiveScan = HlpSc;
00692
00693 }
00694
00695
00696 epsf->init();
00697
00698
00699
00700
00701 epsf->placeimage();
00702
00703 epsf->putsize(Original);
00704 epsf->putframe();
00705 epsf->putticks(Original);
00706
00707
00708
00709 PI_DEBUG (DBG_L2, "-Original:" << "nx:" << Original->data.s.nx << " GetNx:" << Original->mem2d->GetNx() );
00710 PI_DEBUG (DBG_L2, "-Icon :" << "nx:" << Icon->data.s.nx << " GetNx:" << Icon->mem2d->GetNx() );
00711
00712
00713
00714
00715 epsf->putgrey(Original, Icon->mem2d, mid->options[MkIconOpt_Scaling] == 'a', FALSE);
00716 epsf->endimage();
00717 epsf->FootLine(Original);
00718
00719
00720 delete TmpSc;
00721 }
00722 epsf->FootLine(Original, TRUE);
00723 epsf->close();
00724 delete epsf;
00725 }
00726 }
00727 }