Added XBM, XPM, and PNM image file classes.

The pixmap_browser demo now supports all image formats via Fl_Shared_Image.

Dropped image file stuff from image demo.

Added Fl_Tiled_Image class, which tiles an Fl_Image, useful for tiling a
background image in groups.

Added tiled_image demo.


git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@1725 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Michael R Sweet 2001-11-24 18:07:58 +00:00
parent e016a249b2
commit b650366d80
18 changed files with 986 additions and 150 deletions

View File

@ -5,9 +5,10 @@ CHANGES IN FLTK 1.1.0b6
environment.
- Added new fl_beep() function to do audible
notifications of various types.
- Added new Fl_GIF_Image, Fl_PNG_Image, and
Fl_JPEG_Image classes.
- Added new Fl_GIF_Image, Fl_JPEG_Image, Fl_PNG_Image,
Fl_PNM_Image, Fl_XBM_Image, and Fl_XPM_Image classes.
- Added new Fl_Shared_Image class, a la FLTK 2.0.
- Added new Fl_Tiled_Image class for tiled backgrounds.
- Added new copy(), desaturate(), inactive(), and
color_average() methods to the Fl_Image classes.
- Added a horizontal scrollbar to the Fl_Help_View

41
FL/Fl_PNM_Image.H Normal file
View File

@ -0,0 +1,41 @@
//
// "$Id: Fl_PNM_Image.H,v 1.1.2.1 2001/11/24 18:07:57 easysw Exp $"
//
// PNM image header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2001 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library 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
// Library General Public License for more details.
//
// You should have received a copy of the GNU Library General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA.
//
// Please report all bugs and problems to "fltk-bugs@fltk.org".
//
#ifndef Fl_PNM_Image_H
#define Fl_PNM_Image_H
# include "Fl_Image.H"
class FL_EXPORT Fl_PNM_Image : public Fl_RGB_Image {
public:
Fl_PNM_Image(const char* filename);
};
#endif
//
// End of "$Id: Fl_PNM_Image.H,v 1.1.2.1 2001/11/24 18:07:57 easysw Exp $".
//

View File

