Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

classimg.cc

Go to the documentation of this file.
00001 /*
00002  *      HT Editor
00003  *      classimg.cc
00004  *
00005  *      Copyright (C) 2002 Stefan Weyergraf (stefan@weyergraf.de)
00006  *
00007  *      This program is free software; you can redistribute it and/or modify
00008  *      it under the terms of the GNU General Public License version 2 as
00009  *      published by the Free Software Foundation.
00010  *
00011  *      This program is distributed in the hope that it will be useful,
00012  *      but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014  *      GNU General Public License for more details.
00015  *
00016  *      You should have received a copy of the GNU General Public License
00017  *      along with this program; if not, write to the Free Software
00018  *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00019  */
00020 
00021 #include "class.h"
00022 #include "class_analy.h"
00023 #include "classimg.h"
00024 #include "formats.h"
00025 #include "htanaly.h"
00026 #include "htpal.h"
00027 #include "log.h"
00028 #include "snprintf.h"
00029 
00030 ht_view *htclassimage_init(bounds *b, ht_streamfile *file, ht_format_group *group)
00031 {
00032         ht_class_shared_data *class_shared=(ht_class_shared_data *)group->get_shared_data();
00033 
00034         LOG("%s: JAVA: loading image (starting analyser)...", file->get_filename());
00035         ClassAnalyser *a = new ClassAnalyser();
00036         a->init(class_shared, file);
00037 
00038         bounds c = *b;
00039         ht_group *g = new ht_group();
00040         g->init(&c, VO_RESIZE, DESC_JAVA_IMAGE"-g");
00041         AnalyInfoline *head;
00042 
00043         c.y+=2;
00044         c.h-=2;
00045         ht_class_aviewer *v = new ht_class_aviewer();
00046         v->init(&c, DESC_JAVA_IMAGE, VC_EDIT | VC_GOTO | VC_SEARCH, file, group, a, class_shared);
00047 
00048         c.y-=2;
00049         c.h=2;
00050         head=new AnalyInfoline();
00051         head->init(&c, v, ANALY_STATUS_DEFAULT);
00052 
00053         v->attachInfoline(head);
00054 
00055         ht_analy_sub *analy=new ht_analy_sub();
00056         Address *low = a->createAddress32(0);
00057 
00058         Address *high = (Address*)class_shared->valid->findPrev(NULL);
00059         if (!high) {
00060                 high = a->createAddress32(0);
00061         } else {
00062                 high = (Address *)high->duplicate();
00063                 high->add(-1);
00064         }
00065         analy->init(file, v, a, low, high);
00066         delete low;
00067         delete high;
00068         v->analy_sub = analy;
00069         v->insertsub(analy);
00070 
00071         v->sendmsg(msg_complete_init, 0);
00072         
00073         viewer_pos entrypoint;
00074         if (v->string_to_pos("entrypoint", &entrypoint)) {
00075                 v->goto_pos(entrypoint, false);
00076         }
00077 
00078         g->insert(head);
00079         g->insert(v);
00080 
00081         g->setpalette(palkey_generic_window_default);
00082 
00083 //      class_shared->v_image = v;
00084         return g;
00085 }
00086 
00087 format_viewer_if htclassimage_if = {
00088         htclassimage_init,
00089         0
00090 };
00091 
00092 /*
00093  *      CLASS ht_class_aviewer
00094  */
00095 void ht_class_aviewer::init(bounds *b, char *desc, int caps, ht_streamfile *File, ht_format_group *format_group, Analyser *Analy, ht_class_shared_data *Class_shared)
00096 {
00097         ht_aviewer::init(b, desc, caps, File, format_group, Analy);
00098         class_shared = Class_shared;
00099         file = File;
00100 }
00101 
00102 void ht_class_aviewer::setAnalyser(Analyser *a)
00103 {
00104         ((ClassAnalyser *)a)->class_shared = class_shared;
00105         ((ClassAnalyser *)a)->file = file;
00106         analy = a;
00107         analy_sub->setAnalyser(a);
00108 }
00109 
00110 #if 0
00111 static ht_view *
00112 class_image(bounds *b, ht_streamfile *file, ht_format_group *group)
00113 {
00114   classfile *clazz;
00115 
00116   clazz = ((ht_class_shared_data *)group->get_shared_data())->file;
00117   if (clazz) {
00118 
00119     ht_uformat_viewer *v = new ht_uformat_viewer();
00120     v->init(b, DESC_JAVA_IMAGE, VC_EDIT, file, group);
00121     /* need to insert more code here */
00122     return v;
00123   } else {
00124     return NULL;
00125   }
00126 }
00127 #endif
00128 

Generated on Fri May 7 21:15:29 2004 by doxygen 1.3.5