Update of /cvsroot/easycalc/PPCport In directory sc8-pr-cvs17.sourceforge.net:/tmp/cvs-serv14792 Added Files: EasyCalc.vcproj EasyCalcppc.rc EasyCalcppc.rc2 grprefs.h Main.cpp Main.h prefs.h ReadMe.txt resourceppc.h result.cpp result.h shell_loadimage.cpp shell_loadimage.h Skin.cpp Skin.h StateManager.cpp StateManager.h stdafx.cpp stdafx.h Log Message: 1st upload, not compiling. --- NEW FILE: EasyCalcppc.rc2 --- // // EasyCalcPPC.RC2 - resources Microsoft Visual C++ does not edit directly // #ifdef APSTUDIO_INVOKED #error this file is not editable by Microsoft Visual C++ #endif //APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // Add manually edited resources here... ///////////////////////////////////////////////////////////////////////////// HI_RES_AWARE CEUX {1} // turn off the emulation layer // Remove this resource to enable pixel- // doubling on platforms that support it ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// // // SHMENUBAR // IDR_MENU SHMENUBAR DISCARDABLE BEGIN IDR_MENU, 3, I_IMAGENONE, IDM_FILE, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_FILE, 0, 0, I_IMAGENONE, IDM_EDIT, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_EDIT, 0, 1, I_IMAGENONE, IDM_HELP, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_HELP, 0, 2, END --- NEW FILE: Main.cpp --- /* * $Id: Main.cpp,v 1.1 2008/05/26 20:09:53 mapibid Exp $ * * Scientific Calculator for Palms. * Copyright (C) 1999,2000,2001 Ondrej Palkovsky * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, [...1167 lines suppressed...] if(k) goto exit; else{ FldSetSelection(field,j,j+1); calc_nil_timeout(40); BrH=1; } } else if(BrH==1) { FldSetSelection(GetObjectPtr(tdInput),start,start); exit: calc_nil_timeout(evtWaitForever); BrH=0; } handled=true; break; } return handled; } --- NEW FILE: grprefs.h --- /* * $Id: grprefs.h,v 1.1 2008/05/26 20:09:53 mapibid Exp $ * * Scientific Calculator for Palms. * Copyright (C) 1999,2000 Ondrej Palkovsky * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * * You can contact me at 'on...@pe...'. */ #ifndef _GRPREFS_H_ #define _GRPREFS_H_ #include "segment.h" #include "defuns.h" #define MAX_GRFUNCS 6 #define MIN_LOG_VAL 1E-5 typedef enum { graph_func, graph_polar, graph_param }Tfunctype; typedef struct { double xmin,ymin; double xmax,ymax; double xscale,yscale; double fimin,fimax,fistep; double tmin,tmax,tstep; Tfunctype functype; char funcFunc[MAX_GRFUNCS][MAX_FUNCNAME+1]; char funcPol[MAX_GRFUNCS][MAX_FUNCNAME+1]; char funcPar[MAX_GRFUNCS][2][MAX_FUNCNAME+1]; Boolean logx,logy; Int16 speed; IndexedColorType colors[9]; Boolean grEnable[9]; Int8 grType[6]; }TgrPrefs; /* Screen preferences in pixels */ /* Please note, the ymax is de facto smaller then ymin on the screen */ typedef struct { /* The Y screen max is the smallest value */ /*0,0 1,0 */ /*0,1 */ /*0,2[beginning of graph */ Coord xmin,ymax; Coord xmax,ymin; /* Cached coeficients for graph2screen computations */ /* CacheTrans MUST be called when any of the ScrPrefs * and graphPrefs attributes is changed */ double xtrans,ytrans; /* cached logaritms, it is quite slow to calculate */ double logxtrans,logytrans; double logxmin,logymin; }TscrPrefs; //Boolean GraphPrefsHandleEvent(EventPtr event) IFACE; void grpref_init(void) IFACE; void grpref_close(void) IFACE; extern TgrPrefs graphPrefs; extern TscrPrefs ScrPrefs; extern IndexedColorType graphColors[]; CError set_axis(Functype *func,CodeStack *stack) GRAPH; #endif --- NEW FILE: result.h --- /* * $Id: result.h,v 1.1 2008/05/26 20:09:54 mapibid Exp $ * * Scientific Calculator for Palms. * Copyright (C) 2000 Ondrej Palkovsky * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * * You can contact me at 'on...@pe...'. */ #ifndef _RESULT_H_ #define _RESULT_H_ #include "display.h" #include "skin.h" typedef enum { COPYRESULT=0, VARSAVEAS, DEFMGR, GUESSIT, TODEGREE, TORADIAN, TOGONIO, TOCIS, ENGDISPLAY, TODEGREE2 }resSelection; #define SELECTION_COUNT 9 typedef enum { plaintext, powtext, fmtnumber }printType; typedef struct { rpntype ansType; printType formatType; Tbase dispBase; }TresultPrefs; void result_copy(void) IFACE; void result_init(Int16 id) IFACE; void result_destroy(void) IFACE; void result_clear_arrowflags(void) IFACE; void result_draw(void) IFACE; Boolean result_track(Coord x,Coord y) IFACE; void result_set(Trpn item) IFACE; void result_set_text(char *text,rpntype type) IFACE; void result_set_pow(char *text) IFACE; void result_popup(void) IFACE; void result_error(CError errcode) IFACE; #endif --- NEW FILE: shell_loadimage.cpp --- /***************************************************************************** * EasyCalc -- a scientific calculator * Copyright (C) 2008 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License, version 2, * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *****************************************************************************/ /* shell_loadimage.cpp : load a GIF file. *****************************************************************************/ #include "stdafx.h" #include <ctype.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include "Skin.h" typedef struct { unsigned char *pixels; SkinColor *cmap; int depth; int width, height, bytesperline; } SkinPixmap; static SkinPixmap pixmap; static Skin *skin; static int read_byte(int *n) { int c = skin->getchar(); if (c == EOF) return (0); *n = c; return (1); } static int read_short(int *n) { int c1, c2; c1 = skin->getchar(); if (c1 == EOF) return (0); c2 = skin->getchar(); if (c2 == EOF) return (0); *n = c1 + (c2 << 8); return (1); } int shell_loadimage(Skin *pskin) { SkinPixmap *pm = &pixmap; SkinColor *lcmap = NULL; int sig; int info; int background; int zero; int has_global_cmap; int bpp; int ncolors; int size; int mono; int invert; int i, j, type, res; unsigned char *ptr; skin = pskin; if (!read_byte(&sig) || (sig != 'G') || !read_byte(&sig) || (sig != 'I') || !read_byte(&sig) || (sig != 'F') || !read_byte(&sig) || (sig != '8') || !read_byte(&sig) || ((sig != '7') && (sig != '9')) || !read_byte(&sig) || (sig != 'a') ) { fprintf(stderr, "GIF signature not found.\n"); return (0); } if (!read_short(&pm->width) || !read_short(&pm->height) || !read_byte(&info) || !read_byte(&background) || !read_byte(&zero) || (zero != 0) ) { fprintf(stderr, "Fatally premature EOF.\n"); return (0); } has_global_cmap = (info & 128) != 0; bpp = (info & 7) + 1; ncolors = 1 << bpp; size = 0; /* Bits 6..4 of info contain one less than the "color resolution", * defined as the number of significant bits per RGB component in * the source image's color palette. If the source image (from * which the GIF was generated) was 24-bit true color, the color * resolution is 8, so the value in bits 6..4 is 7. If the source * image had an EGA color cube (2x2x2), the color resolution would * be 2, etc. * Bit 3 of info must be zero in GIF87a; in GIF89a, if it is set, * it indicates that the global colormap is sorted, the most * important entries being first. In PseudoColor environments this * can be used to make sure to get the most important colors from * the X server first, to optimize the image's appearance in the * event that not all the colors from the colormap can actually be * obtained at the same time. * The 'zero' field is always 0 in GIF87a; in GIF89a, it indicates * the pixel aspect ratio, as (PAR + 15) : 64. If PAR is zero, * this means no aspect ratio information is given, PAR = 1 means * 1:4 (narrow), PAR = 49 means 1:1 (square), PAR = 255 means * slightly over 4:1 (wide), etc. */ pm->cmap = (SkinColor *) malloc(256 * sizeof(SkinColor)); // TODO - handle memory allocation failure if (has_global_cmap) { for (i=0 ; i<ncolors ; i++) { int r, g, b; if (!read_byte(&r) || !read_byte(&g) || !read_byte(&b) ) { fprintf(stderr, "Fatally premature EOF.\n"); goto failed; } pm->cmap[i].r = r; pm->cmap[i].g = g; pm->cmap[i].b = b; } } else { for (i=0 ; i<ncolors ; i++) { int k = (i * 255) / (ncolors - 1); pm->cmap[i].r = k; pm->cmap[i].g = k; pm->cmap[i].b = k; } } /* Set unused colormap entries to 'black' */ for (i=ncolors ; i<256 ; i++) { pm->cmap[i].r = 0; pm->cmap[i].g = 0; pm->cmap[i].b = 0; } if (ncolors == 2) { /* Test for true black & white */ if ((pm->cmap[0].r == 0) && (pm->cmap[0].g == 0) && (pm->cmap[0].b == 0) && (pm->cmap[1].r == 255) && (pm->cmap[1].g == 255) && (pm->cmap[1].b == 255) ) { mono = 1; invert = 0; } else if ((pm->cmap[0].r == 255) && (pm->cmap[0].g == 255) && (pm->cmap[0].b == 255) && (pm->cmap[1].r == 0) && (pm->cmap[1].g == 0) && (pm->cmap[1].b == 0) ) { mono = 1; invert = 1; } else mono = 0; } else mono = 0; if (mono) { pm->depth = 1; pm->bytesperline = ((pm->width + 31) >> 3) & ~3; } else { pm->depth = 8; pm->bytesperline = (pm->width + 3) & ~3; } size = pm->bytesperline * pm->height; pm->pixels = (unsigned char *) malloc(size); // TODO - handle memory allocation failure memset(pm->pixels, pm->depth == 1 ? background * 255 : background, size); while (1) { int whatnext; if (!read_byte(&whatnext)) goto unexp_eof; if (whatnext == ',') { /* Image */ int ileft, itop, iwidth, iheight; int info; int lbpp; int lncolors; int interlaced; int h; int v; int codesize; int bytecount; short prefix_table[4096]; short code_table[4096]; int maxcode; int clear_code; int end_code; int curr_code_size; int curr_code; int old_code; int bits_needed; int end_code_seen; if (!read_short(&ileft) || !read_short(&itop) || !read_short(&iwidth) || !read_short(&iheight) || !read_byte(&info) ) { goto unexp_eof; } if (itop + iheight > pm->height || ileft + iwidth > pm->width) { fprintf(stderr, "Image position and size not contained within screen size!\n"); goto failed; } /* Bit 3 of info must be zero in GIF87a; in GIF89a, if it * is set, it indicates that the local colormap is sorted, * the most important entries being first. In PseudoColor * environments this can be used to make sure to get the * most important colors from the X server first, to * optimize the image's appearance in the event that not * all the colors from the colormap can actually be * obtained at the same time. */ if ((info & 128) == 0) { /* Using global color map */ lcmap = pm->cmap; lbpp = bpp; lncolors = ncolors; } else { /* Using local color map */ lbpp = (info & 7) + 1; lncolors = 1 << lbpp; lcmap = (SkinColor *) malloc(256 * sizeof(SkinColor)); // TODO - handle memory allocation failure for (i=0 ; i<lncolors ; i++) { int r, g, b; if (!read_byte(&r) || !read_byte(&g) || !read_byte(&b) ) goto unexp_eof; lcmap[i].r = r; lcmap[i].g = g; lcmap[i].b = b; } if (pm->depth != 24) { int newbytesperline = pm->width * 4; int v, h; unsigned char *newpixels = (unsigned char *) malloc(newbytesperline * pm->height); // TODO - handle memory allocation failure for (v=0 ; v<pm->height ; v++) for (h=0 ; h<pm->width ; h++) { unsigned char pixel, *newpixel; if (pm->depth == 1) pixel = (pm->pixels[pm->bytesperline * v + (h >> 3)] >> (h & 7)) & 1; else pixel = pm->pixels[pm->bytesperline * v + h]; newpixel = newpixels + (newbytesperline * v + 4 * h); newpixel[0] = 0; newpixel[1] = pm->cmap[pixel].r; newpixel[2] = pm->cmap[pixel].g; newpixel[3] = pm->cmap[pixel].b; } free(pm->pixels); pm->pixels = newpixels; pm->bytesperline = newbytesperline; pm->depth = 24; } } interlaced = (info & 64) != 0; h = 0; v = 0; if (!read_byte(&codesize) || !read_byte(&bytecount)) goto unexp_eof; maxcode = 1 << codesize; for (i=0 ; i<maxcode+2 ; i++) { prefix_table[i] = -1; code_table[i] = i; } clear_code = maxcode++; end_code = maxcode++; curr_code_size = codesize + 1; curr_code = 0; old_code = -1; bits_needed = curr_code_size; end_code_seen = 0; while (bytecount != 0) { for (i=0 ; i<bytecount ; i++) { int currbyte; int bits_available; if (!read_byte(&currbyte)) goto unexp_eof; if (end_code_seen) continue; bits_available = 8; while (bits_available != 0) { int bits_copied = (bits_needed < bits_available) ? bits_needed : bits_available; int bits = currbyte >> (8 - bits_available); bits &= 255 >> (8 - bits_copied); curr_code |= bits << (curr_code_size - bits_needed); bits_available -= bits_copied; bits_needed -= bits_copied; if (bits_needed == 0) { if (curr_code == end_code) { end_code_seen = 1; } else if (curr_code == clear_code) { maxcode = (1 << codesize) + 2; curr_code_size = codesize + 1; old_code = -1; } else { unsigned char expanded[4096]; int explen; if (curr_code < maxcode) { if (maxcode < 4096 && old_code != -1) { int c = curr_code; while (prefix_table[c] != -1) c = prefix_table[c]; c = code_table[c]; prefix_table[maxcode] = old_code; code_table[maxcode] = c; maxcode++; if ((maxcode == (1 << curr_code_size)) && (curr_code_size < 12)) curr_code_size++; } } else if (curr_code == maxcode) { /* Once maxcode == 4096, we can't get here * any more, because we refuse to raise * curr_code_size above 12 -- so we can * never read a bigger code than 4095. */ int c; if (old_code == -1) { fprintf(stderr, "Out-of-sequence code in compressed data.\n"); goto done; } c = old_code; while (prefix_table[c] != -1) c = prefix_table[c]; c = code_table[c]; prefix_table[maxcode] = old_code; code_table[maxcode] = c; maxcode++; if ((maxcode == (1 << curr_code_size)) && (curr_code_size < 12)) curr_code_size++; } else { fprintf(stderr, "Out-of-sequence code in compressed data.\n"); goto done; } old_code = curr_code; /* Output curr_code! */ explen = 0; while (curr_code != -1) { expanded[explen++] = (unsigned char) code_table[curr_code]; curr_code = prefix_table[curr_code]; } for (j=explen-1 ; j>=0 ; j--) { int pixel = expanded[j]; if (pm->depth == 8) pm->pixels[pm->bytesperline * (itop + v) + ileft + h] = pixel; else if (pm->depth == 24) { unsigned char *rgb = pm->pixels + (pm->bytesperline * (itop + v) + 4 * (ileft + h)); rgb[0] = 0; rgb[1] = lcmap[pixel].r; rgb[2] = lcmap[pixel].g; rgb[3] = lcmap[pixel].b; } else { /* VERY inefficient. 16 memory accesses * to write one byte. Then again, 1-bit * images never consume very many bytes * and I'm in a hurry. Maybe TODO. */ int x = ileft + h; int index = pm->bytesperline * (itop + v) + (x >> 3); unsigned char mask = 1 << (x & 7); if (pixel) pm->pixels[index] |= mask; else pm->pixels[index] &= ~mask; } if (++h == iwidth) { h = 0; if (interlaced) { switch (v & 7) { case 0: v += 8; if (v < iheight) break; /* Some GIF en/decoders go * straight from the '0' * pass to the '4' pass * without checking the * height, and blow up on * 2/3/4 pixel high * interlaced images. */ if (iheight > 4) v = 4; else if (iheight > 2) v = 2; else if (iheight > 1) v = 1; else end_code_seen = 1; break; case 4: v += 8; if (v >= iheight) v = 2; break; case 2: case 6: v += 4; if (v >= iheight) v = 1; break; case 1: case 3: case 5: case 7: v += 2; if (v >= iheight) end_code_seen = 1; break; } if (end_code_seen) break; } else { if (++v == iheight) { end_code_seen = 1; break; } } } } } curr_code = 0; bits_needed = curr_code_size; } } } if (!read_byte(&bytecount)) goto unexp_eof; } if (lcmap != pm->cmap) free(lcmap); lcmap = NULL; } else if (whatnext == '!') { /* Extension block */ int function_code, byte_count; if (!read_byte(&function_code)) goto unexp_eof; if (!read_byte(&byte_count)) goto unexp_eof; while (byte_count != 0) { for (i=0 ; i<byte_count ; i++) { int dummy; if (!read_byte(&dummy)) goto unexp_eof; } if (!read_byte(&byte_count)) goto unexp_eof; } } else if (whatnext == ';') { /* Terminator */ break; } else { fprintf(stderr, "Unrecognized tag '%c' (0x%02x).\n", whatnext, whatnext); goto failed; } } done: if (lcmap != NULL && lcmap != pm->cmap) free(lcmap); if (pm->depth == 24) { free(pm->cmap); pm->cmap = NULL; } if (pm->depth == 1) { free(pm->cmap); pm->cmap = NULL; if (invert) for (i=0 ; i<size ; i++) pm->pixels[i] = ~pm->pixels[i]; } /* Successfully read the image. Now, write it out: */ if (pm->depth == 1) type = IMGTYPE_MONO; else if (pm->depth == 8) type = IMGTYPE_COLORMAPPED; else /* pm->depth == 24 */ type = IMGTYPE_TRUECOLOR; res = skin->init_image(type, 256, pm->cmap, pm->width, pm->height); if (res) { ptr = pm->pixels; for (i=0 ; i<pm->height ; i++) { skin->put_pixels(ptr); ptr += pm->bytesperline; } skin->finish_image(); } /* Done writing; delete the image and return. */ if (pm->cmap != NULL) free(pm->cmap); free(pm->pixels); return (res); unexp_eof: fprintf(stderr, "Unexpected EOF.\n"); goto done; failed: if (lcmap != NULL && lcmap != pm->cmap) free(lcmap); if (pm->cmap != NULL) { free(pm->cmap); pm->cmap = NULL; } if (pm->pixels != NULL) { free(pm->pixels); pm->pixels = NULL; } return (0); } --- NEW FILE: Skin.h --- /***************************************************************************** * EasyCalc -- a scientific calculator * Copyright (C) 2008 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License, version 2, * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *****************************************************************************/ /* skin.h : Skin object for handling the skins of the calculator. *****************************************************************************/ #ifndef SKIN_H #define SKIN_H 1 #include <windows.h> #include "core_globals.h" typedef struct { int x, y; } SkinPoint; typedef struct { int x, y, width, height; } SkinRect; typedef struct { int code, shifted_code; SkinRect sens_rect; SkinRect disp_rect; SkinPoint src; } SkinKey; typedef struct { unsigned char r, g, b, pad; } SkinColor; #define IMGTYPE_MONO 1 #define IMGTYPE_GRAY 2 #define IMGTYPE_COLORMAPPED 3 #define IMGTYPE_TRUECOLOR 4 #define KEYMAP_MAX_MACRO_LENGTH 31 typedef struct { bool ctrl; bool alt; bool shift; bool cshift; int keycode; unsigned char macro[KEYMAP_MAX_MACRO_LENGTH + 1]; } keymap_entry; #define SKIN_MAX_MACRO_LENGTH 31 typedef struct _SkinMacro { int code; unsigned char macro[SKIN_MAX_MACRO_LENGTH + 1]; struct _SkinMacro *next; } SkinMacro; typedef struct { SkinRect disp_rect; SkinPoint src; SkinPoint sel; } SkinAnnunciator; #define RESULTAREA_SIZE 128 #define INPUTAREA_SIZE 2048 class Skin { protected: SkinRect skin; // Description of the skin on screen // Used while loading a skin; specifies how much to enlarge it. // This is necessary to force low-res skins to fill high-res screens. int magnification; SkinPoint display_loc; // Description of the display in the skin int display_w, display_h; SkinPoint display_scale; COLORREF display_bg, display_fg; SkinKey *keylist; // Array of keys in the skin int nkeys; // Number of keys in the skin int keys_cap; // Number of allocated keys from memory SkinMacro *macrolist; // Array of macros specified in the layout file SkinAnnunciator annunciators[NB_ANNUN]; // Array of annunciators FILE *external_file; // Handle for external file, if not an internal file // NULL if internal file. const unsigned char *builtin_file; // Handle for the internal file long builtin_length; // Length of internal file long builtin_pos; // Cur pos in the internal file int skin_type; int skin_width, skin_height; int skin_ncolors; const SkinColor *skin_colors; int skin_y; unsigned char *skin_bitmap; // Contains the bitmap of the skin int skin_bytesperline; BITMAPINFOHEADER *skin_header; HBITMAP skin_dib; unsigned char *disp_bitmap; int disp_bytesperline; TCHAR dispResult[RESULTAREA_SIZE]; // Contains the result area string TCHAR inputText[INPUTAREA_SIZE]; // Used to get the input area string HWND hwndE; // The handle to the edit control input area bool landscape; keymap_entry *keymap; int keymap_length; bool display_enabled; // Enable or disable screen repaints. keymap_entry *parse_keymap_entry(char *line, int lineno); int open(const TCHAR *skinname, const TCHAR *basedir, int open_layout); void close(); int gets(char *buf, int buflen); int make_dib(HDC hdc); public: Skin(); // Constructor void load(TCHAR *skinname, const TCHAR *basedir, int width, int height); int getchar(); void rewind(); int init_image(int type, int ncolors, const SkinColor *colors, int width, int height); void put_pixels(unsigned const char *data); void finish_image(); void repaint(HDC hdc, HDC memdc); void repaint_annunciator(HDC hdc, HDC memdc, int which, int state); void find_key(int x, int y, bool cshift, int *skey, int *ckey); int find_skey(int ckey); unsigned char *find_macro(int ckey); unsigned char *keymap_lookup(int keycode, bool ctrl, bool alt, bool shift, bool cshift, bool *exact); void repaint_key(HDC hdc, HDC memdc, int key, int state); void display_blitter(HDC hdc, const char *bits, int bytesperline, int x, int y, int width, int height); void repaint_display(HDC hdc, HDC memdc); COLORREF getDisplayFgColor(); COLORREF getDisplayBgColor(); void create_input_area(HWND hwnd, HINSTANCE hinst); void insert_input_text(TCHAR *text); void set_input_text(TCHAR *text); TCHAR *get_input_text(); void print_result(HDC hdc, TCHAR *res_text); void print_result(HDC hdc); void display_set_enabled(bool enable); }; #endif --- NEW FILE: StateManager.cpp --- #include "StdAfx.h" #include "StateManager.h" StateManager::StateManager(void) { // Set interface and calculator options to their defaults stateFile = NULL; state.skinName[0][0] = 0; state.skinName[1][0] = 0; state.skinName[2][0] = 0; state.cur_skin_nb = 0; state.mouse_cont = true; historyDB.in_state = false; } StateManager::~StateManager(void) { } t_state *StateManager::init(TCHAR *fn) { stateFilename = fn; stateFile = _tfopen(fn, _T("rb")); if (stateFile != NULL) { if (read_shell_state(&version)) init_mode = 1; else { // Incorrect version/contents, create the state contents init_shell_state(-1); init_mode = 2; } } else { // No state file, create the state contents init_shell_state(-1); init_mode = 0; } // Close the file if was open if (stateFile != NULL) { fclose(stateFile); stateFile = NULL; } return (&state); } /******************************************************************************** * FUNCTION: init_shell_state(int4) * * Initialize the state module structure * ********************************************************************************/ /* private */ void StateManager::init_shell_state(int4 version) { switch (version) { case -1: // Set interface and calculator options to their defaults // fall through case 0: // current version, // so nothing to do here since everything // was initialized from the state file. ; } } /******************************************************************************** * FUNCTION: shell_read_saved_state(*void, int4) * * Read a piece from the state file. * * Returns the number of read bytes. * ********************************************************************************/ /* private */ int4 StateManager::shell_read_saved_state(void *buf, int4 bufsize) { if (stateFile == NULL) return (-1); else { int4 n = fread(buf, 1, bufsize, stateFile); if (n != bufsize && ferror(stateFile)) { // On error, close the file fclose(stateFile); stateFile = NULL; return (-1); } else return (n); } } /******************************************************************************** * FUNCTION: shell_write_saved_state(*void, int4) * * Write a piece to the state file. * ********************************************************************************/ /* private */ bool StateManager::shell_write_saved_state(const void *buf, int4 nbytes) { if (stateFile == NULL) return (false); else { int4 n = fwrite(buf, 1, nbytes, stateFile); if (n != nbytes) { // On error, close the file, and remove whatever we have written so far. fclose(stateFile); DeleteFile(stateFilename); stateFile = NULL; return (false); } else { return (true); } } } /******************************************************************************** * FUNCTION: read_shell_state(*int4) * * Read the state module structure from file * ********************************************************************************/ /* private */ bool StateManager::read_shell_state(int4 *ver) { int4 magic; int4 version; int4 state_size; int4 state_version; if (shell_read_saved_state(&magic, sizeof(int4)) != sizeof(int4)) return (false); if (magic != EASYCALC_MAGIC) return (false); if (shell_read_saved_state(&version, sizeof(int4)) != sizeof(int4)) return (false); if (version < 0 || version > EASYCALC_VERSION) /* Unknown state file version */ return (false); if (version > 0) { if (shell_read_saved_state(&state_size, sizeof(int4)) != sizeof(int4)) return (false); if (shell_read_saved_state(&state_version, sizeof(int4)) != sizeof(int4)) return (false); if ((state_version < 0) || (state_version > SHELL_VERSION)) /* Unknown shell state version */ return (false); if (shell_read_saved_state(&state, state_size) != state_size) return (false); // Initialize the parts of the shell state // that were NOT read from the state file init_shell_state(state_version); } else { // Version 0 init_shell_state(-1); } *ver = version; return (true); } /******************************************************************************** * FUNCTION: write_shell_state() * * Saves the state module structure to file for the next run. * ********************************************************************************/ /* private */ bool StateManager::write_shell_state() { int4 magic = EASYCALC_MAGIC; int4 version = EASYCALC_VERSION; int4 state_size = sizeof(t_state); int4 state_version = SHELL_VERSION; if (!shell_write_saved_state(&magic, sizeof(int4))) return (false); if (!shell_write_saved_state(&version, sizeof(int4))) return (false); if (!shell_write_saved_state(&state_size, sizeof(int4))) return (false); if (!shell_write_saved_state(&state_version, sizeof(int4))) return (false); if (!shell_write_saved_state(&state, sizeof(t_state))) return (false); return (true); } --- NEW FILE: EasyCalc.vcproj --- <?xml version="1.0" encoding="Windows-1252"?> <VisualStudioProject ProjectType="Visual C++" Version="9,00" Name="EasyCalc" ProjectGUID="{7CA1BE77-23EF-4061-B55D-227874102059}" RootNamespace="EasyCalc" Keyword="Win32Proj" TargetFrameworkVersion="131072" > <Platforms> <Platform Name="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" /> <Platform Name="Windows Mobile 6 Professional SDK (ARMV4I)" /> </Platforms> <ToolFiles> </ToolFiles> <Configurations> <Configuration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" OutputDirectory="$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" CharacterSet="1" > <Tool Name="VCPreBuildEventTool" /> <Tool Name="VCCustomBuildTool" /> <Tool Name="VCXMLDataGeneratorTool" /> <Tool Name="VCWebServiceProxyGeneratorTool" /> <Tool Name="VCMIDLTool" /> <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="E:\AppsDev\EasyCalc\EasyCalc;E:\AppsDev\EasyCalc\EasyCalc\include" PreprocessorDefinitions="_DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;DEBUG;_WINDOWS;$(ARCHFAM);$(_ARCHFAM_);_UNICODE;UNICODE;POCKETPC2003_UI_MODEL;SPECFUN_ENABLED;GRAPHS_ENABLED" MinimalRebuild="true" RuntimeLibrary="1" UsePrecompiledHeader="2" WarningLevel="3" DebugInformationFormat="3" ShowIncludes="true" /> <Tool Name="VCManagedResourceCompilerTool" /> <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES)" Culture="1033" AdditionalIncludeDirectories=""$(IntDir)"" /> <Tool Name="VCPreLinkEventTool" /> <Tool Name="VCLinkerTool" AdditionalOptions=" /subsystem:windowsce,5.01" OutputFile="$(OutDir)/EasyCalc.exe" LinkIncremental="2" DelayLoadDLLs="$(NOINHERIT)" GenerateDebugInformation="true" ProgramDatabaseFile="$(OutDir)/EasyCalc.pdb" SubSystem="0" StackReserveSize="65536" StackCommitSize="4096" RandomizedBaseAddress="1" DataExecutionPrevention="0" /> <Tool Name="VCALinkTool" /> <Tool Name="VCXDCMakeTool" /> <Tool Name="VCBscMakeTool" /> <Tool Name="VCFxCopTool" /> <Tool Name="VCCodeSignTool" /> <Tool Name="VCPostBuildEventTool" /> <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> <DebuggerTool /> </Configuration> <Configuration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" CharacterSet="1" > <Tool Name="VCPreBuildEventTool" /> <Tool Name="VCCustomBuildTool" /> <Tool Name="VCXMLDataGeneratorTool" /> <Tool Name="VCWebServiceProxyGeneratorTool" /> <Tool Name="VCMIDLTool" /> <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" PreprocessorDefinitions="_DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;DEBUG;_WINDOWS;$(ARCHFAM);$(_ARCHFAM_);_UNICODE;UNICODE;POCKETPC2003_UI_MODEL" MinimalRebuild="true" RuntimeLibrary="1" UsePrecompiledHeader="2" WarningLevel="3" DebugInformationFormat="3" /> <Tool Name="VCManagedResourceCompilerTool" /> <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES)" Culture="1033" AdditionalIncludeDirectories="$(IntDir)" /> <Tool Name="VCPreLinkEventTool" /> <Tool Name="VCLinkerTool" AdditionalOptions=" /subsystem:windowsce,5.02" OutputFile="$(OutDir)/EasyCalc.exe" LinkIncremental="2" DelayLoadDLLs="$(NOINHERIT)" GenerateDebugInformation="true" ProgramDatabaseFile="$(OutDir)/EasyCalc.pdb" SubSystem="0" StackReserveSize="65536" StackCommitSize="4096" RandomizedBaseAddress="1" DataExecutionPrevention="0" /> <Tool Name="VCALinkTool" /> <Tool Name="VCXDCMakeTool" /> <Tool Name="VCBscMakeTool" /> <Tool Name="VCFxCopTool" /> <Tool Name="VCCodeSignTool" /> <Tool Name="VCPostBuildEventTool" /> <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> <DebuggerTool /> </Configuration> <Configuration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" OutputDirectory="$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" CharacterSet="1" > <Tool Name="VCPreBuildEventTool" /> <Tool Name="VCCustomBuildTool" /> <Tool Name="VCXMLDataGeneratorTool" /> <Tool Name="VCWebServiceProxyGeneratorTool" /> <Tool Name="VCMIDLTool" /> <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" FavorSizeOrSpeed="2" PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;_WINDOWS;$(ARCHFAM);$(_ARCHFAM_);_UNICODE;UNICODE;POCKETPC2003_UI_MODEL" RuntimeLibrary="0" UsePrecompiledHeader="2" WarningLevel="3" DebugInformationFormat="3" /> <Tool Name="VCManagedResourceCompilerTool" /> <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES)" Culture="1033" AdditionalIncludeDirectories="$(IntDir)" /> <Tool Name="VCPreLinkEventTool" /> <Tool Name="VCLinkerTool" AdditionalOptions=" /subsystem:windowsce,5.01" OutputFile="$(OutDir)/EasyCalc.exe" LinkIncremental="1" DelayLoadDLLs="$(NOINHERIT)" GenerateDebugInformation="true" ProgramDatabaseFile="$(OutDir)/EasyCalc.pdb" SubSystem="0" StackReserveSize="65536" StackCommitSize="4096" OptimizeReferences="2" EnableCOMDATFolding="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" /> <Tool Name="VCALinkTool" /> <Tool Name="VCXDCMakeTool" /> <Tool Name="VCBscMakeTool" /> <Tool Name="VCFxCopTool" /> <Tool Name="VCCodeSignTool" /> <Tool Name="VCPostBuildEventTool" /> <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> <DebuggerTool /> </Configuration> <Configuration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" CharacterSet="1" > <Tool Name="VCPreBuildEventTool" /> <Tool Name="VCCustomBuildTool" /> <Tool Name="VCXMLDataGeneratorTool" /> <Tool Name="VCWebServiceProxyGeneratorTool" /> <Tool Name="VCMIDLTool" /> <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" FavorSizeOrSpeed="2" PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;_WINDOWS;$(ARCHFAM);$(_ARCHFAM_);_UNICODE;UNICODE;POCKETPC2003_UI_MODEL" RuntimeLibrary="0" UsePrecompiledHeader="2" WarningLevel="3" DebugInformationFormat="3" /> <Tool Name="VCManagedResourceCompilerTool" /> <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES)" Culture="1033" AdditionalIncludeDirectories="$(IntDir)" /> <Tool Name="VCPreLinkEventTool" /> <Tool Name="VCLinkerTool" AdditionalOptions=" /subsystem:windowsce,5.02" OutputFile="$(OutDir)/EasyCalc.exe" LinkIncremental="1" DelayLoadDLLs="$(NOINHERIT)" GenerateDebugInformation="true" ProgramDatabaseFile="$(OutDir)/EasyCalc.pdb" SubSystem="0" StackReserveSize="65536" StackCommitSize="4096" OptimizeReferences="2" EnableCOMDATFolding="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" /> <Tool Name="VCALinkTool" /> <Tool Name="VCXDCMakeTool" /> <Tool Name="VCBscMakeTool" /> <Tool Name="VCFxCopTool" /> <Tool Name="VCCodeSignTool" /> <Tool Name="VCPostBuildEventTool" /> <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> <DebuggerTool /> </Configuration> </Configurations> <References> </References> <Files> <Filter Name="Source Files" Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" > <File RelativePath=".\core_display.cpp" > </File> <File RelativePath=".\core_globals.cpp" > </File> <File RelativePath=".\core_main.cpp" > </File> <File RelativePath=".\DataManager.cpp" > </File> <File RelativePath=".\dbutil.cpp" > </File> <File RelativePath=".\EasyCalc.cpp" > </File> <File RelativePath=".\Main.cpp" > </File> <File RelativePath=".\result.cpp" > </File> <File RelativePath=".\shell_loadimage.cpp" > </File> <File RelativePath=".\Skin.cpp" > </File> <File RelativePath=".\StateManager.cpp" > </File> <File RelativePath=".\stdafx.cpp" > <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" UsePrecompiledHeader="1" /> </FileConfiguration> <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" UsePrecompiledHeader="1" /> </FileConfiguration> <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" UsePrecompiledHeader="1" /> </FileConfiguration> <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" UsePrecompiledHeader="1" /> </FileConfiguration> </File> <Filter Name="mlib" > <File RelativePath=".\mlib\history.cpp" > </File> <File RelativePath=".\mlib\konvert.cpp" > </File> <File RelativePath=".\mlib\stack.cpp" > </File> </Filter> </Filter> <Filter Name="Header Files" Filter="h;hpp;hxx;hm;inl;inc;xsd" UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" > <File RelativePath=".\ansops.h" > </File> <File RelativePath=".\chkstack.h" > </File> <File RelativePath=".\core_display.h" > </File> <File RelativePath=".\core_globals.h" > </File> <File RelativePath=".\core_main.h" > </File> <File RelativePath=".\core_tables.h" > </File> <File RelativePath=".\EasyCalc.h" > </File> <File RelativePath=".\grprefs.h" > </File> <File RelativePath=".\Main.h" > </File> <File RelativePath=".\prefs.h" > </File> <File RelativePath=".\resourceppc.h" > </File> <File RelativePath=".\result.h" > </File> <File RelativePath=".\shell_loadimage.h" > </File> <File RelativePath=".\Skin.h" > </File> <File RelativePath=".\StateManager.h" > </File> <File RelativePath=".\stdafx.h" > </File> <File RelativePath=".\varmgr.h" > </File> <Filter Name="include" > <File RelativePath=".\include\calcDB.h" > </File> <File RelativePath=".\include\cmatrix.h" > </File> <File RelativePath=".\include\complex.h" > </File> <File RelativePath=".\DataManager.h" > </File> <File RelativePath=".\include\dbutil.h" > </File> <File RelativePath=".\include\defuns.h" > </File> <File RelativePath=".\include\display.h" > </File> <File RelativePath=".\include\fp.h" > </File> <File RelativePath=".\include\funcs.h" > </File> <File RelativePath=".\include\history.h" > </File> <File RelativePath=".\include\integ.h" > </File> <File RelativePath=".\include\konvert.h" > </File> <File RelativePath=".\include\mathem.h" > </File> <File RelativePath=".\include\MathLib.h" > </File> <File RelativePath=".\include\matrix.h" > </File> <File RelativePath=".\include\meqstack.h" > </File> <File RelativePath=".\include\PalmOS.h" > </File> <File RelativePath=".\include\segment.h" > </File> <File RelativePath=".\include\slist.h" > </File> <File RelativePath=".\include\specfun.h" > </File> <File RelativePath=".\include\stack.h" > </File> <File RelativePath=".\include\txtask.h" > </File> </Filter> </Filter> <Filter Name="Resource Files" Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" > <File RelativePath=".\EasyCalc.ico" > </File> <File RelativePath=".\EasyCalcppc.rc" > </File> <File RelativePath=".\EasyCalcppc.rc2" > </File> </Filter> <File RelativePath=".\ReadMe.txt" > </File> </Files> <Globals> </Globals> </VisualStudioProject> --- NEW FILE: EasyCalcppc.rc --- // Microsoft Visual C++ generated resource script. // #include "resourceppc.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #define APSTUDIO_HIDDEN_SYMBOLS #include "windows.h" #include "resdefce.h" #undef APSTUDIO_HIDDEN_SYMBOLS ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // English (U.S.) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #pragma code_page(1252) #endif //_WIN32 ///////////////////////////////////////////////////////////////////////////// // // Icon // // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. IDI_EASYCALC ICON "EasyCalc.ico" ///////////////////////////////////////////////////////////////////////////// // // Menu // IDR_MENU MENU BEGIN POPUP "File" BEGIN MENUITEM "Exit", IDM_FILE_EXIT END POPUP "Edit" BEGIN MENUITEM "Options", IDM_EDIT_OPTIONS END POPUP "Help" BEGIN MENUITEM "About EasyCalc...", IDM_HELP_ABOUT END END ///////////////////////////////////////////////////////////////////////////// // // Accelerator // IDC_EASYCALC ACCELERATORS BEGIN "Q", IDM_FILE_EXIT, VIRTKEY, CONTROL, NOINVERT "A", IDM_HELP_ABOUT, VIRTKEY, CONTROL, NOINVERT END ///////////////////////////////////////////////////////////////////////////// // // Dialog // IDD_ABOUTBOX DIALOG 8, 18, 120, 101 STYLE DS_SETFONT | WS_POPUP | WS_CAPTION EXSTYLE 0x80000000L CAPTION "About EasyCalc" FONT 8, "MS Sans Serif" BEGIN ICON IDI_EASYCALC,IDC_STATIC_1,12,12,21,20,SS_REALSIZEIMAGE LTEXT "EasyCalc Version 1.25",IDC_STATIC_2,12,36,78,8,SS_NOPREFIX LTEXT "Copyright (C) 2008",IDC_STATIC_3,12,48,66,8 END IDD_ABOUTBOX_WIDE DIALOG 18, 8, 138, 84 STYLE DS_SETFONT | WS_POPUP | WS_CAPTION EXSTYLE 0x80000000L CAPTION "About EasyCalc" FONT 8, "MS Sans Serif" BEGIN ICON IDI_EASYCALC,IDC_STATIC_1,9,12,21,20,SS_REALSIZEIMAGE LTEXT "EasyCalc Version 1.25",IDC_STATIC_2,49,12,76,8,SS_NOPREFIX LTEXT "Copyright (C) 2008",IDC_STATIC_3,49,24,66,8 END ///////////////////////////////////////////////////////////////////////////// // // DESIGNINFO // #ifdef APSTUDIO_INVOKED GUIDELINES DESIGNINFO BEGIN IDD_ABOUTBOX, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 112 TOPMARGIN, 4 BOTTOMMARGIN, 95 END IDD_ABOUTBOX_WIDE, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 131 TOPMARGIN, 7 BOTTOMMARGIN, 77 END END #endif // APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE BEGIN "resourceppc.h\0" END 2 TEXTINCLUDE BEGIN "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" "#include ""windows.h""\r\n" "#include ""resdefce.h""\r\n" "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" "\0" END 3 TEXTINCLUDE BEGIN "\r\n" "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" "LANGUAGE 9, 1\r\n" "#pragma code_page(1252)\r\n" "#include ""EasyCalcppc.rc2"" // non-Microsoft Visual C++ edited resources\r\n" "#endif\r\n" "\0" END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // String Table // STRINGTABLE BEGIN IDS_APP_TITLE "EasyCalc" IDC_EASYCALC "EASYCALC" END STRINGTABLE BEGIN IDS_FILE "File" IDS_HELP "Help" IDS_EDIT "Edit" END #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// // French (France) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA) #ifdef _WIN32 LANGUAGE LANG_FRENCH, SUBLANG_FRENCH #pragma code_page(1252) #endif //_WIN32 ///////////////////////////////////////////////////////////////////////////// // // Dialog // IDD_OPT_GENERAL DIALOG 0, 0, 139, 181 STYLE DS_SETFONT | WS_POPUP | WS_CAPTION CAPTION "General" FONT 8, "System" BEGIN LTEXT "General",IDC_TITLE,4,3,63,8 CONTROL "Dynamic mouse",IDC_CHECK_MOUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,42,83,10 END IDD_OPT_SKINS DIALOG 0, 0, 139, 181 STYLE DS_SETFONT | WS_POPUP | WS_CAPTION CAPTION "Skins" FONT 8, "System" BEGIN LTEXT "Skins",IDC_TITLE,4,3,63,8 COMBOBOX IDC_COMBO_SKIN1,9,40,48,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_COMBO_SKIN2,9,59,48,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_COMBO_SKIN3,9,78,48,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP LTEXT "Skin 1",IDC_SKIN1,62,42,39,10 LTEXT "Skin 2",IDC_SKIN2,62,61,39,10 LTEXT "Skin 3",IDC_SKIN3,62,80,39,10 END #endif // French (France) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) LANGUAGE 9, 1 #pragma code_page(1252) #include "EasyCalcppc.rc2" // non-Microsoft Visual C++ edited resources #endif ///////////////////////... [truncated message content] |