@ -1,5 +1,5 @@
//
// "$Id: Fl_Pixmap.H,v 1.6.2.8.2.5 2001/11/22 15:35:01 easysw Exp $"
// "$Id: Fl_Pixmap.H,v 1.6.2.8.2.6 2001/11/24 18:07:57 easysw Exp $"
//
// Pixmap header file for the Fast Light Tool Kit (FLTK).
//
@ -39,6 +39,9 @@ class FL_EXPORT Fl_Pixmap : public Fl_Image {
void copy_data();
void delete_data();
void set_data(const char * const *p);
protected:
void measure();
public:
@ -65,5 +68,5 @@ class FL_EXPORT Fl_Pixmap : public Fl_Image {
#endif
//
// End of "$Id: Fl_Pixmap.H,v 1.6.2.8.2.5 2001/11/22 15:35:01 easysw Exp $".
// End of "$Id: Fl_Pixmap.H,v 1.6.2.8.2.6 2001/11/24 18:07:57 easysw Exp $".
//

41
FL/Fl_XBM_Image.H Normal file
View File

@ -0,0 +1,41 @@
//
// "$Id: Fl_XBM_Image.H,v 1.1.2.1 2001/11/24 18:07:57 easysw Exp $"
//
// XBM image header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2001 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library 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
// Library General Public License for more details.
//
// You should have received a copy of the GNU Library General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA.
//
// Please report all bugs and problems to "fltk-bugs@fltk.org".
//
#ifndef Fl_XBM_Image_H
#define Fl_XBM_Image_H
# include "Fl_Bitmap.H"
class FL_EXPORT Fl_XBM_Image : public Fl_Bitmap {
public:
Fl_XBM_Image(const char* filename);
};
#endif // !Fl_XBM_Image_H
//
// End of "$Id: Fl_XBM_Image.H,v 1.1.2.1 2001/11/24 18:07:57 easysw Exp $".
//

41
FL/Fl_XPM_Image.H Normal file
View File

@ -0,0 +1,41 @@
//
// "$Id: Fl_XPM_Image.H,v 1.1.2.1 2001/11/24 18:07:57 easysw Exp $"
//
// XPM image header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2001 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library 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
// Library General Public License for more details.
//
// You should have received a copy of the GNU Library General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA.
//
// Please report all bugs and problems to "fltk-bugs@fltk.org".
//
#ifndef Fl_XPM_Image_H
#define Fl_XPM_Image_H
# include "Fl_Pixmap.H"
class FL_EXPORT Fl_XPM_Image : public Fl_Pixmap {
public:
Fl_XPM_Image(const char* filename);
};
#endif // !Fl_XPM_Image
//
// End of "$Id: Fl_XPM_Image.H,v 1.1.2.1 2001/11/24 18:07:57 easysw Exp $".
//

View File

@ -1,10 +1,9 @@
//
// "$Id: Fl_GIF_Image.cxx,v 1.1.2.4 2001/11/24 02:46:19 easysw Exp $"
// "$Id: Fl_GIF_Image.cxx,v 1.1.2.5 2001/11/24 18:07:57 easysw Exp $"
//
// Fl_GIF_Image routines.
//
// Copyright 1997-2001 by Easy Software Products.
// Image support donated by Matthias Melcher, Copyright 2000.
// Copyright 1997-2001 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
@ -366,5 +365,5 @@ Fl_GIF_Image::Fl_GIF_Image(const char *infname) : Fl_Pixmap((char *const*)0) {
//
// End of "$Id: Fl_GIF_Image.cxx,v 1.1.2.4 2001/11/24 02:46:19 easysw Exp $".
// End of "$Id: Fl_GIF_Image.cxx,v 1.1.2.5 2001/11/24 18:07:57 easysw Exp $".
//

161
src/Fl_PNM_Image.cxx Normal file
View File

@ -0,0 +1,161 @@
//
// "$Id: Fl_PNM_Image.cxx,v 1.1.2.1 2001/11/24 18:07:57 easysw Exp $"
//
// Fl_PNM_Image routines.
//
// Copyright 1997-2001 by Easy Software Products.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library 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
// Library General Public License for more details.
//
// You should have received a copy of the GNU Library General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA.
//
// Please report all bugs and problems to "fltk-bugs@fltk.org".
//
// Contents:
//
//
//
// Include necessary header files...
//
#include <FL/Fl.H>
#include <FL/Fl_PNM_Image.H>
#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
//
// 'Fl_PNM_Image::Fl_PNM_Image()' - Load a PNM image...
//
Fl_PNM_Image::Fl_PNM_Image(const char *name) // I - File to read
: Fl_RGB_Image(0,0,0) {
FILE *fp; // File pointer
int x, y; // Looping vars
char line[1024], // Input line
*lineptr; // Pointer in line
uchar *ptr, // Pointer to pixel values
byte, // Byte from file
bit; // Bit in pixel
int format, // Format of PNM file
val, // Pixel value
maxval; // Maximum pixel value
//
// Read the file header in the format:
//
// Pformat
// # comment1
// # comment2
// ...
// # commentN
// width
// height
// max sample
//
lineptr = fgets(line, sizeof(line), fp);
lineptr ++;
format = atoi(lineptr);
while (isdigit(*lineptr)) lineptr ++;
while (lineptr != NULL && w() == 0) {
if (*lineptr == '\0' || *lineptr == '#') {
lineptr = fgets(line, sizeof(line), fp);
} else if (isdigit(*lineptr)) {
w(atoi(lineptr));
while (isdigit(*lineptr)) lineptr ++;
} else lineptr ++;
}
while (lineptr != NULL && h()) {
if (*lineptr == '\0' || *lineptr == '#') {
lineptr = fgets(line, sizeof(line), fp);
} else if (isdigit(*lineptr)) {
h(atoi(lineptr));
while (isdigit(*lineptr)) lineptr ++;
} else lineptr ++;
}
if (format != 1 && format != 4) {
maxval = 0;
while (lineptr != NULL && maxval == 0) {
if (*lineptr == '\0' || *lineptr == '#') {
lineptr = fgets(line, sizeof(line), fp);
} else if (isdigit(*lineptr)) {
maxval = atoi(lineptr);
while (isdigit(*lineptr)) lineptr ++;
} else lineptr ++;
}
} else maxval = 1;
// Allocate memory...
if (format == 1 || format == 2 || format == 4 || format == 5) d(1);
else d(3);
array = new uchar[w() * h() * d()];
// Read the image file...
for (y = 0; y < h(); y ++) {
ptr = (uchar *)array + y * w() * d();
switch (format) {
case 1 :
case 2 :
for (x = w(); x > 0; x --)
if (fscanf(fp, "%d", &val) == 1) *ptr++ = 255 * val / maxval;
break;
case 3 :
for (x = w(); x > 0; x --) {
if (fscanf(fp, "%d", &val) == 1) *ptr++ = 255 * val / maxval;
if (fscanf(fp, "%d", &val) == 1) *ptr++ = 255 * val / maxval;
if (fscanf(fp, "%d", &val) == 1) *ptr++ = 255 * val / maxval;
}
break;
case 4 :
for (x = w(), byte = getc(fp), bit = 128; x > 0; x --) {
if (byte & bit) *ptr++ = 255;
else *ptr++ = 0;
if (bit > 1) bit >>= 1;
else {
bit = 128;
byte = getc(fp);
}
}
break;
case 5 :
case 6 :
fread(ptr, w(), d(), fp);
break;
}
}
fclose(fp);
}
//
// End of "$Id: Fl_PNM_Image.cxx,v 1.1.2.1 2001/11/24 18:07:57 easysw Exp $".
//

View File

@ -1,5 +1,5 @@
//
// "$Id: Fl_Shared_Image.cxx,v 1.23.2.1 2001/11/24 02:46:19 easysw Exp $"
// "$Id: Fl_Shared_Image.cxx,v 1.23.2.2 2001/11/24 18:07:57 easysw Exp $"
//
// Shared image code for the Fast Light Tool Kit (FLTK).
//
@ -32,8 +32,9 @@
#include <FL/Fl_GIF_Image.H>
#include <FL/Fl_JPEG_Image.H>
#include <FL/Fl_PNG_Image.H>
//#include <FL/Fl_XBM_Image.H>
//#include <FL/Fl_XPM_Image.H>
#include <FL/Fl_PNM_Image.H>
#include <FL/Fl_XBM_Image.H>
#include <FL/Fl_XPM_Image.H>
//
@ -224,6 +225,12 @@ Fl_Shared_Image::reload() {
else if (memcmp(header, "\377\330\377", 3) == 0 && // Start-of-Image
header[3] >= 0xe0 && header[3] <= 0xef) // APPn
img = new Fl_JPEG_Image(name_);
else if (header[0] == 'P' && header[1] >= '1' && header[1] <= '6') // Portable anymap
img = new Fl_PNM_Image(name_);
else if (memcmp(header, "#define", 7) == 0) // XBM file
img = new Fl_XBM_Image(name_);
else if (memcmp(header, "/* XPM */", 9) == 0) // XPM file
img = new Fl_XPM_Image(name_);
else
img = 0;
@ -369,5 +376,5 @@ Fl_Shared_Image::get(const char *n, int W, int H) {
//
// End of "$Id: Fl_Shared_Image.cxx,v 1.23.2.1 2001/11/24 02:46:19 easysw Exp $".
// End of "$Id: Fl_Shared_Image.cxx,v 1.23.2.2 2001/11/24 18:07:57 easysw Exp $".
//

133
src/Fl_Tiled_Image.cxx Normal file
View File

@ -0,0 +1,133 @@
//
// "$Id: Fl_Tiled_Image.cxx,v 1.1.2.1 2001/11/24 18:07:57 easysw Exp $"
//
// Tiled image code for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2001 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library 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
// Library General Public License for more details.
//
// You should have received a copy of the GNU Library General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA.
//
// Please report all bugs and problems to "fltk-bugs@fltk.org".
//
#include <FL/Fl.H>
#include <FL/Fl_Tiled_Image.H>
#include <FL/fl_draw.H>
//
// 'Fl_Tiled_Image::Fl_Tiled_Image()' - Constructor.
//
// Use a width and height of 0 to tile the whole window/widget.
//
Fl_Tiled_Image::Fl_Tiled_Image(Fl_Image *i, // I - Image to tile
int W, // I - Width of tiled area
int H) : // I - Height of tiled area
Fl_Image(W,H,0) {
image_ = i;
alloc_image_ = 0;
if (W == 0) w(Fl::w());
if (H == 0) h(Fl::h());
}
//
// 'Fl_Tiled_Image::~Fl_Tiled_Image()' - Destructor.
//
Fl_Tiled_Image::~Fl_Tiled_Image() {
if (alloc_image_) delete image_;
}
//
// 'Fl_Tiled_Image::copy()' - Copy and resize a tiled image...
//
Fl_Image * // O - New image
Fl_Tiled_Image::copy(int W, // I - New width
int H) { // I - New height
if (W == w() && H == h()) return this;
else return new Fl_Tiled_Image(image_, W, H);
}
//
// 'Fl_Tiled_Image::color_average()' - Blend colors...
//
void
Fl_Tiled_Image::color_average(Fl_Color c, // I - Color to blend with
float i) { // I - Blend fraction
Fl_Image *temp = image_->copy();
temp->color_average(c, i);
image_ = temp;
alloc_image_ = 1;
}
//
// 'Fl_Tiled_Image::desaturate()' - Convert the image to grayscale...
//
void
Fl_Tiled_Image::desaturate() {
Fl_Image *temp = image_->copy();
temp->desaturate();
image_ = temp;
alloc_image_ = 1;
}
//
// 'Fl_Tiled_Image::draw()' - Draw a shared image...
//
void
Fl_Tiled_Image::draw(int X, // I - Starting X position
int Y, // I - Starting Y position
int W, // I - Width of area to be filled
int H, // I - Height of area to be filled
int cx, // I - "Source" X position
int cy) { // I - "Source" Y position
if (!image_->w() || !image_->h()) return;
if (W == 0) W = Fl::w();
if (H == 0) H = Fl::h();
X += cx;
Y += cy;
X = X - (X % image_->w());
Y = Y - (Y % image_->h());
W += X;
H += Y;
for (int yy = Y; yy < H; yy += image_->h())
for (int xx = X; xx < W; xx += image_->w())
image_->draw(xx, yy);
}
//
// End of "$Id: Fl_Tiled_Image.cxx,v 1.1.2.1 2001/11/24 18:07:57 easysw Exp $".
//

88
src/Fl_XBM_Image.cxx Normal file
View File

@ -0,0 +1,88 @@
//
// "$Id: Fl_XBM_Image.cxx,v 1.1.2.1 2001/11/24 18:07:57 easysw Exp $"
//
// Fl_XBM_Image routines.
//
// Copyright 1997-2001 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library 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
// Library General Public License for more details.
//
// You should have received a copy of the GNU Library General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA.
//
// Please report all bugs and problems to "fltk-bugs@fltk.org".
//
// Contents:
//
//
//
// Include necessary header files...
//
#include <FL/Fl.H>
#include <FL/Fl_XBM_Image.H>
#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
Fl_XBM_Image::Fl_XBM_Image(const char *name) : Fl_Bitmap((const char *)0,0,0) {
FILE *f;
uchar *data;
if ((f = fopen(name, "rb")) == NULL) return;
char buffer[1024];
char junk[1024];
int wh[2]; // width and height
int i;
for (i = 0; i<2; i++) {
for (;;) {
if (!fgets(buffer,1024,f)) return;
int r = sscanf(buffer,"#define %s %d",junk,&wh[i]);
if (r >= 2) break;
}
}
// skip to data array:
for (;;) {
if (!fgets(buffer,1024,f)) return;
if (!strncmp(buffer,"static ",7)) break;
}
// Allocate memory...
w(wh[0]);
h(wh[1]);
int n = ((wh[0]+7)/8)*wh[1];
array = new uchar[((w() + 7) / 8) * h()];
// read the data:
for (i = 0, data = (uchar *)array; i < n;) {
if (!fgets(buffer,1024,f)) return;
const char *a = buffer;
while (*a && i<n) {
int t;
if (sscanf(a," 0x%x",&t)>0) *data++ = t;
while (*a && *a++ != ',');
}
}
fclose(f);
}
//
// End of "$Id: Fl_XBM_Image.cxx,v 1.1.2.1 2001/11/24 18:07:57 easysw Exp $".
//

129
src/Fl_XPM_Image.cxx Normal file
View File

@ -0,0 +1,129 @@
//
// "$Id: Fl_XPM_Image.cxx,v 1.1.2.1 2001/11/24 18:07:57 easysw Exp $"
//
// Fl_XPM_Image routines.
//
// Copyright 1997-2001 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library 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
// Library General Public License for more details.
//
// You should have received a copy of the GNU Library General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA.
//
// Please report all bugs and problems to "fltk-bugs@fltk.org".
//
// Contents:
//
//
//
// Include necessary header files...
//
#include <FL/Fl.H>
#include <FL/Fl_XPM_Image.H>
#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
//
// 'hexdigit()' - Convert a hex digit to an integer.
//
static int hexdigit(int x) { // I - Hex digit...
if (isdigit(x)) return x-'0';
if (isupper(x)) return x-'A'+10;
if (islower(x)) return x-'a'+10;
return 20;
}
#define MAXSIZE 2048
#define INITIALLINES 256
Fl_XPM_Image::Fl_XPM_Image(const char *name) : Fl_Pixmap((char *const*)0) {
FILE *f;
if ((f = fopen(name, "rb")) == NULL) return;
// read all the c-strings out of the file:
char** new_data = new char *[INITIALLINES];
char** temp_data;
int malloc_size = INITIALLINES;
char buffer[MAXSIZE+20];
int i = 0;
while (fgets(buffer,MAXSIZE+20,f)) {
if (buffer[0] != '\"') continue;
char *myp = buffer;
char *q = buffer+1;
while (*q != '\"' && myp < buffer+MAXSIZE) {
if (*q == '\\') switch (*++q) {
case '\r':
case '\n':
fgets(q,(buffer+MAXSIZE+20)-q,f); break;
case 0:
break;
case 'x': {
q++;
int n = 0;
for (int x = 0; x < 3; x++) {
int d = hexdigit(*q);
if (d > 15) break;
n = (n<<4)+d;
q++;
}
*myp++ = n;
} break;
default: {
int c = *q++;
if (c>='0' && c<='7') {
c -= '0';
for (int x=0; x<2; x++) {
int d = hexdigit(*q);
if (d>7) break;
c = (c<<3)+d;
q++;
}
}
*myp++ = c;
} break;
} else {
*myp++ = *q++;
}
}
*myp++ = 0;
if (i >= malloc_size) {
temp_data = new char *[malloc_size + INITIALLINES];
memcpy(temp_data, new_data, sizeof(char *) * malloc_size);
delete[] new_data;
new_data = temp_data;
malloc_size += INITIALLINES;
}
new_data[i] = new char[myp-buffer+1];
memcpy(new_data[i], buffer,myp-buffer);
new_data[i][myp-buffer] = 0;
i++;
}
fclose(f);
data(new_data, i);
measure();
}
//
// End of "$Id: Fl_XPM_Image.cxx,v 1.1.2.1 2001/11/24 18:07:57 easysw Exp $".
//

View File

@ -1,5 +1,5 @@
#
# "$Id: Makefile,v 1.18.2.14.2.19 2001/11/24 02:46:19 easysw Exp $"
# "$Id: Makefile,v 1.18.2.14.2.20 2001/11/24 18:07:57 easysw Exp $"
#
# Library makefile for the Fast Light Tool Kit (FLTK).
#
@ -68,6 +68,7 @@ CPPFILES = \
Fl_Pack.cxx \
Fl_Pixmap.cxx \
Fl_PNG_Image.cxx \
Fl_PNM_Image.cxx \
Fl_Positioner.cxx \
Fl_Progress.cxx \
Fl_Repeat_Button.cxx \
@ -84,6 +85,7 @@ CPPFILES = \
Fl_Text_Display.cxx \
Fl_Text_Editor.cxx \
Fl_Tile.cxx \
Fl_Tiled_Image.cxx \
Fl_Tooltip.cxx \
Fl_Valuator.cxx \
Fl_Value_Input.cxx \
@ -95,6 +97,8 @@ CPPFILES = \
Fl_Window_hotspot.cxx \
Fl_Window_iconize.cxx \
Fl_Wizard.cxx \
Fl_XBM_Image.cxx \
Fl_XPM_Image.cxx \
Fl_abort.cxx \
Fl_add_idle.cxx \
Fl_arg.cxx \
@ -280,5 +284,5 @@ uninstall:
#
# End of "$Id: Makefile,v 1.18.2.14.2.19 2001/11/24 02:46:19 easysw Exp $".
# End of "$Id: Makefile,v 1.18.2.14.2.20 2001/11/24 18:07:57 easysw Exp $".
#

View File

@ -207,6 +207,9 @@ Fl_Text_Editor.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
Fl_Text_Editor.o: ../FL/Fl_Text_Buffer.H
Fl_Tile.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Tile.H
Fl_Tile.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Window.H
Fl_Tiled_Image.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
Fl_Tiled_Image.o: ../FL/Fl_Tiled_Image.H ../FL/Fl_Image.H ../FL/x.H
Fl_Tiled_Image.o: ../FL/Fl_Window.H
Fl_Tooltip.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
Fl_Tooltip.o: ../FL/Fl_Menu_Window.H ../FL/Fl_Single_Window.H
Fl_Tooltip.o: ../FL/Fl_Window.H ../FL/Fl_Box.H ../FL/Fl_Widget.H

View File

@ -1,5 +1,5 @@
#
# "$Id: Makefile,v 1.19.2.7.2.11 2001/11/24 02:46:19 easysw Exp $"
# "$Id: Makefile,v 1.19.2.7.2.12 2001/11/24 18:07:57 easysw Exp $"
#
# Test/example program makefile for the Fast Light Tool Kit (FLTK).
#
@ -26,20 +26,66 @@
include ../makeinclude
CPPFILES =\
CubeMain.cxx CubeView.cxx adjuster.cxx arc.cxx ask.cxx \
bitmap.cxx boxtype.cxx browser.cxx button.cxx \
buttons.cxx checkers.cxx clock.cxx colbrowser.cxx \
color_chooser.cxx cube.cxx cursor.cxx curve.cxx demo.cxx \
doublebuffer.cxx editor.cxx file_chooser.cxx fonts.cxx \
forms.cxx fractals.cxx fullscreen.cxx gl_overlay.cxx \
glpuzzle.cxx hello.cxx help.cxx iconize.cxx image.cxx input.cxx \
keyboard.cxx label.cxx list_visuals.cxx mandelbrot.cxx \
menubar.cxx message.cxx minimum.cxx navigation.cxx \
output.cxx overlay.cxx pixmap.cxx pixmap_browser.cxx \
radio.cxx resizebox.cxx scroll.cxx shape.cxx shiny.cxx \
subwindow.cxx symbols.cxx tabs.cxx tile.cxx \
valuators.cxx fast_slow.cxx resize.cxx pack.cxx \
inactive.cxx line_style.cxx
adjuster.cxx \
arc.cxx \
ask.cxx \
bitmap.cxx \
boxtype.cxx \
browser.cxx \
button.cxx \
buttons.cxx \
checkers.cxx \
clock.cxx \
colbrowser.cxx \
color_chooser.cxx \
cube.cxx \
CubeMain.cxx \
CubeView.cxx \
cursor.cxx \
curve.cxx \
demo.cxx \
doublebuffer.cxx \
editor.cxx \
fast_slow.cxx \
file_chooser.cxx \
fonts.cxx \
forms.cxx \
fractals.cxx \
fullscreen.cxx \
gl_overlay.cxx \
glpuzzle.cxx \
hello.cxx \
help.cxx \
iconize.cxx \
image.cxx \
inactive.cxx \
input.cxx \
keyboard.cxx \
label.cxx \
line_style.cxx \
list_visuals.cxx \
mandelbrot.cxx \
menubar.cxx \
message.cxx \
minimum.cxx \
navigation.cxx \
output.cxx \
overlay.cxx \
pack.cxx \
pixmap_browser.cxx \
pixmap.cxx \
radio.cxx \
resizebox.cxx \
resize.cxx \
scroll.cxx \
shape.cxx \
shiny.cxx \
subwindow.cxx \
symbols.cxx \
tabs.cxx \
tile.cxx \
tiled_image.cxx \
valuators.cxx
ALL = \
adjuster$(EXEEXT) \
@ -90,6 +136,7 @@ ALL = \
symbols$(EXEEXT) \
tabs$(EXEEXT) \
tile$(EXEEXT) \
tiled_image$(EXEEXT) \
valuators$(EXEEXT)
GLALL = \
@ -129,9 +176,6 @@ file_chooser$(EXEEXT): file_chooser.cxx
help$(EXEEXT): help.cxx
echo Compiling and linking $@...
$(CXX) -I.. $(CXXFLAGS) help.cxx -o $@ $(LINKFLTK) $(LDLIBS) $(IMAGELIBS)
image$(EXEEXT): image.cxx
echo Compiling and linking $@...
$(CXX) -I.. $(CXXFLAGS) image.cxx -o $@ $(LINKFLTK) $(LDLIBS) $(IMAGELIBS)
keyboard$(EXEEXT): keyboard.cxx keyboard_ui.cxx
echo Compiling and linking $@...
$(CXX) -I.. $(CXXFLAGS) keyboard.cxx $(LINKFLTK) $(LDLIBS) -o $@
@ -192,5 +236,5 @@ uninstall:
@echo Nothing to uninstall in test directory.
#
# End of "$Id: Makefile,v 1.19.2.7.2.11 2001/11/24 02:46:19 easysw Exp $".
# End of "$Id: Makefile,v 1.19.2.7.2.12 2001/11/24 18:07:57 easysw Exp $".
#

View File

@ -1,5 +1,5 @@
//
// "$Id: image.cxx,v 1.6.2.3.2.4 2001/11/24 02:46:19 easysw Exp $"
// "$Id: image.cxx,v 1.6.2.3.2.5 2001/11/24 18:07:57 easysw Exp $"
//
// Fl_Image test program for the Fast Light Tool Kit (FLTK).
//
@ -30,7 +30,7 @@
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Shared_Image.H>
#include <FL/Fl_Image.H>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
@ -96,9 +96,9 @@ int arg(int argc, char **argv, int &i) {
}
int main(int argc, char **argv) {
#ifndef WIN32
int i = 1;
#ifndef WIN32
Fl::args(argc,argv,i,arg);
if (visid >= 0) {
@ -123,21 +123,11 @@ int main(int argc, char **argv) {
window.color(FL_WHITE);
Fl_Button b(140,160,120,120,"Image w/Alpha"); ::b = &b;
Fl_Image *rgb;
Fl_RGB_Image *rgb;
Fl_Image *dergb;
if (argv[1]) {
rgb = Fl_Shared_Image::get(argv[1]);
if (rgb->w() > 100 || rgb->h() > 100) {
if (rgb->w() > rgb->h()) rgb = rgb->copy(100, 100 * rgb->h() / rgb->w());
else rgb = rgb->copy(100 * rgb->w() / rgb->h(), 100);
}
b.label(argv[1]);
} else {
make_image();
rgb = new Fl_RGB_Image(image, width, height,4);
}
make_image();
rgb = new Fl_RGB_Image(image, width, height,4);
dergb = rgb->copy();
dergb->inactive();
@ -165,5 +155,5 @@ int main(int argc, char **argv) {
}
//
// End of "$Id: image.cxx,v 1.6.2.3.2.4 2001/11/24 02:46:19 easysw Exp $".
// End of "$Id: image.cxx,v 1.6.2.3.2.5 2001/11/24 18:07:57 easysw Exp $".
//

View File

@ -1,10 +1,7 @@
//
// "$Id: pixmap_browser.cxx,v 1.5.2.4.2.2 2001/09/30 17:37:06 easysw Exp $"
// "$Id: pixmap_browser.cxx,v 1.5.2.4.2.3 2001/11/24 18:07:57 easysw Exp $"
//
// Another pixmap test program for the Fast Light Tool Kit (FLTK).
//
// On purpose, I do NOT provide a fltk method to turn a file
// into a pixmap. This program uses a rather simplistic one.
// A shared image test program for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2001 by Bill Spitzak and others.
//
@ -30,9 +27,7 @@
#include <FL/Fl_Box.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Pixmap.H>
#include <ctype.h>
#include <stdio.h>
#include <FL/Fl_Shared_Image.H>
#include <string.h>
#include <errno.h>
#include <FL/Fl_File_Chooser.H>
@ -40,107 +35,39 @@
Fl_Box *b;
Fl_Window *w;
Fl_Shared_Image *img;
char **data;
int sizeofdata;
int numlines;
static int hexdigit(int x) {
if (isdigit(x)) return x-'0';
if (isupper(x)) return x-'A'+10;
if (islower(x)) return x-'a'+10;
return 20;
}
int load_file(const char *name) {
FILE *f = fopen(name,"r");
if (!f) {
fl_message("Can't open %s, %s",name,strerror(errno));
return 0;
}
if (data) {
for (int i=numlines; i--;) delete[] data[i];
}
#define BUFSIZE 2048
char buffer[BUFSIZE];
int i = 0;
while (fgets(buffer, BUFSIZE, f)) {
if (buffer[0] != '\"') continue;
char *p = buffer;
char *q = buffer+1;
while (*q != '\"') {
if (*q == '\\') switch (*++q) {
case '\n':
fgets(q,(buffer+BUFSIZE)-q,f); break;
case 0:
break;
case 'x': {
q++;
int n = 0;
for (int x = 0; x < 3; x++) {
int d = hexdigit(*q);
if (d > 15) break;
n = (n<<4)+d;
q++;
}
*p++ = n;
} break;
default: {
int c = *q++;
if (c>='0' && c<='7') {
c -= '0';
for (int x=0; x<2; x++) {
int d = hexdigit(*q);
if (d>7) break;
c = (c<<3)+d;
q++;
}
}
*p++ = c;
} break;
} else {
*p++ = *q++;
}
}
*p++ = 0;
if (i >= sizeofdata) {
sizeofdata = 2*sizeofdata+100;
char **newdata = new char *[sizeofdata];
for (int j=0; j<i; j++) newdata[j] = data[j];
delete[] data;
data = newdata;
}
data[i] = new char[p-buffer];
memcpy(data[i],buffer,p-buffer);
i++;
}
numlines = i;
fclose(f);
return i;
}
Fl_Pixmap *pixmap;
void newpixmap() {
delete pixmap;
pixmap = new Fl_Pixmap(data);
b->image(pixmap);
b->redraw();
w->redraw();
}
static char name[1024];
void load_file(const char *n) {
if (img) img->release();
img = Fl_Shared_Image::get(n);
if (img->w() > b->w() || img->h() > b->h()) {
Fl_Image *temp;
if (img->w() > img->h()) temp = img->copy(b->w(), b->h() * img->h() / img->w());
else temp = img->copy(b->w() * img->w() / img->h(), b->h());
img->release();
img = (Fl_Shared_Image *)temp;
}
b->label(name);
b->image(img);
b->redraw();
}
void file_cb(const char *n) {
if (!strcmp(name,n)) return;
if (!load_file(n)) return;
load_file(n);
strcpy(name,n);
w->label(name);
newpixmap();
}
void button_cb(Fl_Widget *,void *) {
fl_file_chooser_callback(file_cb);
fl_file_chooser("XPM file","*.xpm",name);
fl_file_chooser("Image file?","*.{gif,jpg,pbm,pgm,png,ppm,xbm,xpm}", name);
fl_file_chooser_callback(0);
}
@ -152,19 +79,20 @@ int arg(int, char **argv, int &i) {
int main(int argc, char **argv) {
int i = 1;
if (Fl::args(argc,argv,i,arg) < argc)
Fl::fatal(" -8 # : use default visual\n%s\n",Fl::help);
Fl::args(argc,argv,i,arg);
Fl_Window window(400,400); ::w = &window;
Fl_Box b(0,0,window.w(),window.h()); ::b = &b;
b.box(FL_FLAT_BOX);
Fl_Button button(5,5,100,35,"load");
button.callback(button_cb);
if (!dvisual) Fl::visual(FL_RGB);
if (argv[1]) load_file(argv[1]);
window.resizable(window);
window.show(argc,argv);
return Fl::run();
}
//
// End of "$Id: pixmap_browser.cxx,v 1.5.2.4.2.2 2001/09/30 17:37:06 easysw Exp $".
// End of "$Id: pixmap_browser.cxx,v 1.5.2.4.2.3 2001/11/24 18:07:57 easysw Exp $".
//

120
test/tile.xpm Normal file
View File

@ -0,0 +1,120 @@
/* XPM */
static char * tile_xpm[] = {
"100 100 17 1",
" c None",
". c #565656",
"+ c #888888",
"@ c #A8A8A8",
"# c #8E8E8E",
"$ c #A0A0A0",
"% c #6E6E6E",
"& c #727272",
"* c #BFBFBF",
"= c #989898",
"- c #767676",
"; c #7A7A7A",
"> c #B4B4B4",
", c #808080",
"' c #AEAEAE",
") c #656565",
"! c #929292",
"$=>$@@,++,,,-;%$$+,;+)#;*!+,+@*!,!++;+;$@;+==,#=!!$--%)++=$,!@!%#+@!>$=!+*!=%)==>>@+,$==@!))#$%;=!!*",
"++$-,>$@!;+;-&++-,#!;++!-+#+!@$$#,,+&#=$=!==$+$#=>>>,&$#&$$#>$=,+.-''!$'*=+>+);+>*@$=--=$=,+!==,,@==",
"!$,-,=@=$+==,+!%,#,-&=$++-)===#+##,+=+=#$@$=>''$$*@=,+#!,$=>!=$+)++)+*@=$@=,+$$$+!'**#,,,$+,=@=;==-;",
"!,###$$);'#;$=+%;+#;++%-,=,==!)+#===========@>>>*>@!==#,+#==@$===+-;%@$=#+*>=!$$$==,*>@-+;+#$,%,@@%#",
"+@,!=,,+!$==$++!&;+#!,%),=>!+;,=+$@=+!$==+#$!@>>>*@=;!,+#!==$$>@$!=>=$@$=+@='$!+@*+!!=*@$+,'@+%+,,@=",
"=;&+,.-!=!=!=;+!!,!=!;)-==,++;+@>@+,#=$+!'$=#='>=*$$!+,!,#$$@!>$,#+$@@$@'@##==@$=+'$!+!$>@@*+!*+,!=!",
"!!,,,+++&#=,+!,'!,!##!$$!-.++=@'=$$!==++==@=@>=!@@!#!+$+$===$@#+=$!=@$!@=#@+$>!=@$=!@'!=$*@$$!!====$",
"#%)#@@+%,+!$,++=#+++,=$+-+++!$!+==$$===#+##$=@$=+$$+#=!@=,+$#!$$$$=$==$=!,,$@*$,=>-=@#$>>$+'>$@=>'!+",
"),,-=+$!@##-,,!;,=++$@;%&,!!=$#!=!@@$$$,+==+$!==+!$$=#+!+!!+=!$!@@$=++=>!&+@$==!!!+==$*==$*@=@**$+!+",
"!'$#,,,@$#+&)&-;===$,%;+#!==###$=#==!===>>+====$$,$$=+=-,$=;#!==$=#=;+=@===$$$=#$+=@@>$+>*@$'*@-+=%,",
"$$$@++!!#%)+,%++>=$#%%#%=@=+=;,@$+=+=>$=='!+!##+$$!!;!=&=!##@$,+@+=+!$+-=@$,=>'+#!=@@==@>''@>>-+>$$=",
"=,%++,@!,)),%,+=@!%++!+#,#+$=$!!='==@$$==+#$++,$$!@#$=,@+,,@#$+#=$$=!$+!+=!$$>==$$;=@!=$@*>@$==='$=$",
"$$=&%#+,!=!+,;-+-%)#=@=+%%$$#!@!@$@@@>=,+!!,,#=>@$!#$;#$=-$@+;$*$!$@,&=$++!!+@@==#=!@;$>*@++@>=+,>>$",
"$$#=$,+%,!@@!!&%-,,++==,,+!!#,#$!@@$=@#==#@=#=$*$$@,,+!+#!+=%,=@$'$$$=+!+==+#-=@,+$+@>!#=@$!@!=$=+#!",
"+#=>==;,++,=>!;-,,;-#++$@!$,,!==@>>@$!=+$#+@='@$!'@$$&+#+=#+;+#=!'>$$@!#$++!=-!;,$!+>*'=#!@@@-##@$#+",
",,#=$!$#+%,,,!=+=,!-,+!!$=%,+$!#@@'@$@,+$=+!=$>$!@+;@+,,#=;$=!,++>$=>$$=!,+==,-+@=!$@!@>@$-,,==!=$!!",
"!+=$=,$#-#+=!,!=!=++;;,=;,=!+=+!,+$+#>=+@@####@=@@+;,+&;-==$#$=#$@=#@*==!=;+++==!!$@#%>>$=!#,-#+#+,)",
"+&$=!&;###@=#-,@,,!+;!,%+!=!!++,+++=+'>==@#==-=$!$#!-,)+!#!==+$$@=#==,=@!==!%++==='@==$$=##!+!+%-=$$",
"+!#=+-,,=@++==+#,--+++&+!!===+!+#;$=++*$$=!=@@=+=#%$--!+,@$+#+'>!=!+!!===$=$;++#,$+=@'=-!#!#=!+=,%!,",
"+@$-+!)#=,=$!==,;,+-%,!!#@!$!-#-$!=+==#+$=+!='@$#++-;!!+$,!#-@'$++++==!$+!#=!+$@$,#==#+#==@!,%$==!,%",
"#+#+,!,+%+@$>!!,;+;%+#++=+,$+-&=+,@$%!==-#,*@;$$=!+=,=#!!@$#$>!+$=!=#!@==!,,===$==!=@++,+@@$!==;,=#$",
",=+,#$!;,@=+$'$$!+%;,-,##+,+,=!,,+++&==!=!$>@=$!,$!'#@#,!@!@==!+$+$!$=#$,+$!==++,=!@+!=!,!$+$+,=$,!#",
")+>@$$+,=#+=#!+$=!,,&,;=++#!+,,++=##!-&+@$@@$$$,@$',&@*=-!=@!=,;=$#=@!++#!$'=!=,,+=$===;=$$=!=+!@=$%",
"#+#@@@=>'#=,,#!,$=$+,,+$+$,;+--!$!!#=#,-,=$=$$,=@=,+$'$+,++=@;##-!@==+!!=!#@==,,+==!+!++=='$=>$#;@!;",
";++=>+=@!$$$!,#!&,==!#@-!!-&%-&;===$+,)%,,+'$$@!++==*=%@+#=!==!==$+$$=,#$=!=,++=!$#-!@=!;$==@@>#+!+)",
"+,+@!$==,=@=++=,&+-$!#@=,-,--+)#!,$'=%;-%;$@#@$!+!>>,#@$;+$$!=!@>$$=!,+>!!$-+,#!++,+!=+=+=-!>$@@$=;;",
"+;$$=+$#=@!=$,,!#;,,+=#=++,!+&+#+;+$#+=,%!+;,==!=*=&$$!,+#'+,@@>=@$$,+$+#!!+,++#%%$$,++!=!==,#>$-=*@",
"+>>+&=,=$+$@$%-!+++,&#+-+,=$+-$+;;=%,=@+$++&#+;,*$-%$$+,,;$$$=!$#$@+$@=$>,++$!,)-!!!+#;@+#@,!=#@=@>$",
"'>$#%!$#,>$#=$,&&++%$#%#=+;!$$#%-+%,=!-!=+!=#+,#!$-'$=+,=@!=!@$#$!+!$!$*',,##+#+!!,;+#+=@##=@+@*'=!$",
"@@=)$$=!=$$$=+=#,--!;-!+!#+++;=!+;!++++%)$=#@@+!,,!'='=+'!++=@!+=#=$=#$++#,,%=+=#!#&,!#====$$**@++@@",
"@=+>>#==$==+!#=$+;+),++#+$>+;,+$!=#+==&+-#-$*+>==+,+$!+=+,@@@$=;=@$!+==&@+,+-,+;+,#+=$=!@@=='$=@''$+",
"$)+@@'>$++,+#$$#!=+,-+-+==$#=!=++=#+#$==@,,>#@,$@+$%;,@!;=+,+=$$=##+==##='#,&+=&%+##$@@=$==$@=@$@$!$",
"@>'@=@>$+=+,!==!!##!=+;-+#=++,%@=-,=;;=@!=>$$@$&,!@#!;!='++!+$@#+,+,-#!++!$,+$+),##'>,++$$=$@@'=!,$,",
"$$>*@>==#=#++==$$+#='=+,#$#=&)+,=+!!%+$,='=@>=+,*;)!+=$$,%++@$)%;+==,#+-++-,$#+&++$=+#$-!=@''@=;#,;-",
"*>+=$#++@=,=;,==,#;$=+++=!=+;-,-!=#&!>%+=,@$+;$$-&&-$=@$#,-,#+--$,%-,!,+%;=$--!$=$=#!$##+$@$==!=&&-$",
"'=$$,-=+,#$!==+!+++!@!=$+=+,-!,;$=-$=,=+,$>--=@+)%!!@#++$@$,-+-=$+%&!&;,==$+++$=$=+#==+!!@=!;$#+$$>>",
",#=+!$-%)#==>$$,,!+=''++$+,#,##%%+@$,,,,@@#==@=,%,$$$#+;=+=$!++,-,;+,%%!@,-,,=!==!+#+==#+=+),==$='>+",
"$+#==$);,++#=$=,=#$$==$$$!#;=+#++$',#=!==+=$=+#$#!!$#=+,!--$@+-&)-+!%)!=+--!=@=##=!$=@===!&+$#$@@=,@",
"$$$@+++;%+=,=!=$$$$=!=$#'==#,,+!$=!=,!==@=@*=$,==$,@==,++,+=;-=!+%+%%=+&%++=$!$-++=+@$++!+++$#==++#-",
"+=$=+=;=-#,+,,$=$'@#@=+%-@>!#,$$+@#==%,!$@'@=$$=@!!+,--=##!!,)=@#=)%,,-,+==!!,,++=+$+,!;,++=,+#%,!;+",
"$+#'$,,+@!=%,,+!'@>@##=$+;%=@$!!$=+=$,===++!+$@*$#=,#,-==+&,!==$=+=!!%,&===!;+!#=;#!+,!+=-;+==-)#+,,",
"+==#=$+=,,++,,+!=@$+$>$+#,==;*@=!#$-,>$'@%&->=>>$$;,!++=+,+,+@#=!#@++,#=!=+,+,+==-+-##+#,-,;-##+#!,+",
"+=%,@=!+-&&==!$=,@$'=++=#;+$'==;+=$&!$+#'#$@$#@>=++,#$$+)++;!#=!!+,,,$'=&,+++,#=++=$===;=#,+#+!+#!#,",
";,,!!##,,,,==@$,=+$>+#$$+=$#@=-!$=;$#$$,-!'$#=#$$;+#!++=+;&;-+'$&;,+,,&$$==+!#,++==#-=!+++,+!!$$==--",
"&-,!!=;+=++$$=#@$=@,+=$=$!=#+,$+=;,==!$+==@>@,&,$'++#,)++=,,)+=,!$=#-.&+#$'@!+++==!+,+&#!,++$=+!@=-=",
"&+!+;,+++!!$$##$$!=$=!+=!=!!;!@=-++@$@$'$#>'++$$$+$-%,=--+!+@+;!#;#;%-&,#=$@@!!=$,=!;)&++=!#$#,&++!!",
"$=!,))-,!=,-$$@=+!+!,'=+==!=$+=++,=+'@'@@===;,!>'@+),=&+$,)=+++-+,);;%-,++$#+=@$#,+$,#=+!+!##+#;,+#%",
"!#-%%%;#+;!%!@=@@+.$;+*@+=,@!;%$=+,=$,@$,=>+#;+=@$$@=%=>@-,);!$$&);#),,#,%&#!==@>++,=>=+++,,!=--=#,@",
"#&%,=,##.+%!+=$$+=@!!+-,=@!$#,,$!=@#@=!,+@@###+-=#@,-=$,#++)-#$#-#)#,,%,;),!$!##$@'$!$!,+!!!+-;#+#$$",
";.%.-+$@&)-!=++@##=*$,!=$;+@='!!-!>#!!!$>%+-&#!=$!#=$*$#-+%=;!=-!+#;#++&),==+$+!$++=-,#++!+$+%$%;++;",
"$--%)++=$,!@!%#+@!>$=!+*!=%)==>>@+,$==@!))#$%;=!!*$=>$@@,++,,,-;%$$+,;+)#;*!+,+@*!,!++;+;$@;+==,#=!!",
">>,&$#&$$#>$=,+.-''!$'*=+>+);+>*@$=--=$=,+!==,,@==++$-,>$@!;+;-&++-,#!;++!-+#+!@$$#,,+&#=$=!==$+$#=>",
"@=,+#!,$=>!=$+)++)+*@=$@=,+$$$+!'**#,,,$+,=@=;==-;!$,-,=@=$+==,+!%,#,-&=$++-)===#+##,+=+=#$@$=>''$$*",
"@!==#,+#==@$===+-;%@$=#+*>=!$$$==,*>@-+;+#$,%,@@%#!,###$$);'#;$=+%;+#;++%-,=,==!)+#===========@>>>*>",
"@=;!,+#!==$$>@$!=>=$@$=+@='$!+@*+!!=*@$+,'@+%+,,@=+@,!=,,+!$==$++!&;+#!,%),=>!+;,=+$@=+!$==+#$!@>>>*",
"$$!+,!,#$$@!>$,#+$@@$@'@##==@$=+'$!+!$>@@*+!*+,!=!=;&+,.-!=!=!=;+!!,!=!;)-==,++;+@>@+,#=$+!'$=#='>=*",
"!#!+$+$===$@#+=$!=@$!@=#@+$>!=@$=!@'!=$*@$$!!====$!!,,,+++&#=,+!,'!,!##!$$!-.++=@'=$$!==++==@=@>=!@@",
"$+#=!@=,+$#!$$$$=$==$=!,,$@*$,=>-=@#$>>$+'>$@=>'!+#%)#@@+%,+!$,++=#+++,=$+-+++!$!+==$$===#+##$=@$=+$",
"$$=#+!+!!+=!$!@@$=++=>!&+@$==!!!+==$*==$*@=@**$+!+),,-=+$!@##-,,!;,=++$@;%&,!!=$#!=!@@$$$,+==+$!==+!",
"$$=+=-,$=;#!==$=#=;+=@===$$$=#$+=@@>$+>*@$'*@-+=%,!'$#,,,@$#+&)&-;===$,%;+#!==###$=#==!===>>+====$$,",
"!!;!=&=!##@$,+@+=+!$+-=@$,=>'+#!=@@==@>''@>>-+>$$=$$$@++!!#%)+,%++>=$#%%#%=@=+=;,@$+=+=>$=='!+!##+$$",
"@#$=,@+,,@#$+#=$$=!$+!+=!$$>==$$;=@!=$@*>@$==='$=$=,%++,@!,)),%,+=@!%++!+#,#+$=$!!='==@$$==+#$++,$$!",
"!#$;#$=-$@+;$*$!$@,&=$++!!+@@==#=!@;$>*@++@>=+,>>$$$=&%#+,!=!+,;-+-%)#=@=+%%$$#!@!@$@@@>=,+!!,,#=>@$",
"@,,+!+#!+=%,=@$'$$$=+!+==+#-=@,+$+@>!#=@$!@!=$=+#!$$#=$,+%,!@@!!&%-,,++==,,+!!#,#$!@@$=@#==#@=#=$*$$",
"@$$&+#+=#+;+#=!'>$$@!#$++!=-!;,$!+>*'=#!@@@-##@$#++#=>==;,++,=>!;-,,;-#++$@!$,,!==@>>@$!=+$#+@='@$!'",
"+;@+,,#=;$=!,++>$=>$$=!,+==,-+@=!$@!@>@$-,,==!=$!!,,#=$!$#+%,,,!=+=,!-,+!!$=%,+$!#@@'@$@,+$=+!=$>$!@",
"+;,+&;-==$#$=#$@=#@*==!=;+++==!!$@#%>>$=!#,-#+#+,)!+=$=,$#-#+=!,!=!=++;;,=;,=!+=+!,+$+#>=+@@####@=@@",
"#!-,)+!#!==+$$@=#==,=@!==!%++==='@==$$=##!+!+%-=$$+&$=!&;###@=#-,@,,!+;!,%+!=!!++,+++=+'>==@#==-=$!$",
"%$--!+,@$+#+'>!=!+!!===$=$;++#,$+=@'=-!#!#=!+=,%!,+!#=+-,,=@++==+#,--+++&+!!===+!+#;$=++*$$=!=@@=+=#",
"+-;!!+$,!#-@'$++++==!$+!#=!+$@$,#==#+#==@!,%$==!,%+@$-+!)#=,=$!==,;,+-%,!!#@!$!-#-$!=+==#+$=+!='@$#+",
"+=,=#!!@$#$>!+$=!=#!@==!,,===$==!=@++,+@@$!==;,=#$#+#+,!,+%+@$>!!,;+;%+#++=+,$+-&=+,@$%!==-#,*@;$$=!",
"!'#@#,!@!@==!+$+$!$=#$,+$!==++,=!@+!=!,!$+$+,=$,!#,=+,#$!;,@=+$'$$!+%;,-,##+,+,=!,,+++&==!=!$>@=$!,$",
"',&@*=-!=@!=,;=$#=@!++#!$'=!=,,+=$===;=$$=!=+!@=$%)+>@$$+,=#+=#!+$=!,,&,;=++#!+,,++=##!-&+@$@@$$$,@$",
",+$'$+,++=@;##-!@==+!!=!#@==,,+==!+!++=='$=>$#;@!;#+#@@@=>'#=,,#!,$=$+,,+$+$,;+--!$!!#=#,-,=$=$$,=@=",
"==*=%@+#=!==!==$+$$=,#$=!=,++=!$#-!@=!;$==@@>#+!+);++=>+=@!$$$!,#!&,==!#@-!!-&%-&;===$+,)%,,+'$$@!++",
">>,#@$;+$$!=!@>$$=!,+>!!$-+,#!++,+!=+=+=-!>$@@$=;;+,+@!$==,=@=++=,&+-$!#@=,-,--+)#!,$'=%;-%;$@#@$!+!",
"=&$$!,+#'+,@@>=@$$,+$+#!!+,++#%%$$,++!=!==,#>$-=*@+;$$=+$#=@!=$,,!#;,,+=#=++,!+&+#+;+$#+=,%!+;,==!=*",
"-%$$+,,;$$$=!$#$@+$@=$>,++$!,)-!!!+#;@+#@,!=#@=@>$+>>+&=,=$+$@$%-!+++,&#+-+,=$+-$+;;=%,=@+$++&#+;,*$",
"-'$=+,=@!=!@$#$!+!$!$*',,##+#+!!,;+#+=@##=@+@*'=!$'>$#%!$#,>$#=$,&&++%$#%#=+;!$$#%-+%,=!-!=+!=#+,#!$",
"!'='=+'!++=@!+=#=$=#$++#,,%=+=#!#&,!#====$$**@++@@@@=)$$=!=$$$=+=#,--!;-!+!#+++;=!+;!++++%)$=#@@+!,,",
",+$!+=+,@@@$=;=@$!+==&@+,+-,+;+,#+=$=!@@=='$=@''$+@=+>>#==$==+!#=$+;+),++#+$>+;,+$!=#+==&+-#-$*+>==+",
"$%;,@!;=+,+=$$=##+==##='#,&+=&%+##$@@=$==$@=@$@$!$$)+@@'>$++,+#$$#!=+,-+-+==$#=!=++=#+#$==@,,>#@,$@+",
"@#!;!='++!+$@#+,+,-#!++!$,+$+),##'>,++$$=$@@'=!,$,@>'@=@>$+=+,!==!!##!=+;-+#=++,%@=-,=;;=@!=>$$@$&,!",
")!+=$$,%++@$)%;+==,#+-++-,$#+&++$=+#$-!=@''@=;#,;-$$>*@>==#=#++==$$+#='=+,#$#=&)+,=+!!%+$,='=@>=+,*;",
"&-$=@$#,-,#+--$,%-,!,+%;=$--!$=$=#!$##+$@$==!=&&-$*>+=$#++@=,=;,==,#;$=+++=!=+;-,-!=#&!>%+=,@$+;$$-&",
"!!@#++$@$,-+-=$+%&!&;,==$+++$=$=+#==+!!@=!;$#+$$>>'=$$,-=+,#$!==+!+++!@!=$+=+,-!,;$=-$=,=+,$>--=@+)%",
"$$$#+;=+=$!++,-,;+,%%!@,-,,=!==!+#+==#+=+),==$='>+,#=+!$-%)#==>$$,,!+=''++$+,#,##%%+@$,,,,@@#==@=,%,",
"!$#=+,!--$@+-&)-+!%)!=+--!=@=##=!$=@===!&+$#$@@=,@$+#==$);,++#=$=,=#$$==$$$!#;=+#++$',#=!==+=$=+#$#!",
",@==,++,+=;-=!+%+%%=+&%++=$!$-++=+@$++!+++$#==++#-$$$@+++;%+=,=!=$$$$=!=$#'==#,,+!$=!=,!==@=@*=$,==$",
"!+,--=##!!,)=@#=)%,,-,+==!!,,++=+$+,!;,++=,+#%,!;++=$=+=;=-#,+,,$=$'@#@=+%-@>!#,$$+@#==%,!$@'@=$$=@!",
"=,#,-==+&,!==$=+=!!%,&===!;+!#=;#!+,!+=-;+==-)#+,,$+#'$,,+@!=%,,+!'@>@##=$+;%=@$!!$=+=$,===++!+$@*$#",
";,!++=+,+,+@#=!#@++,#=!=+,+,+==-+-##+#,-,;-##+#!,++==#=$+=,,++,,+!=@$+$>$+#,==;*@=!#$-,>$'@%&->=>>$$",
"+,#$$+)++;!#=!!+,,,$'=&,+++,#=++=$===;=#,+#+!+#!#,+=%,@=!+-&&==!$=,@$'=++=#;+$'==;+=$&!$+#'#$@$#@>=+",
"+#!++=+;&;-+'$&;,+,,&$$==+!#,++==#-=!+++,+!!$$==--;,,!!##,,,,==@$,=+$>+#$$+=$#@=-!$=;$#$$,-!'$#=#$$;",
"++#,)++=,,)+=,!$=#-.&+#$'@!+++==!+,+&#!,++$=+!@=-=&-,!!=;+=++$$=#@$=@,+=$=$!=#+,$+=;,==!$+==@>@,&,$'",
"$-%,=--+!+@+;!#;#;%-&,#=$@@!!=$,=!;)&++=!#$#,&++!!&+!+;,+++!!$$##$$!=$=!+=!=!!;!@=-++@$@$'$#>'++$$$+",
"+),=&+$,)=+++-+,);;%-,++$#+=@$#,+$,#=+!+!##+#;,+#%$=!,))-,!=,-$$@=+!+!,'=+==!=$+=++,=+'@'@@===;,!>'@",
"$@=%=>@-,);!$$&);#),,#,%&#!==@>++,=>=+++,,!=--=#,@!#-%%%;#+;!%!@=@@+.$;+*@+=,@!;%$=+,=$,@$,=>+#;+=@$",
"@,-=$,#++)-#$#-#)#,,%,;),!$!##$@'$!$!,+!!!+-;#+#$$#&%,=,##.+%!+=$$+=@!!+-,=@!$#,,$!=@#@=!,+@@###+-=#",
"#=$*$#-+%=;!=-!+#;#++&),==+$+!$++=-,#++!+$+%$%;++;;.%.-+$@&)-!=++@##=*$,!=$;+@='!!-!>#!!!$>%+-&#!=$!"};

103
test/tiled_image.cxx Normal file
View File

@ -0,0 +1,103 @@
//
// "$Id: tiled_image.cxx,v 1.1.2.1 2001/11/24 18:07:58 easysw Exp $"
//
// Fl_Tiled_Image test program for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2001 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library 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
// Library General Public License for more details.
//
// You should have received a copy of the GNU Library General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA.
//
// Please report all bugs and problems to "fltk-bugs@fltk.org".
//
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Pixmap.H>
#include <FL/Fl_Tiled_Image.H>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "tile.xpm"
Fl_Button *b;
Fl_Window *w;
void button_cb(Fl_Widget *,void *) {
w->hide();
}
#include <FL/x.H>
#ifndef WIN32
#include "list_visuals.cxx"
#endif
int visid = -1;
int arg(int argc, char **argv, int &i) {
if (argv[i][1] == 'v') {
if (i+1 >= argc) return 0;
visid = atoi(argv[i+1]);
i += 2;
return 2;
}
return 0;
}
int main(int argc, char **argv) {
#ifndef WIN32
int i = 1;
Fl::args(argc,argv,i,arg);
if (visid >= 0) {
fl_open_display();
XVisualInfo templt; int num;
templt.visualid = visid;
fl_visual = XGetVisualInfo(fl_display, VisualIDMask, &templt, &num);
if (!fl_visual) {
fprintf(stderr, "No visual with id %d, use one of:\n",visid);
list_visuals();
exit(1);
}
fl_colormap = XCreateColormap(fl_display, RootWindow(fl_display,fl_screen),
fl_visual->visual, AllocNone);
fl_xpixel(FL_BLACK); // make sure black is allocated in overlay visuals
} else {
Fl::visual(FL_RGB);
}
#endif
Fl_Window window(400,400); ::w = &window;
Fl_Group group(0,0,400,400);
group.image(new Fl_Tiled_Image(new Fl_Pixmap(tile_xpm)));
group.align(FL_ALIGN_INSIDE);
Fl_Button b(340,365,50,25,"Close"); ::b = &b;
b.callback(button_cb);
group.end();
window.resizable(group);
window.end();
window.show(argc, argv);
return Fl::run();
}
//
// End of "$Id: tiled_image.cxx,v 1.1.2.1 2001/11/24 18:07:58 easysw Exp $".
//