unpack zips in src to better compression
This commit is contained in:
26
sources/z-tools/trunk/zview/plugins/Makefile
Normal file
26
sources/z-tools/trunk/zview/plugins/Makefile
Normal file
@@ -0,0 +1,26 @@
|
||||
PLUGINS = \
|
||||
bmp \
|
||||
degas \
|
||||
eureka \
|
||||
gif \
|
||||
godpaint \
|
||||
img \
|
||||
jpg \
|
||||
neochrome \
|
||||
png \
|
||||
tga \
|
||||
tiff
|
||||
|
||||
default: $(PLUGINS)
|
||||
|
||||
.PHONY: $(PLUGINS)
|
||||
$(PLUGINS):
|
||||
$(MAKE) -C $@ $(MAKECMDGOALS) CROSS=yes
|
||||
|
||||
dist:
|
||||
rm -rf codecs
|
||||
mkdir codecs
|
||||
for f in $(PLUGINS); do cp $$f/*.ldg codecs; done
|
||||
|
||||
clean: $(PLUGINS)
|
||||
rm -f *~ *.ldg
|
||||
13
sources/z-tools/trunk/zview/plugins/bmp/Makefile
Normal file
13
sources/z-tools/trunk/zview/plugins/bmp/Makefile
Normal file
@@ -0,0 +1,13 @@
|
||||
STACKSIZE = 64k
|
||||
OPTIMISATION = -O2 -fomit-frame-pointer -finline-functions
|
||||
CPU = -m68020-60
|
||||
LIB = -lldgserver
|
||||
|
||||
CFLAGS = $(CPU) $(OPTIMISATION) -Wall -I../common
|
||||
LDFLAGS = -nostdlib
|
||||
|
||||
OBJ = $(LDG_STARTUP_OBJ) bmpldg.o
|
||||
|
||||
PROGRAM = bmp.ldg
|
||||
|
||||
include ../../../common.mak
|
||||
365
sources/z-tools/trunk/zview/plugins/bmp/bmpldg.c
Normal file
365
sources/z-tools/trunk/zview/plugins/bmp/bmpldg.c
Normal file
@@ -0,0 +1,365 @@
|
||||
#include "zview.h"
|
||||
|
||||
#define fill4B(a) ( ( 4 - ( (a) % 4 ) ) & 0x03)
|
||||
|
||||
boolean CDECL reader_init( const char *name, IMGINFO info);
|
||||
boolean CDECL reader_read( IMGINFO info, uint8 *buffer);
|
||||
void CDECL reader_get_txt( IMGINFO info, txt_data *txtdata);
|
||||
void CDECL reader_quit( IMGINFO info);
|
||||
void CDECL init( void);
|
||||
|
||||
PROC BMPFunc[] =
|
||||
{
|
||||
{ "plugin_init", "", init},
|
||||
{ "reader_init", "", reader_init},
|
||||
{ "reader_get_txt", "", reader_get_txt},
|
||||
{ "reader_read", "", reader_read},
|
||||
{ "reader_quit", "", reader_quit}
|
||||
};
|
||||
|
||||
|
||||
LDGLIB bmp_plugin =
|
||||
{
|
||||
0x0200, /* Plugin version */
|
||||
5, /* Number of plugin's functions */
|
||||
BMPFunc, /* List of functions */
|
||||
"BMP", /* File's type Handled */
|
||||
LDG_NOT_SHARED, /* The flags NOT_SHARED is used here.. even if zview plugins are reentrant
|
||||
and are shareable, we must use this flags because we don't know if the
|
||||
user has ldg.prg deamon installed on his computer */
|
||||
NULL, /* Function called when the plugin is unloaded */
|
||||
1L /* Howmany file type are supported by this plugin */
|
||||
};
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* uint32 ToL: *
|
||||
* Transform a unsigned long from little to big endian. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* puffer -> pointer to the little endian long to convert. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
uint32 ToL( uint8 * puffer)
|
||||
{
|
||||
return ( puffer[0] | ( puffer[1] << 8) | ( puffer[2] << 16) | ( puffer[3] << 24));
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* uint16 ToS: *
|
||||
* Transform a unsigned word from little to big endian. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* puffer -> pointer to the little endian word to convert. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
uint16 ToS( uint8 *puffer)
|
||||
{
|
||||
return ( puffer[0] | ( puffer[1] << 8));
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_init: *
|
||||
* Open the file "name", fit the "info" struct. ( see zview.h) and make others *
|
||||
* things needed by the decoder. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* name -> The file to open. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL reader_init( const char *name, IMGINFO info)
|
||||
{
|
||||
uint8 buff[4], header_buffer[50], *line_buffer;
|
||||
int16 handle, compressed;
|
||||
uint32 bisize, line_size, skip;
|
||||
|
||||
if ( ( handle = ( int16) Fopen( name, 0)) < 0)
|
||||
return FALSE;
|
||||
|
||||
if ( Fread( handle, 2, buff) != 2)
|
||||
{
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if ( buff[0] != 'B' || buff[1] != 'M' )
|
||||
{
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if ( Fread( handle, 0x10, header_buffer) != 0x10)
|
||||
{
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bisize = ToL( &header_buffer[12]);
|
||||
|
||||
if( bisize != 40uL)
|
||||
{
|
||||
/* OS/2 BMP No supported */
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Window */
|
||||
Fread( handle, 36L, header_buffer);
|
||||
info->width = (uint16)ToL (&header_buffer[0x00]);
|
||||
info->height = (uint16)ToL (&header_buffer[0x04]);
|
||||
info->planes = ToS (&header_buffer[0x0A]);
|
||||
compressed = (int16)ToL (&header_buffer[0x0C]);
|
||||
}
|
||||
|
||||
if( compressed)
|
||||
{
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
switch( info->planes)
|
||||
{
|
||||
case 1:
|
||||
line_size = ( info->width >> 3) + ( info->width % 8 ? 1 : 0);
|
||||
break;
|
||||
case 4:
|
||||
line_size = ( info->width >> 1) + info->width % 2;
|
||||
break;
|
||||
case 8:
|
||||
line_size = info->width;
|
||||
break;
|
||||
case 24:
|
||||
line_size = info->width * 3;
|
||||
break;
|
||||
default:
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
skip = fill4B( line_size);
|
||||
line_size += skip;
|
||||
line_buffer = malloc( line_size + 256L);
|
||||
|
||||
if( line_buffer == NULL)
|
||||
{
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
info->real_width = info->width;
|
||||
info->real_height = info->height;
|
||||
info->components = ( info->planes == 1 ? 1 : 3);
|
||||
info->indexed_color = FALSE;
|
||||
info->memory_alloc = TT_RAM;
|
||||
info->page = 1;
|
||||
info->delay = 0;
|
||||
info->orientation = DOWN_TO_UP;
|
||||
info->num_comments = 0;
|
||||
info->max_comments_length = 0;
|
||||
info->colors = 1uL << (uint32)info->planes;
|
||||
info->_priv_ptr = ( void*)line_buffer;
|
||||
info->_priv_var = ( int32)handle;
|
||||
info->_priv_var_more = ( int32)line_size;
|
||||
|
||||
strcpy( info->info, "Window BitMaP");
|
||||
strcpy( info->compression, "None");
|
||||
|
||||
if( info->planes <= 8)
|
||||
{
|
||||
register int16 i;
|
||||
|
||||
for ( i = 0; i < info->colors; i++)
|
||||
{
|
||||
Fread( handle, 4L, buff);
|
||||
info->palette[i].blue = buff[0];
|
||||
info->palette[i].green = buff[1];
|
||||
info->palette[i].red = buff[2];
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_read: *
|
||||
* This function fits the buffer with image data *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* buffer -> The destination buffer. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL reader_read( IMGINFO info, uint8 *buffer)
|
||||
{
|
||||
int16 width, j, k, i, handle = ( int16)info->_priv_var;
|
||||
uint8 buff[2], *line_buffer = ( uint8*)info->_priv_ptr;
|
||||
uint32 line_size = info->_priv_var_more;
|
||||
|
||||
if( Fread( handle, line_size, line_buffer) != line_size)
|
||||
return FALSE;
|
||||
|
||||
switch( info->planes)
|
||||
{
|
||||
case 1:
|
||||
width = info->width >> 3;
|
||||
|
||||
for ( j = 0; j < width; j++)
|
||||
{
|
||||
buff[0] = line_buffer[j];
|
||||
|
||||
for ( k = 0; k < 8; k++)
|
||||
{
|
||||
if (buff[0] & 0x80)
|
||||
*buffer++ = 0xff;
|
||||
else
|
||||
*buffer++ = 0x00;
|
||||
|
||||
buff[0] = buff[0] << 1;
|
||||
}
|
||||
|
||||
}
|
||||
if ( info->width % 8)
|
||||
{
|
||||
buff[0] = line_buffer[j+1];
|
||||
|
||||
for ( k = 0; k < info->width % 8; k++)
|
||||
{
|
||||
if (buff[0] & 0x80)
|
||||
*buffer++ = 0xff;
|
||||
else
|
||||
*buffer++ = 0x00;
|
||||
|
||||
buff[0] = buff[0] << 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 4:
|
||||
width = info->width >> 1;
|
||||
|
||||
for ( j = 0; j < width; j++)
|
||||
{
|
||||
buff[1] = line_buffer[j] >> 4;
|
||||
buff[2] = line_buffer[j] & 0x0f;
|
||||
*buffer++ = info->palette[buff[1]].red;
|
||||
*buffer++ = info->palette[buff[1]].green;
|
||||
*buffer++ = info->palette[buff[1]].blue;
|
||||
*buffer++ = info->palette[buff[2]].red;
|
||||
*buffer++ = info->palette[buff[2]].green;
|
||||
*buffer++ = info->palette[buff[2]].blue;
|
||||
}
|
||||
if ( info->width % 2)
|
||||
{
|
||||
buff[1] = line_buffer[j+1] >> 4;
|
||||
*buffer++ = info->palette[buff[1]].red;
|
||||
*buffer++ = info->palette[buff[1]].green;
|
||||
*buffer++ = info->palette[buff[1]].blue;
|
||||
}
|
||||
break;
|
||||
|
||||
case 8:
|
||||
for ( j = 0; j < info->width; j++)
|
||||
{
|
||||
*buffer++ = info->palette[line_buffer[j]].red;
|
||||
*buffer++ = info->palette[line_buffer[j]].green;
|
||||
*buffer++ = info->palette[line_buffer[j]].blue;
|
||||
}
|
||||
break;
|
||||
|
||||
case 24:
|
||||
for ( i = j = 0; j < info->width; j++, i += 3)
|
||||
{
|
||||
*buffer++ = line_buffer[i+2];
|
||||
*buffer++ = line_buffer[i+1];
|
||||
*buffer++ = line_buffer[i];
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_get_txt *
|
||||
* This function , like other CDECL function must be always present. *
|
||||
* It fills txtdata struct. with the text present in the picture ( if any). *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* txtdata -> The destination text buffer. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL reader_get_txt( IMGINFO info, txt_data *txtdata)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_quit: *
|
||||
* This function makes the last job like close the file handler and free the *
|
||||
* allocated memory. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL reader_quit( IMGINFO info)
|
||||
{
|
||||
free( info->_priv_ptr);
|
||||
Fclose( ( int16)info->_priv_var);
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL init: *
|
||||
* First function called from zview, in this one, you can make some internal *
|
||||
* initialisation. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* -- *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL init( void)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* int main: *
|
||||
* Main function, his job is to call ldg_init function. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* -- *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* 0 *
|
||||
*==================================================================================*/
|
||||
int main( void)
|
||||
{
|
||||
ldg_init( &bmp_plugin);
|
||||
return( 0);
|
||||
}
|
||||
503
sources/z-tools/trunk/zview/plugins/bmp/copyright
Normal file
503
sources/z-tools/trunk/zview/plugins/bmp/copyright
Normal file
@@ -0,0 +1,503 @@
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser 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
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
58
sources/z-tools/trunk/zview/plugins/common/types2b.h
Normal file
58
sources/z-tools/trunk/zview/plugins/common/types2b.h
Normal file
@@ -0,0 +1,58 @@
|
||||
#ifndef __2B_UNIVERSAL_TYPES__
|
||||
#define __2B_UNIVERSAL_TYPES__
|
||||
|
||||
#ifndef HAVE_INTS_DEFINED
|
||||
typedef signed char int8;
|
||||
typedef unsigned char uint8;
|
||||
typedef signed long int32;
|
||||
typedef unsigned long uint32;
|
||||
#endif
|
||||
typedef int32 fix31;
|
||||
|
||||
#ifdef __GNUC__
|
||||
#ifndef HAVE_INTS_DEFINED
|
||||
typedef signed short int16;
|
||||
typedef unsigned short uint16;
|
||||
#endif
|
||||
#define __2B_HAS64_SUPPORT /* Compiler supports 64 Bit Integers */
|
||||
typedef signed long long int64;
|
||||
typedef unsigned long long uint64;
|
||||
|
||||
/* typedef unsigned long long loff_t; */
|
||||
#else /* Compiler doesn't support 64 Bit Integers */
|
||||
typedef signed int int16;
|
||||
typedef unsigned int uint16;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int32 hi;
|
||||
uint32 lo;
|
||||
} int64;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int32 hi;
|
||||
uint32 lo;
|
||||
} loff_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint32 hi;
|
||||
uint32 lo;
|
||||
} uint64;
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef HAVE_BOOLEAN
|
||||
#ifdef __GNUC__
|
||||
typedef int boolean;
|
||||
typedef int BOOL;
|
||||
#define HAVE_BOOLEAN
|
||||
#else
|
||||
typedef int32 boolean;
|
||||
typedef int32 BOOL;
|
||||
#define HAVE_BOOLEAN
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif
|
||||
121
sources/z-tools/trunk/zview/plugins/common/zview.h
Normal file
121
sources/z-tools/trunk/zview/plugins/common/zview.h
Normal file
@@ -0,0 +1,121 @@
|
||||
/*
|
||||
* LDG plugin.
|
||||
* Copyright (c) 2004-2005 Zorro ( zorro270@yahoo.fr)
|
||||
*
|
||||
* This plugin is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This plugin 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser 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
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "types2b.h"
|
||||
#include <osbind.h>
|
||||
#include <mintbind.h>
|
||||
#include <mint/falcon.h>
|
||||
#include <mint/cookie.h>
|
||||
#include <setjmp.h>
|
||||
#include <mt_gem.h>
|
||||
#include <ldg.h>
|
||||
|
||||
#ifndef TRUE
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
#endif
|
||||
|
||||
#ifndef MIN
|
||||
#define MAX(a,b) ((a)>(b)?(a):(b))
|
||||
#define MIN(a,b) ((a)<(b)?(a):(b))
|
||||
#endif
|
||||
|
||||
#define M_EXIF 0xE1
|
||||
#define UP_TO_DOWN 0
|
||||
#define DOWN_TO_UP 1
|
||||
#define ST_RAM 0
|
||||
#define TT_RAM 1
|
||||
#define GOLBAL_ERROR 0
|
||||
#define DSP_ERROR 1
|
||||
#define PROGRESSIVE_JPG 2
|
||||
#define ALL_OK 3
|
||||
|
||||
typedef struct _img_data
|
||||
{
|
||||
int16 imagecount;
|
||||
uint16 delay[1024];
|
||||
uint8 *image_buf[1024];
|
||||
} img_data;
|
||||
|
||||
|
||||
typedef struct _txt_data
|
||||
{
|
||||
int16 lines; /* Number of lines in the text */
|
||||
int16 max_lines_length; /* The length of the greater line ( in nbr char) */
|
||||
int8 *txt[256];
|
||||
} txt_data;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 red;
|
||||
uint8 green;
|
||||
uint8 blue;
|
||||
} COLOR_MAP;
|
||||
|
||||
|
||||
typedef struct _img_info *IMGINFO;
|
||||
|
||||
typedef struct _img_info
|
||||
{
|
||||
/* Data returned by the decoder Picture's initialisation */
|
||||
uint16 width; /* Picture width */
|
||||
uint16 height; /* Picture Height */
|
||||
uint16 components; /* Picture components */
|
||||
uint16 planes; /* Picture bits by pixel */
|
||||
uint32 colors; /* Picture colors number */
|
||||
int16 orientation; /* picture orientation: UP_TO_DOWN or DONW_TO_UP ( ex: TGA) */
|
||||
uint16 page; /* Number of page/image in the file */
|
||||
uint16 delay; /* Animation delay in 200th sec. between each frame. */
|
||||
uint16 num_comments; /* Lines in the file's comment. ( 0 if none) */
|
||||
uint16 max_comments_length; /* The length of the greater line in the comment */
|
||||
int16 indexed_color; /* Picture has a palette: 0) No 1) Yes */
|
||||
int16 memory_alloc; /* where to do the memory allocation for the reader_read
|
||||
function buffer, possible values are ST_RAM or TT_RAM */
|
||||
COLOR_MAP palette[256]; /* Palette in standard RGB format */
|
||||
|
||||
|
||||
/* data send to the codec */
|
||||
uint32 background_color; /* The wanted background's color in hexa */
|
||||
int16 thumbnail; /* 1 if true else 0.
|
||||
Some format have thumbnail inside the picture, if 1, we
|
||||
want only this thumbnail and not the image itself */
|
||||
uint16 page_wanted; /* The wanted page to get for the reader_read() function
|
||||
The first page is 0 and the last is img_info->page - 1 */
|
||||
|
||||
|
||||
/* The following variable are only for Information Prupose, the zview doesn't
|
||||
use it for decoding routine but only for the information dialog */
|
||||
int8 info[40]; /* Picture's info, for ex: "Gif 87a" */
|
||||
int8 compression[5]; /* Compression type, ex: "LZW" */
|
||||
uint16 real_width; /* Real picture width( if the thumbnail variable is 1) */
|
||||
uint16 real_height; /* Ral picture Height( if the thumbnail variable is 1) */
|
||||
|
||||
|
||||
/* Private data for the plugin */
|
||||
void *_priv_ptr;
|
||||
void *_priv_ptr_more;
|
||||
void *__priv_ptr_more;
|
||||
|
||||
int32 _priv_var;
|
||||
int32 _priv_var_more;
|
||||
} img_info;
|
||||
13
sources/z-tools/trunk/zview/plugins/degas/Makefile
Normal file
13
sources/z-tools/trunk/zview/plugins/degas/Makefile
Normal file
@@ -0,0 +1,13 @@
|
||||
STACKSIZE = 64k
|
||||
OPTIMISATION = -O2 -fomit-frame-pointer -finline-functions
|
||||
CPU = -m68020-60
|
||||
LIB = -lldgserver
|
||||
|
||||
CFLAGS = $(CPU) $(OPTIMISATION) -Wall -I../common
|
||||
LDFLAGS = -nostdlib
|
||||
|
||||
OBJ = $(LDG_STARTUP_OBJ) degasldg.o
|
||||
|
||||
PROGRAM = degas.ldg
|
||||
|
||||
include ../../../common.mak
|
||||
503
sources/z-tools/trunk/zview/plugins/degas/copyright
Normal file
503
sources/z-tools/trunk/zview/plugins/degas/copyright
Normal file
@@ -0,0 +1,503 @@
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser 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
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
427
sources/z-tools/trunk/zview/plugins/degas/degasldg.c
Normal file
427
sources/z-tools/trunk/zview/plugins/degas/degasldg.c
Normal file
@@ -0,0 +1,427 @@
|
||||
#include "zview.h"
|
||||
|
||||
boolean CDECL reader_init( const char *name, IMGINFO info);
|
||||
boolean CDECL reader_read( IMGINFO info, uint8 *buffer);
|
||||
void CDECL reader_get_txt( IMGINFO info, txt_data *txtdata);
|
||||
void CDECL reader_quit( IMGINFO info);
|
||||
void CDECL init( void);
|
||||
|
||||
|
||||
PROC DEGASFunc[] =
|
||||
{
|
||||
{ "plugin_init", "", init},
|
||||
{ "reader_init", "", reader_init},
|
||||
{ "reader_get_txt", "", reader_get_txt},
|
||||
{ "reader_read", "", reader_read},
|
||||
{ "reader_quit", "", reader_quit}
|
||||
};
|
||||
|
||||
|
||||
LDGLIB degas_plugin =
|
||||
{
|
||||
0x0200, /* Plugin version */
|
||||
5, /* Number of plugin's functions */
|
||||
DEGASFunc, /* List of functions */
|
||||
"PI1PI2PI3PC1PC2PC3", /* File's type Handled */
|
||||
LDG_NOT_SHARED, /* The flags NOT_SHARED is used here.. even if zview plugins are reentrant
|
||||
and are shareable, we must use this flags because we don't know if the
|
||||
user has ldg.prg deamon installed on his computer */
|
||||
NULL, /* Function called when the plugin is unloaded */
|
||||
6L /* Howmany file type are supported by this plugin */
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint16 compression : 1;
|
||||
uint16 reserved0 : 13;
|
||||
uint16 resolution : 2;
|
||||
uint16 palette[16];
|
||||
} DEGASHDR;
|
||||
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_init: *
|
||||
* Open the file "name", fit the "info" struct. ( see zview.h) and make others *
|
||||
* things needed by the decoder. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* name -> The file to open. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL reader_init( const char *name, IMGINFO info)
|
||||
{
|
||||
int16 handle;
|
||||
int32 position, file_size;
|
||||
DEGASHDR *degas;
|
||||
|
||||
if ( ( handle = ( int16)Fopen( name, 0)) < 0)
|
||||
return FALSE;
|
||||
|
||||
file_size = Fseek( 0L, handle, 2);
|
||||
|
||||
if( file_size > 33000L)
|
||||
{
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
Fseek( 0L, handle, 0);
|
||||
|
||||
degas = ( DEGASHDR *)malloc( file_size);
|
||||
|
||||
if ( degas == NULL)
|
||||
{
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if ( Fread( handle, file_size, degas) != file_size)
|
||||
{
|
||||
free( degas);
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
Fclose( handle);
|
||||
|
||||
info->planes = 1 << ( 2 - degas->resolution);
|
||||
|
||||
switch( info->planes)
|
||||
{
|
||||
case 4:
|
||||
info->width = 320;
|
||||
info->height = 200;
|
||||
info->components = 3;
|
||||
info->indexed_color = TRUE;
|
||||
info->colors = 16;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
info->width = 640;
|
||||
info->height = 200;
|
||||
info->components = 3;
|
||||
info->indexed_color = TRUE;
|
||||
info->colors = 4;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
info->width = 640;
|
||||
info->height = 400;
|
||||
info->components = 1;
|
||||
info->indexed_color = FALSE;
|
||||
info->colors = 2;
|
||||
break;
|
||||
|
||||
default:
|
||||
free( degas);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
position = sizeof( DEGASHDR);
|
||||
|
||||
info->real_width = info->width;
|
||||
info->real_height = info->height;
|
||||
info->memory_alloc = TT_RAM;
|
||||
info->page = 1;
|
||||
info->delay = 0;
|
||||
info->orientation = UP_TO_DOWN;
|
||||
info->num_comments = 0;
|
||||
info->max_comments_length = 0;
|
||||
info->_priv_ptr = ( void*)degas;
|
||||
info->_priv_var_more = position;
|
||||
|
||||
strcpy( info->info, "Degas");
|
||||
|
||||
if( degas->compression)
|
||||
{
|
||||
uint8 *compress_buffer = malloc( 320L);
|
||||
|
||||
if( compress_buffer == NULL)
|
||||
{
|
||||
free( degas);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
info->_priv_ptr_more = ( void*)compress_buffer;
|
||||
|
||||
strcpy( info->compression, "Yes");
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy( info->compression, "None");
|
||||
info->_priv_ptr_more = NULL;
|
||||
}
|
||||
|
||||
|
||||
if( info->indexed_color)
|
||||
{
|
||||
register int16 i;
|
||||
|
||||
for ( i = 0; i < info->colors; i++)
|
||||
{
|
||||
info->palette[i].red = ((( degas->palette[i] >> 7) & 0xE) + (( degas->palette[i] >> 11) & 0x1)) * 0x11;
|
||||
info->palette[i].green = ((( degas->palette[i] >> 3) & 0xE) + (( degas->palette[i] >> 7) & 0x1)) * 0x11;
|
||||
info->palette[i].blue = ((( degas->palette[i] << 1) & 0xE) + (( degas->palette[i] >> 3) & 0x1)) * 0x11;
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
static int16 read_line( int16 bpl, uint8 *src, uint8 *compress_buffer)
|
||||
{
|
||||
int16 x, n, c;
|
||||
int16 count = 0;
|
||||
|
||||
/* decompress the line */
|
||||
for( x = 0; x < bpl;)
|
||||
{
|
||||
n = src[count++];
|
||||
|
||||
if( n <= 127) /* (n+1) literal bytes */
|
||||
{
|
||||
n++;
|
||||
|
||||
if( x + n > bpl)
|
||||
return -1;
|
||||
|
||||
do
|
||||
{
|
||||
compress_buffer[x++] = src[count++];
|
||||
}while ( --n > 0);
|
||||
}
|
||||
else /* next byte is repeated (257-n) times */
|
||||
{
|
||||
n = 257 - n;
|
||||
|
||||
if( x + n > bpl)
|
||||
return -1;
|
||||
|
||||
c = src[count++];
|
||||
|
||||
do {
|
||||
compress_buffer[x++] = c;
|
||||
} while (--n > 0);
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_read: *
|
||||
* This function fits the buffer with image data *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* buffer -> The destination buffer. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL reader_read( IMGINFO info, uint8 *buffer)
|
||||
{
|
||||
DEGASHDR *degas = ( DEGASHDR*)info->_priv_ptr;
|
||||
uint8 *l, *s = ( uint8*)degas + info->_priv_var_more;
|
||||
uint8 *compress_buffer = ( uint8*)info->_priv_ptr_more;
|
||||
uint16 x, c, p0, p1, p2, p3;
|
||||
int16 count;
|
||||
|
||||
if( degas->compression)
|
||||
{
|
||||
count = read_line(( info->width * info->planes) >> 3, s, compress_buffer);
|
||||
|
||||
if( count == -1)
|
||||
return FALSE;
|
||||
|
||||
info->_priv_var_more += count;
|
||||
|
||||
switch( info->planes)
|
||||
{
|
||||
case 4:
|
||||
for( x = 0, l = compress_buffer; x < info->width; l += 2)
|
||||
{
|
||||
p0 = (l[ 0] << 8) | l[ 1];
|
||||
p1 = (l[ 40] << 8) | l[ 41];
|
||||
p2 = (l[ 80] << 8) | l[ 81];
|
||||
p3 = (l[120] << 8) | l[121];
|
||||
|
||||
for ( c = 0; c < 16; c++)
|
||||
{
|
||||
buffer[x++] = ((p0 >> 15) & 1) | ((p1 >> 14) & 2) | ((p2 >> 13) & 4) | ((p3 >> 12) & 8);
|
||||
p0 <<= 1;
|
||||
p1 <<= 1;
|
||||
p2 <<= 1;
|
||||
p3 <<= 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
for ( x = 0, l = compress_buffer; x < info->width; l += 2)
|
||||
{
|
||||
p0 = (l[0] << 8) | l[1];
|
||||
p1 = (l[80] << 8) | l[81];
|
||||
|
||||
for (c = 0; c < 16; c++)
|
||||
{
|
||||
buffer[x++] = ((p0 >> 15) & 1) | ((p1 >> 14) & 2);
|
||||
p0 <<= 1;
|
||||
p1 <<= 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
for (x = 0, l = compress_buffer; x < info->width; l += 2)
|
||||
{
|
||||
p0 = ( l[0] << 8) | l[1];
|
||||
|
||||
for ( c = 0; c < 16; c++)
|
||||
{
|
||||
buffer[x++] = ((p0 >> 15) & 1);
|
||||
p0 <<= 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
switch( info->planes)
|
||||
{
|
||||
case 4:
|
||||
for( x = 0, l = s; x < info->width; l += 8)
|
||||
{
|
||||
p0 = ( l[0] << 8) | l[1];
|
||||
p1 = ( l[2] << 8) | l[3];
|
||||
p2 = ( l[4] << 8) | l[5];
|
||||
p3 = ( l[6] << 8) | l[7];
|
||||
|
||||
for ( c = 0; c < 16; c++)
|
||||
{
|
||||
buffer[x++] = ((p0 >> 15) & 1) | ((p1 >> 14) & 2) | ((p2 >> 13) & 4) | ((p3 >> 12) & 8);
|
||||
p0 <<= 1;
|
||||
p1 <<= 1;
|
||||
p2 <<= 1;
|
||||
p3 <<= 1;
|
||||
}
|
||||
}
|
||||
info->_priv_var_more += 160;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
for ( x = 0, l = s; x < info->width; l += 4)
|
||||
{
|
||||
p0 = (l[0] << 8) | l[1];
|
||||
p1 = (l[2] << 8) | l[3];
|
||||
|
||||
for (c = 0; c < 16; c++)
|
||||
{
|
||||
buffer[x++] = ((p0 >> 15) & 1) | ((p1 >> 14) & 2);
|
||||
p0 <<= 1;
|
||||
p1 <<= 1;
|
||||
}
|
||||
}
|
||||
info->_priv_var_more += 160;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
for (x = 0, l = s; x < info->width; l += 2)
|
||||
{
|
||||
p0 = ( l[0] << 8) | l[1];
|
||||
|
||||
for ( c = 0; c < 16; c++)
|
||||
{
|
||||
buffer[x++] = ((p0 >> 15) & 1);
|
||||
p0 <<= 1;
|
||||
}
|
||||
}
|
||||
info->_priv_var_more += 80;
|
||||
break;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_get_txt *
|
||||
* This function , like other CDECL function must be always present. *
|
||||
* It fills txtdata struct. with the text present in the picture ( if any). *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* txtdata -> The destination text buffer. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL reader_get_txt( IMGINFO info, txt_data *txtdata)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_quit: *
|
||||
* This function makes the last job like close the file handler and free the *
|
||||
* allocated memory. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL reader_quit( IMGINFO info)
|
||||
{
|
||||
DEGASHDR *degas = ( DEGASHDR*)info->_priv_ptr;
|
||||
uint8 *compress_buffer = ( uint8*)info->_priv_ptr_more;
|
||||
|
||||
free( degas);
|
||||
|
||||
if( compress_buffer)
|
||||
free( compress_buffer);
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL init: *
|
||||
* First function called from zview, in this one, you can make some internal *
|
||||
* initialisation. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* -- *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL init( void)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* int main: *
|
||||
* Main function, his job is to call ldg_init function. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* -- *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* 0 *
|
||||
*==================================================================================*/
|
||||
int main( void)
|
||||
{
|
||||
ldg_init( °as_plugin);
|
||||
return( 0);
|
||||
}
|
||||
13
sources/z-tools/trunk/zview/plugins/eureka/Makefile
Normal file
13
sources/z-tools/trunk/zview/plugins/eureka/Makefile
Normal file
@@ -0,0 +1,13 @@
|
||||
STACKSIZE = 64k
|
||||
OPTIMISATION = -O2 -fomit-frame-pointer -finline-functions
|
||||
CPU = -m68020-60
|
||||
LIB = -lldgserver
|
||||
|
||||
CFLAGS = $(CPU) $(OPTIMISATION) -Wall -I../common
|
||||
LDFLAGS = -nostdlib
|
||||
|
||||
OBJ = $(LDG_STARTUP_OBJ) rawldg.o
|
||||
|
||||
PROGRAM = eureka.ldg
|
||||
|
||||
include ../../../common.mak
|
||||
770
sources/z-tools/trunk/zview/plugins/eureka/colormap.h
Normal file
770
sources/z-tools/trunk/zview/plugins/eureka/colormap.h
Normal file
@@ -0,0 +1,770 @@
|
||||
int16 red[]={ 996,0
|
||||
,992
|
||||
,0
|
||||
,0
|
||||
,0
|
||||
,992
|
||||
,992
|
||||
,792
|
||||
,490
|
||||
,490
|
||||
,0
|
||||
,0
|
||||
,0
|
||||
,490
|
||||
,490
|
||||
,996
|
||||
,988
|
||||
,980
|
||||
,973
|
||||
,965
|
||||
,957
|
||||
,949
|
||||
,941
|
||||
,933
|
||||
,925
|
||||
,918
|
||||
,910
|
||||
,902
|
||||
,890
|
||||
,882
|
||||
,875
|
||||
,867
|
||||
,859
|
||||
,851
|
||||
,843
|
||||
,835
|
||||
,827
|
||||
,820
|
||||
,812
|
||||
,804
|
||||
,796
|
||||
,788
|
||||
,780
|
||||
,773
|
||||
,765
|
||||
,757
|
||||
,749
|
||||
,741
|
||||
,733
|
||||
,725
|
||||
,718
|
||||
,710
|
||||
,702
|
||||
,690
|
||||
,682
|
||||
,675
|
||||
,667
|
||||
,659
|
||||
,651
|
||||
,643
|
||||
,635
|
||||
,627
|
||||
,620
|
||||
,612
|
||||
,604
|
||||
,596
|
||||
,588
|
||||
,580
|
||||
,573
|
||||
,565
|
||||
,557
|
||||
,549
|
||||
,541
|
||||
,533
|
||||
,525
|
||||
,518
|
||||
,510
|
||||
,502
|
||||
,490
|
||||
,482
|
||||
,475
|
||||
,467
|
||||
,459
|
||||
,451
|
||||
,443
|
||||
,435
|
||||
,427
|
||||
,420
|
||||
,412
|
||||
,404
|
||||
,396
|
||||
,388
|
||||
,380
|
||||
,373
|
||||
,365
|
||||
,357
|
||||
,365
|
||||
,373
|
||||
,380
|
||||
,388
|
||||
,396
|
||||
,404
|
||||
,412
|
||||
,420
|
||||
,427
|
||||
,435
|
||||
,443
|
||||
,451
|
||||
,459
|
||||
,467
|
||||
,475
|
||||
,482
|
||||
,490
|
||||
,502
|
||||
,510
|
||||
,518
|
||||
,525
|
||||
,533
|
||||
,541
|
||||
,549
|
||||
,557
|
||||
,565
|
||||
,573
|
||||
,580
|
||||
,588
|
||||
,596
|
||||
,604
|
||||
,612
|
||||
,620
|
||||
,627
|
||||
,635
|
||||
,643
|
||||
,651
|
||||
,659
|
||||
,667
|
||||
,675
|
||||
,682
|
||||
,690
|
||||
,702
|
||||
,710
|
||||
,718
|
||||
,725
|
||||
,733
|
||||
,741
|
||||
,749
|
||||
,757
|
||||
,765
|
||||
,773
|
||||
,780
|
||||
,788
|
||||
,796
|
||||
,804
|
||||
,812
|
||||
,820
|
||||
,827
|
||||
,835
|
||||
,843
|
||||
,851
|
||||
,859
|
||||
,867
|
||||
,875
|
||||
,882
|
||||
,890
|
||||
,902
|
||||
,910
|
||||
,918
|
||||
,925
|
||||
,933
|
||||
,941
|
||||
,949
|
||||
,957
|
||||
,965
|
||||
,973
|
||||
,980
|
||||
,988
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
};
|
||||
|
||||
int16 green[]={996,0
|
||||
,0
|
||||
,992
|
||||
,0
|
||||
,992
|
||||
,992
|
||||
,0
|
||||
,792
|
||||
,490
|
||||
,0
|
||||
,490
|
||||
,0
|
||||
,490
|
||||
,490
|
||||
,0
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,996
|
||||
,988
|
||||
,980
|
||||
,973
|
||||
,965
|
||||
,957
|
||||
,949
|
||||
,941
|
||||
,933
|
||||
,925
|
||||
,918
|
||||
,910
|
||||
,902
|
||||
,890
|
||||
,882
|
||||
,875
|
||||
,867
|
||||
,859
|
||||
,851
|
||||
,843
|
||||
,835
|
||||
,827
|
||||
,820
|
||||
,812
|
||||
,804
|
||||
,796
|
||||
,788
|
||||
,780
|
||||
,773
|
||||
,765
|
||||
,757
|
||||
,749
|
||||
,741
|
||||
,733
|
||||
,725
|
||||
,718
|
||||
,710
|
||||
,702
|
||||
,690
|
||||
,682
|
||||
,675
|
||||
,667
|
||||
,659
|
||||
,651
|
||||
,643
|
||||
,635
|
||||
,627
|
||||
,620
|
||||
,612
|
||||
,604
|
||||
,596
|
||||
,588
|
||||
,580
|
||||
,573
|
||||
,565
|
||||
,557
|
||||
,549
|
||||
,541
|
||||
,533
|
||||
,525
|
||||
,518
|
||||
,510
|
||||
,502
|
||||
,490
|
||||
,482
|
||||
,475
|
||||
,467
|
||||
,459
|
||||
,451
|
||||
,443
|
||||
,435
|
||||
,427
|
||||
,420
|
||||
,412
|
||||
,404
|
||||
,396
|
||||
,388
|
||||
,380
|
||||
,373
|
||||
,365
|
||||
,357
|
||||
,365
|
||||
,373
|
||||
,380
|
||||
,388
|
||||
,396
|
||||
,404
|
||||
,412
|
||||
,420
|
||||
,427
|
||||
,435
|
||||
,443
|
||||
,451
|
||||
,459
|
||||
,467
|
||||
,475
|
||||
,482
|
||||
,490
|
||||
,502
|
||||
,510
|
||||
,518
|
||||
,525
|
||||
,533
|
||||
,541
|
||||
,549
|
||||
,557
|
||||
,565
|
||||
,573
|
||||
,580
|
||||
,588
|
||||
,596
|
||||
,604
|
||||
,612
|
||||
,620
|
||||
,627
|
||||
,635
|
||||
,643
|
||||
,651
|
||||
,659
|
||||
,667
|
||||
,675
|
||||
,682
|
||||
,690
|
||||
,702
|
||||
,710
|
||||
,718
|
||||
,725
|
||||
,733
|
||||
,741
|
||||
,749
|
||||
,757
|
||||
,765
|
||||
,773
|
||||
,780
|
||||
,788
|
||||
,796
|
||||
,804
|
||||
,812
|
||||
,820
|
||||
,827
|
||||
,835
|
||||
,843
|
||||
,851
|
||||
,859
|
||||
,867
|
||||
,875
|
||||
,882
|
||||
,890
|
||||
,902
|
||||
,910
|
||||
,918
|
||||
,925
|
||||
,933
|
||||
,941
|
||||
,949
|
||||
,957
|
||||
,965
|
||||
,973
|
||||
,980
|
||||
,988
|
||||
};
|
||||
|
||||
int16 blue[]={996,0
|
||||
,0
|
||||
,0
|
||||
,992
|
||||
,992
|
||||
,0
|
||||
,992
|
||||
,792
|
||||
,490
|
||||
,0
|
||||
,0
|
||||
,490
|
||||
,490
|
||||
,0
|
||||
,490
|
||||
,306
|
||||
,314
|
||||
,322
|
||||
,329
|
||||
,337
|
||||
,345
|
||||
,353
|
||||
,361
|
||||
,369
|
||||
,376
|
||||
,384
|
||||
,392
|
||||
,404
|
||||
,412
|
||||
,420
|
||||
,427
|
||||
,435
|
||||
,443
|
||||
,451
|
||||
,459
|
||||
,467
|
||||
,475
|
||||
,482
|
||||
,490
|
||||
,498
|
||||
,506
|
||||
,514
|
||||
,522
|
||||
,529
|
||||
,537
|
||||
,545
|
||||
,553
|
||||
,561
|
||||
,569
|
||||
,576
|
||||
,584
|
||||
,592
|
||||
,604
|
||||
,612
|
||||
,620
|
||||
,627
|
||||
,635
|
||||
,643
|
||||
,651
|
||||
,659
|
||||
,667
|
||||
,675
|
||||
,682
|
||||
,690
|
||||
,698
|
||||
,706
|
||||
,714
|
||||
,722
|
||||
,729
|
||||
,737
|
||||
,745
|
||||
,753
|
||||
,761
|
||||
,769
|
||||
,776
|
||||
,784
|
||||
,792
|
||||
,804
|
||||
,812
|
||||
,820
|
||||
,827
|
||||
,835
|
||||
,843
|
||||
,851
|
||||
,859
|
||||
,867
|
||||
,875
|
||||
,882
|
||||
,890
|
||||
,898
|
||||
,906
|
||||
,914
|
||||
,922
|
||||
,929
|
||||
,937
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,945
|
||||
,937
|
||||
,929
|
||||
,922
|
||||
,914
|
||||
,906
|
||||
,898
|
||||
,890
|
||||
,882
|
||||
,875
|
||||
,867
|
||||
,859
|
||||
,851
|
||||
,843
|
||||
,835
|
||||
,827
|
||||
,820
|
||||
,812
|
||||
,804
|
||||
,792
|
||||
,784
|
||||
,776
|
||||
,769
|
||||
,761
|
||||
,753
|
||||
,745
|
||||
,737
|
||||
,729
|
||||
,722
|
||||
,714
|
||||
,706
|
||||
,698
|
||||
,690
|
||||
,682
|
||||
,675
|
||||
,667
|
||||
,659
|
||||
,651
|
||||
,643
|
||||
,635
|
||||
,627
|
||||
,620
|
||||
,612
|
||||
,604
|
||||
,592
|
||||
,584
|
||||
,576
|
||||
,569
|
||||
,561
|
||||
,553
|
||||
,545
|
||||
,537
|
||||
,529
|
||||
,522
|
||||
,514
|
||||
,506
|
||||
,498
|
||||
,490
|
||||
,482
|
||||
,475
|
||||
,467
|
||||
,459
|
||||
,451
|
||||
,443
|
||||
,435
|
||||
,427
|
||||
,420
|
||||
,412
|
||||
,404
|
||||
,392
|
||||
,384
|
||||
,376
|
||||
,369
|
||||
,361
|
||||
,353
|
||||
,345
|
||||
,337
|
||||
,329
|
||||
,322
|
||||
,314
|
||||
};
|
||||
503
sources/z-tools/trunk/zview/plugins/eureka/copyright
Normal file
503
sources/z-tools/trunk/zview/plugins/eureka/copyright
Normal file
@@ -0,0 +1,503 @@
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser 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
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
255
sources/z-tools/trunk/zview/plugins/eureka/rawldg.c
Normal file
255
sources/z-tools/trunk/zview/plugins/eureka/rawldg.c
Normal file
@@ -0,0 +1,255 @@
|
||||
#include "zview.h"
|
||||
#include "colormap.h"
|
||||
|
||||
boolean CDECL reader_init( const char *name, IMGINFO info);
|
||||
boolean CDECL reader_read( IMGINFO info, uint8 *buffer);
|
||||
void CDECL reader_get_txt( IMGINFO info, txt_data *txtdata);
|
||||
void CDECL reader_quit( IMGINFO info);
|
||||
void CDECL init( void);
|
||||
|
||||
|
||||
PROC RAWFunc[] =
|
||||
{
|
||||
{ "plugin_init", "", init},
|
||||
{ "reader_init", "", reader_init},
|
||||
{ "reader_get_txt", "", reader_get_txt},
|
||||
{ "reader_read", "", reader_read},
|
||||
{ "reader_quit", "", reader_quit}
|
||||
};
|
||||
|
||||
|
||||
LDGLIB raw_plugin =
|
||||
{
|
||||
0x0200, /* Plugin version */
|
||||
5, /* Number of plugin's functions */
|
||||
RAWFunc, /* List of functions */
|
||||
"RAW", /* File's type Handled */
|
||||
LDG_NOT_SHARED, /* The flags NOT_SHARED is used here.. even if zview plugins are reentrant
|
||||
and are shareable, we must use this flags because we don't know if the
|
||||
user has ldg.prg deamon installed on his computer */
|
||||
NULL, /* Function called when the plugin is unloaded */
|
||||
1L /* Howmany file type are supported by this plugin */
|
||||
};
|
||||
|
||||
|
||||
void swap( uint8 *a, uint8 *b)
|
||||
{
|
||||
uint8 temp;
|
||||
|
||||
temp = *a;
|
||||
|
||||
*a = *b;
|
||||
|
||||
*b = temp;
|
||||
}
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_init: *
|
||||
* Open the file "name", fit the "info" struct. ( see zview.h) and make others *
|
||||
* things needed by the decoder. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* name -> The file to open. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL reader_init( const char *name, IMGINFO info)
|
||||
{
|
||||
int16 handle;
|
||||
int32 file_size, palette[768];
|
||||
uint8 header[4], *img_buffer;
|
||||
|
||||
if ( ( handle = ( int16)Fopen( name, 0)) < 0)
|
||||
return FALSE;
|
||||
|
||||
file_size = Fseek( 0L, handle, 2) - 4L;
|
||||
|
||||
Fseek( 0L, handle, 0);
|
||||
|
||||
if ( Fread( handle, 4, header) != 4)
|
||||
{
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
info->planes = 8;
|
||||
info->width = *((uint16*)&header[0]);
|
||||
info->height = *((uint16*)&header[2]);
|
||||
info->colors = 256;
|
||||
info->components = 3;
|
||||
info->real_width = info->width;
|
||||
info->real_height = info->height;
|
||||
info->memory_alloc = TT_RAM;
|
||||
info->page = 1;
|
||||
info->delay = 0;
|
||||
info->orientation = UP_TO_DOWN;
|
||||
info->num_comments = 0;
|
||||
info->max_comments_length = 0;
|
||||
info->_priv_var = ( uint32)handle;
|
||||
|
||||
if( ( info->width * info->height) == file_size)
|
||||
{
|
||||
info->indexed_color = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 3072 is the palette's size */
|
||||
file_size -= 3072;
|
||||
|
||||
if( ( info->width * info->height) != file_size)
|
||||
{
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
info->indexed_color = TRUE;
|
||||
}
|
||||
|
||||
strcpy( info->info, "Eureka RAW Picture");
|
||||
strcpy( info->compression, "None");
|
||||
|
||||
if( info->indexed_color == TRUE)
|
||||
{
|
||||
register int16 i;
|
||||
|
||||
Fread( handle, 3072, palette);
|
||||
|
||||
for ( i = 0; i < info->colors; i++)
|
||||
{
|
||||
info->palette[i].red = ( uint8)(( palette[i] >> 24) & 0xffL);
|
||||
info->palette[i].green = ( uint8)(( palette[i] >> 16) & 0xffL);
|
||||
info->palette[i].blue = ( uint8)(( palette[i] >> 8 ) & 0xffL);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
register int16 i;
|
||||
|
||||
info->indexed_color = TRUE;
|
||||
|
||||
for ( i = 0; i < info->colors; i++)
|
||||
{
|
||||
info->palette[i].red = ( uint8)((( uint32)red[i] * 255L) / 1000L);
|
||||
info->palette[i].green = ( uint8)((( uint32)red[i] * 255L) / 1000L);
|
||||
info->palette[i].blue = ( uint8)((( uint32)red[i] * 255L) / 1000L);
|
||||
}
|
||||
}
|
||||
|
||||
img_buffer = ( uint8*)malloc( file_size);
|
||||
info->_priv_ptr = ( void*)img_buffer;
|
||||
info->_priv_ptr_more = ( void*)img_buffer;
|
||||
|
||||
if( img_buffer == NULL)
|
||||
{
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if( Fread( handle, file_size, img_buffer) != file_size)
|
||||
{
|
||||
free( img_buffer);
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
register uint16 i, j, w = info->width >> 1;
|
||||
|
||||
for( i = 0; i < info->height; i++)
|
||||
for( j = 0; j < w; j++)
|
||||
swap( &img_buffer[(uint32)info->width * (uint32)i + (uint32)j], &img_buffer[(uint32)info->width * (uint32)i + (uint32)info->width - 1L - (uint32)j]);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_read: *
|
||||
* This function fits the buffer with image data *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* buffer -> The destination buffer. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL reader_read( IMGINFO info, uint8 *buffer)
|
||||
{
|
||||
memcpy( buffer, ( uint8*)info->_priv_ptr_more, info->width);
|
||||
info->_priv_ptr_more = ( uint8*)info->_priv_ptr_more + info->width;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_get_txt *
|
||||
* This function , like other CDECL function must be always present. *
|
||||
* It fills txtdata struct. with the text present in the picture ( if any). *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* txtdata -> The destination text buffer. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL reader_get_txt( IMGINFO info, txt_data *txtdata)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_quit: *
|
||||
* This function makes the last job like close the file handler and free the *
|
||||
* allocated memory. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL reader_quit( IMGINFO info)
|
||||
{
|
||||
free( ( uint8*)info->_priv_ptr);
|
||||
Fclose( ( int16)info->_priv_var);
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL init: *
|
||||
* First function called from zview, in this one, you can make some internal *
|
||||
* initialisation. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* -- *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL init( void)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* int main: *
|
||||
* Main function, his job is to call ldg_init function. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* -- *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* 0 *
|
||||
*==================================================================================*/
|
||||
int main( void)
|
||||
{
|
||||
ldg_init( &raw_plugin);
|
||||
return( 0);
|
||||
}
|
||||
13
sources/z-tools/trunk/zview/plugins/gif/Makefile
Normal file
13
sources/z-tools/trunk/zview/plugins/gif/Makefile
Normal file
@@ -0,0 +1,13 @@
|
||||
STACKSIZE = 64k
|
||||
OPTIMISATION = -O2 -fomit-frame-pointer
|
||||
CPU = -m68020-60
|
||||
LIB = -lgif -lldgserver
|
||||
|
||||
CFLAGS = $(CPU) $(OPTIMISATION) -Wall -I../common
|
||||
LDFLAGS = -nostdlib
|
||||
|
||||
OBJ = $(LDG_STARTUP_OBJ) gifldg.o
|
||||
|
||||
PROGRAM = gif.ldg
|
||||
|
||||
include ../../../common.mak
|
||||
503
sources/z-tools/trunk/zview/plugins/gif/copyright
Normal file
503
sources/z-tools/trunk/zview/plugins/gif/copyright
Normal file
@@ -0,0 +1,503 @@
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser 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
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
498
sources/z-tools/trunk/zview/plugins/gif/gifldg.c
Normal file
498
sources/z-tools/trunk/zview/plugins/gif/gifldg.c
Normal file
@@ -0,0 +1,498 @@
|
||||
#include <gif_lib.h>
|
||||
#include "zview.h"
|
||||
|
||||
/* Prototypes */
|
||||
boolean CDECL reader_init( const char *name, IMGINFO info);
|
||||
void CDECL reader_get_txt( IMGINFO info, txt_data *txtdata);
|
||||
boolean CDECL reader_read( IMGINFO info, uint8 *buffer);
|
||||
uint8* CDECL reader_get_page_addr( IMGINFO info);
|
||||
void CDECL reader_quit( IMGINFO info);
|
||||
void CDECL init( void);
|
||||
|
||||
|
||||
PROC GIFFunc[] =
|
||||
{
|
||||
{ "plugin_init", "", init},
|
||||
{ "reader_init", "", reader_init},
|
||||
{ "reader_get_txt", "", reader_get_txt},
|
||||
{ "reader_read", "", reader_read},
|
||||
{ "reader_quit", "", reader_quit}
|
||||
};
|
||||
|
||||
|
||||
LDGLIB gif_plugin =
|
||||
{
|
||||
0x0200, /* Plugin version */
|
||||
5, /* Number of plugin's functions */
|
||||
GIFFunc, /* List of functions */
|
||||
"GIF", /* File's type Handled */
|
||||
LDG_NOT_SHARED, /* The flags NOT_SHARED is used here.. even if zview plugins are reentrant
|
||||
and are shareable, we must use this flags because we don't know if the
|
||||
user has ldg.prg deamon installed on his computer */
|
||||
NULL, /* Function called when the plugin is unloaded */
|
||||
1L /* Howmany file type are supported by this plugin */
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* void decodecolormap: *
|
||||
* Convert 8 bits + palette data to standard RGB *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* src -> The 8 bits source. *
|
||||
* dst -> The destination where put the RGB data. *
|
||||
* cm -> The source's colormap. *
|
||||
* width -> picture's width. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
static inline void decodecolormap( uint8 *src, uint8 *dst, GifColorType *cm, uint16 width, int16 trans_index, uint32 transparent_color, int16 draw_trans)
|
||||
{
|
||||
GifColorType *cmentry;
|
||||
register uint16 i;
|
||||
|
||||
for( i = 0; i < width; i++)
|
||||
{
|
||||
if( src[i] == trans_index)
|
||||
{
|
||||
if( draw_trans == FALSE)
|
||||
{
|
||||
dst += 3;
|
||||
continue;
|
||||
}
|
||||
|
||||
*(dst++) = ( ( transparent_color >> 16) & 0xFF);
|
||||
*(dst++) = ( ( transparent_color >> 8) & 0xFF);
|
||||
*(dst++) = ( ( transparent_color) & 0xFF);
|
||||
}
|
||||
else
|
||||
{
|
||||
cmentry = &cm[src[i]];
|
||||
*(dst++) = cmentry->Red;
|
||||
*(dst++) = cmentry->Green;
|
||||
*(dst++) = cmentry->Blue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_init: *
|
||||
* Open the file "name", fit the "info" struct. ( see zview.h) and make others *
|
||||
* things needed by the decoder. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* name -> The file to open. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL reader_init( const char *name, IMGINFO info)
|
||||
{
|
||||
static int16 InterlacedOffset[] = { 0, 4, 2, 1 }, InterlacedJumps[] = { 8, 8, 4, 2 };
|
||||
int16 i, j, error = 0, transpar = -1, interlace = FALSE, draw_trans = TRUE;
|
||||
uint16 delaycount = 0;
|
||||
GifFileType *gif = NULL;
|
||||
GifRecordType rec;
|
||||
txt_data comment = { 0,};
|
||||
img_data img = { 0,};
|
||||
|
||||
if ( ( gif = DGifOpenFileName ( name)) == NULL)
|
||||
return FALSE;
|
||||
|
||||
img.imagecount = 0;
|
||||
|
||||
do
|
||||
{
|
||||
if( DGifGetRecordType (gif, &rec) == GIF_ERROR)
|
||||
{
|
||||
error = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
if ( rec == IMAGE_DESC_RECORD_TYPE)
|
||||
{
|
||||
if ( DGifGetImageDesc( gif) == GIF_ERROR)
|
||||
{
|
||||
error = 1;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
GifImageDesc *dsc = &gif->Image;
|
||||
ColorMapObject *map = ( dsc->ColorMap ? dsc->ColorMap : gif->SColorMap);
|
||||
int Row, Col, Width, Height;
|
||||
int32 line_size;
|
||||
uint8 *line_buffer = NULL, *img_buffer;
|
||||
|
||||
if( map == NULL)
|
||||
{
|
||||
error = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
Row = dsc->Top; /* Image Position relative to Screen. */
|
||||
Col = dsc->Left;
|
||||
Width = dsc->Width;
|
||||
Height = dsc->Height;
|
||||
|
||||
/* if ( Col + Width > gif->SWidth || Row + Height > gif->SWidth)
|
||||
{
|
||||
error = 1;
|
||||
break;
|
||||
}
|
||||
*/
|
||||
info->components = ( map->BitsPerPixel == 1 ? 1 : 3);
|
||||
info->planes = map->BitsPerPixel;
|
||||
info->colors = map->ColorCount;
|
||||
info->width = ( uint16)gif->SWidth;
|
||||
info->height = ( uint16)gif->SHeight;
|
||||
line_size = ( int32)gif->SWidth * ( int32)info->components;
|
||||
|
||||
if( dsc->Interlace)
|
||||
interlace = TRUE;
|
||||
|
||||
img.image_buf[img.imagecount] = ( uint8*)malloc( line_size * ( gif->SHeight + 2));
|
||||
img_buffer = img.image_buf[img.imagecount];
|
||||
|
||||
if( img_buffer == NULL)
|
||||
{
|
||||
error = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
if( map->BitsPerPixel != 1)
|
||||
{
|
||||
line_buffer = ( uint8*)malloc( line_size + 128);
|
||||
|
||||
if( line_buffer == NULL)
|
||||
{
|
||||
free( ( void*)img.image_buf[img.imagecount]);
|
||||
error = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if( img.imagecount > 0)
|
||||
{
|
||||
/* the transparency is the background picture */
|
||||
draw_trans = FALSE;
|
||||
|
||||
if(( Row > 0 && Height < gif->SHeight) || ( Col > 0 && Width < gif->SWidth))
|
||||
memcpy( img_buffer, img.image_buf[img.imagecount - 1], line_size * gif->SHeight);
|
||||
else draw_trans = TRUE;
|
||||
}
|
||||
|
||||
if( interlace == TRUE)
|
||||
{
|
||||
for( i = 0; i < 4; i++)
|
||||
{
|
||||
for ( j = Row + InterlacedOffset[i]; j < Row + Height; j += InterlacedJumps[i])
|
||||
{
|
||||
if( map->BitsPerPixel != 1)
|
||||
{
|
||||
if( DGifGetLine ( gif, line_buffer, Width) != GIF_OK)
|
||||
{
|
||||
error = 1;
|
||||
free( ( void*)img.image_buf[img.imagecount]);
|
||||
break;
|
||||
}
|
||||
|
||||
decodecolormap( line_buffer, &img_buffer[(j * line_size) + (Col * 3)], map->Colors, Width, transpar, info->background_color, draw_trans);
|
||||
}
|
||||
else if( DGifGetLine ( gif, &img_buffer[(j * line_size) + Col], Width) != GIF_OK)
|
||||
{
|
||||
free( ( void*)img.image_buf[img.imagecount]);
|
||||
error = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for( i = 0; i < Height; i++, Row++)
|
||||
{
|
||||
if( map->BitsPerPixel != 1)
|
||||
{
|
||||
if( DGifGetLine( gif, line_buffer, Width) != GIF_OK)
|
||||
{
|
||||
error = 1;
|
||||
free( ( void*)img.image_buf[img.imagecount]);
|
||||
break;
|
||||
}
|
||||
|
||||
decodecolormap( line_buffer, &img_buffer[(Row * line_size) + (Col * 3)], map->Colors, Width, transpar, info->background_color, draw_trans);
|
||||
}
|
||||
else if( DGifGetLine( gif, &img_buffer[(Row * line_size) + Col], Width) != GIF_OK)
|
||||
{
|
||||
free( ( void*)img.image_buf[img.imagecount]);
|
||||
error = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( line_buffer)
|
||||
{
|
||||
free( ( void*)line_buffer);
|
||||
line_buffer = NULL;
|
||||
}
|
||||
|
||||
img.imagecount++;
|
||||
}
|
||||
|
||||
if( info->thumbnail == TRUE)
|
||||
break;
|
||||
|
||||
}
|
||||
else if ( rec == EXTENSION_RECORD_TYPE)
|
||||
{
|
||||
int code;
|
||||
GifByteType * block;
|
||||
|
||||
if ( DGifGetExtension (gif, &code, &block) == GIF_ERROR)
|
||||
{
|
||||
error = 1;
|
||||
break;
|
||||
}
|
||||
else while ( block != NULL)
|
||||
{
|
||||
switch( code)
|
||||
{
|
||||
case COMMENT_EXT_FUNC_CODE:
|
||||
if( comment.lines > 254)
|
||||
break;
|
||||
|
||||
block[block[0]+1] = '\000'; /* Convert gif's pascal-like string */
|
||||
comment.txt[comment.lines] = ( int8*)malloc( block[0] + 1);
|
||||
|
||||
if( comment.txt[comment.lines] == NULL)
|
||||
break;
|
||||
|
||||
strcpy( comment.txt[comment.lines], (char*)block + 1);
|
||||
comment.max_lines_length = MAX( comment.max_lines_length, ( int16)strlen( comment.txt[comment.lines]) + 1);
|
||||
comment.lines++;
|
||||
break;
|
||||
|
||||
case GRAPHICS_EXT_FUNC_CODE:
|
||||
if( block[1] & 1)
|
||||
transpar = ( uint16)block[4];
|
||||
else
|
||||
transpar = -1;
|
||||
|
||||
img.delay[delaycount++] = ( block[2] + (block[3] << 8)) << 1;
|
||||
|
||||
break;
|
||||
/*
|
||||
In version 2.0 beta Netscape, introduce a special extention for
|
||||
set a maximum loop playback.. Netscape itself doesn't use it anymore
|
||||
and play the animation infinitly... so we don't care about it.
|
||||
|
||||
case APPLICATION_EXT_FUNC_CODE:
|
||||
if( reading_netscape_ext == 0)
|
||||
{
|
||||
if( memcmp( block + 1, "NETSCAPE", 8) != 0)
|
||||
break;
|
||||
|
||||
if( block[0] != 11)
|
||||
break;
|
||||
|
||||
if( memcmp( block + 9, "2.0", 3) != 0)
|
||||
break;
|
||||
|
||||
reading_netscape_ext = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (( block[1] & 7) == 1)
|
||||
info->max_loop_count = block[2] | ( block[3] << 8);
|
||||
}
|
||||
*/
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if ( DGifGetExtensionNext (gif, &block) == GIF_ERROR)
|
||||
{
|
||||
error = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else break;
|
||||
} while ( rec != TERMINATE_RECORD_TYPE);
|
||||
|
||||
|
||||
if( error)
|
||||
{
|
||||
for ( i = 0; i < comment.lines; i++)
|
||||
{
|
||||
if( comment.txt[i])
|
||||
free( ( void*)comment.txt[i]);
|
||||
}
|
||||
|
||||
for ( i = 0; i < img.imagecount; i++)
|
||||
{
|
||||
if( img.image_buf[i])
|
||||
free( ( void*)img.image_buf[i]);
|
||||
}
|
||||
|
||||
DGifCloseFile ( gif);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
info->real_height = info->height;
|
||||
info->real_width = info->width;
|
||||
info->orientation = UP_TO_DOWN;
|
||||
info->page = img.imagecount;
|
||||
info->num_comments = comment.lines;
|
||||
info->max_comments_length = comment.max_lines_length;
|
||||
info->indexed_color = FALSE;
|
||||
info->memory_alloc = TT_RAM;
|
||||
info->_priv_var = 0L; /* page line counter */
|
||||
info->_priv_var_more = 0L; /* current page returned */
|
||||
info->_priv_ptr = ( void*)&comment;
|
||||
info->_priv_ptr_more = ( void*)&img;
|
||||
|
||||
strcpy( info->info, "GIF");
|
||||
|
||||
/*if( gif->Version)
|
||||
strcat( info->info, "89a");
|
||||
else
|
||||
strcat( info->info, "87a");
|
||||
*/
|
||||
|
||||
if( interlace)
|
||||
strcat( info->info, " (Interlaced)");
|
||||
|
||||
strcpy( info->compression, "LZW");
|
||||
|
||||
DGifCloseFile( gif);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_get_txt *
|
||||
* This function , like other CDECL function mus be always present. *
|
||||
* It fills txtdata struct. with the text present in the picture ( if any). *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* txtdata -> The destination text buffer. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL reader_get_txt( IMGINFO info, txt_data *txtdata)
|
||||
{
|
||||
register int16 i;
|
||||
txt_data *comment = ( txt_data *)info->_priv_ptr;
|
||||
|
||||
for ( i = 0; i < txtdata->lines; i++)
|
||||
strcpy( txtdata->txt[i] , comment->txt[i]);
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_read: *
|
||||
* This function fits the buffer with image data *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* buffer -> The destination buffer. *
|
||||
* info -> The IMGINFO struct. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL reader_read( IMGINFO info, uint8 *buffer)
|
||||
{
|
||||
img_data *img = ( img_data*)info->_priv_ptr_more;
|
||||
int32 line_size = ( int32)info->width * ( int32)info->components;
|
||||
uint8 *line_src;
|
||||
|
||||
if( ( int32)info->page_wanted != info->_priv_var_more)
|
||||
{
|
||||
info->_priv_var_more = ( int32)info->page_wanted;
|
||||
info->_priv_var = 0L;
|
||||
}
|
||||
|
||||
line_src = &img->image_buf[info->page_wanted][info->_priv_var];
|
||||
|
||||
info->_priv_var += line_size;
|
||||
info->delay = img->delay[info->page_wanted];
|
||||
|
||||
memcpy( buffer, line_src, line_size);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_quit: *
|
||||
* This function makes the last job like close the file handler and free the *
|
||||
* allocated memory. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL reader_quit( IMGINFO info)
|
||||
{
|
||||
txt_data *comment = ( txt_data *)info->_priv_ptr;
|
||||
img_data *img = ( img_data *)info->_priv_ptr_more;
|
||||
register int16 i;
|
||||
|
||||
for ( i = 0; i < comment->lines; i++)
|
||||
{
|
||||
if( comment->txt[i])
|
||||
free( ( void*)comment->txt[i]);
|
||||
}
|
||||
|
||||
for ( i = 0; i < img->imagecount; i++)
|
||||
{
|
||||
if( img->image_buf[i])
|
||||
free( ( void*)img->image_buf[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL init: *
|
||||
* First function called from zview, in this one, you can make some internal *
|
||||
* initialisation. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* -- *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL init( void)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* int main: *
|
||||
* Main function, his job is to call ldg_init function. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* -- *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* 0 *
|
||||
*==================================================================================*/
|
||||
int main( void)
|
||||
{
|
||||
ldg_init( &gif_plugin);
|
||||
return( 0);
|
||||
}
|
||||
13
sources/z-tools/trunk/zview/plugins/godpaint/Makefile
Normal file
13
sources/z-tools/trunk/zview/plugins/godpaint/Makefile
Normal file
@@ -0,0 +1,13 @@
|
||||
STACKSIZE = 64k
|
||||
OPTIMISATION = -O2 -fomit-frame-pointer -finline-functions
|
||||
CPU = -m68020-60
|
||||
LIB = -lldgserver
|
||||
|
||||
CFLAGS = $(CPU) $(OPTIMISATION) -Wall -I../common
|
||||
LDFLAGS = -nostdlib
|
||||
|
||||
OBJ = $(LDG_STARTUP_OBJ) godldg.o
|
||||
|
||||
PROGRAM = godpaint.ldg
|
||||
|
||||
include ../../../common.mak
|
||||
503
sources/z-tools/trunk/zview/plugins/godpaint/copyright
Normal file
503
sources/z-tools/trunk/zview/plugins/godpaint/copyright
Normal file
@@ -0,0 +1,503 @@
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser 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
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
331
sources/z-tools/trunk/zview/plugins/godpaint/godldg.c
Normal file
331
sources/z-tools/trunk/zview/plugins/godpaint/godldg.c
Normal file
@@ -0,0 +1,331 @@
|
||||
#include "zview.h"
|
||||
|
||||
boolean CDECL reader_init( const char *name, IMGINFO info);
|
||||
boolean CDECL reader_read( IMGINFO info, uint8 *buffer);
|
||||
void CDECL reader_get_txt( IMGINFO info, txt_data *txtdata);
|
||||
void CDECL reader_quit( IMGINFO info);
|
||||
boolean CDECL encoder_init( const char *name, IMGINFO info);
|
||||
boolean CDECL encoder_write( IMGINFO info, uint8 *buffer);
|
||||
void CDECL encoder_quit( IMGINFO info);
|
||||
void CDECL init( void);
|
||||
|
||||
|
||||
PROC DEGASFunc[] =
|
||||
{
|
||||
{ "plugin_init", "", init},
|
||||
{ "reader_init", "", reader_init},
|
||||
{ "reader_get_txt", "", reader_get_txt},
|
||||
{ "reader_read", "", reader_read},
|
||||
{ "reader_quit", "", reader_quit},
|
||||
{ "encoder_init", "", encoder_init},
|
||||
{ "encoder_write", "", encoder_write},
|
||||
{ "encoder_quit", "", encoder_quit}
|
||||
};
|
||||
|
||||
|
||||
LDGLIB godpaint_plugin =
|
||||
{
|
||||
0x0200, /* Plugin version */
|
||||
8, /* Number of plugin's functions */
|
||||
DEGASFunc, /* List of functions */
|
||||
"GOD", /* File's type Handled */
|
||||
LDG_NOT_SHARED, /* The flags NOT_SHARED is used here.. even if zview plugins are reentrant
|
||||
and are shareable, we must use this flags because we don't know if the
|
||||
user has ldg.prg deamon installed on his computer */
|
||||
NULL, /* Function called when the plugin is unloaded */
|
||||
1L /* Howmany file type are supported by this plugin */
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int16 header;
|
||||
int16 width;
|
||||
int16 height;
|
||||
} GODHDR;
|
||||
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_init: *
|
||||
* Open the file "name", fit the "info" struct. ( see zview.h) and make others *
|
||||
* things needed by the decoder. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* name -> The file to open. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL reader_init( const char *name, IMGINFO info)
|
||||
{
|
||||
int16 handle;
|
||||
int32 file_size;
|
||||
GODHDR *god;
|
||||
|
||||
if ( ( handle = ( int16)Fopen( name, 0)) < 0)
|
||||
return FALSE;
|
||||
|
||||
file_size = Fseek( 0L, handle, 2);
|
||||
|
||||
Fseek( 0L, handle, 0);
|
||||
|
||||
god = ( GODHDR *)malloc( file_size);
|
||||
|
||||
if ( god == NULL)
|
||||
{
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if ( Fread( handle, file_size, god) != file_size)
|
||||
{
|
||||
free( god);
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
Fclose( handle);
|
||||
|
||||
if( ( god->header != 1024) /* some beta version of godpaint? I don't know but some files have this header */
|
||||
&& ( god->header != 18228 /* G4 */))
|
||||
{
|
||||
free( god);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
info->planes = 16;
|
||||
info->real_width = info->width = god->width;
|
||||
info->real_height = info->height= god->height;
|
||||
info->components = 3;
|
||||
info->indexed_color = FALSE;
|
||||
info->colors = 1L << info->planes;
|
||||
info->memory_alloc = TT_RAM;
|
||||
info->page = 1;
|
||||
info->delay = 0;
|
||||
info->orientation = UP_TO_DOWN;
|
||||
info->num_comments = 0;
|
||||
info->max_comments_length = 0;
|
||||
info->_priv_ptr = ( void*)god;
|
||||
info->_priv_var_more = 3;
|
||||
info->_priv_ptr_more = NULL;
|
||||
|
||||
strcpy( info->info, "Reservoir Gods - Godpaint");
|
||||
strcpy( info->compression, "None");
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_read: *
|
||||
* This function fits the buffer with image data *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* buffer -> The destination buffer. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL reader_read( IMGINFO info, uint8 *buffer)
|
||||
{
|
||||
GODHDR *god = ( GODHDR*)info->_priv_ptr;
|
||||
uint16 *source = ( uint16*)god + info->_priv_var_more;
|
||||
int16 i, ii;
|
||||
|
||||
for( i = 0, ii = 0; i < info->width; i++)
|
||||
{
|
||||
register uint16 src16 = source[i];
|
||||
|
||||
buffer[ii++] = (( src16 >> 11) & 0x001F) << 3;
|
||||
buffer[ii++] = (( src16 >> 5) & 0x003F) << 2;
|
||||
buffer[ii++] = (( src16) & 0x001F) << 3;
|
||||
}
|
||||
|
||||
info->_priv_var_more += info->width;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_get_txt *
|
||||
* This function , like other CDECL function must be always present. *
|
||||
* It fills txtdata struct. with the text present in the picture ( if any). *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* txtdata -> The destination text buffer. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL reader_get_txt( IMGINFO info, txt_data *txtdata)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_quit: *
|
||||
* This function makes the last job like close the file handler and free the *
|
||||
* allocated memory. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL reader_quit( IMGINFO info)
|
||||
{
|
||||
GODHDR *god = ( GODHDR*)info->_priv_ptr;
|
||||
|
||||
free( god);
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL encoder_init: *
|
||||
* Open the file "name", fit the "info" struct. ( see zview.h) and make others *
|
||||
* things needed by the encoder. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* name -> The file to open. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL encoder_init( const char *name, IMGINFO info)
|
||||
{
|
||||
uint16 *line_buffer = NULL;
|
||||
int8 header_id[2] = "G4";
|
||||
int32 file;
|
||||
|
||||
if ( ( file = Fcreate( name, 0)) < 0)
|
||||
return FALSE;
|
||||
|
||||
line_buffer = ( uint16*) malloc( ( info->width + 1) << 1);
|
||||
|
||||
if ( line_buffer == NULL)
|
||||
{
|
||||
Fclose( file);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* we test only the first Fwrite.. if it's ok, the others *should* works also */
|
||||
if( Fwrite( file, 2, header_id) != 2)
|
||||
{
|
||||
free( line_buffer);
|
||||
Fclose( file);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
Fwrite( file, 2, ( void*)&info->width);
|
||||
Fwrite( file, 2, ( void*)&info->height);
|
||||
|
||||
|
||||
info->planes = 24; /* the wanted input data format.. currently Zview return only 24 bits data, so we make the convertion to 16 bits ourself */
|
||||
info->components = 3;
|
||||
info->colors = 16777215L;
|
||||
info->orientation = UP_TO_DOWN;
|
||||
info->indexed_color = FALSE;
|
||||
info->page = 1;
|
||||
info->delay = 0;
|
||||
info->_priv_ptr = line_buffer;
|
||||
info->_priv_var = file;
|
||||
info->_priv_ptr_more = NULL;
|
||||
info->__priv_ptr_more = NULL;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECLencoder_write: *
|
||||
* This function write data from buffer to file *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* buffer -> The source buffer. *
|
||||
* info -> The IMGINFO struct . *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL encoder_write( IMGINFO info, uint8 *buffer)
|
||||
{
|
||||
uint16 *source = ( uint16*)info->_priv_ptr;
|
||||
int32 byte_to_write = info->width << 1;
|
||||
uint16 ii, i;
|
||||
|
||||
for( ii = i = 0; i < info->width; i++, ii += 3)
|
||||
{
|
||||
register uint8 *rgb = &buffer[ii];
|
||||
|
||||
source[i] = (((uint16)rgb[0] & 0xF8) << 8) | (((uint16)rgb[1] & 0xFC) << 3) | ( rgb[2] >> 3);
|
||||
}
|
||||
|
||||
if( Fwrite( info->_priv_var, byte_to_write, ( uint8*)source) != byte_to_write)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL encoder_quit: *
|
||||
* This function makes the last job like close the file handler and free the *
|
||||
* allocated memory. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL encoder_quit( IMGINFO info)
|
||||
{
|
||||
uint8 *buffer = ( uint8*)info->_priv_ptr;
|
||||
|
||||
free( buffer);
|
||||
Fclose( info->_priv_var);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL init: *
|
||||
* First function called from zview, in this one, you can make some internal *
|
||||
* initialisation. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* -- *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL init( void)
|
||||
{
|
||||
/* Make the compiler happy*/
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* int main: *
|
||||
* Main function, his job is to call ldg_init function. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* -- *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* 0 *
|
||||
*==================================================================================*/
|
||||
int main( void)
|
||||
{
|
||||
ldg_init( &godpaint_plugin);
|
||||
return( 0);
|
||||
}
|
||||
13
sources/z-tools/trunk/zview/plugins/img/Makefile
Normal file
13
sources/z-tools/trunk/zview/plugins/img/Makefile
Normal file
@@ -0,0 +1,13 @@
|
||||
STACKSIZE = 64k
|
||||
OPTIMISATION = -O2 -fomit-frame-pointer -finline-functions
|
||||
CPU = -m68020-60
|
||||
LIB = -lldgserver
|
||||
|
||||
CFLAGS = $(CPU) $(OPTIMISATION) -Wall -I../common
|
||||
LDFLAGS = -nostdlib
|
||||
|
||||
OBJ = $(LDG_STARTUP_OBJ) imgldg.o xp32.o
|
||||
|
||||
PROGRAM = img.ldg
|
||||
|
||||
include ../../../common.mak
|
||||
503
sources/z-tools/trunk/zview/plugins/img/copyright
Normal file
503
sources/z-tools/trunk/zview/plugins/img/copyright
Normal file
@@ -0,0 +1,503 @@
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser 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
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
59
sources/z-tools/trunk/zview/plugins/img/img.h
Normal file
59
sources/z-tools/trunk/zview/plugins/img/img.h
Normal file
@@ -0,0 +1,59 @@
|
||||
/*------------------------------------------*/
|
||||
/* IMG Structur */
|
||||
/*------------------------------------------*/
|
||||
|
||||
#ifndef __IMG_IMAGE__
|
||||
#define __IMG_IMAGE__
|
||||
|
||||
#define XIMG 0x58494D47
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int16 version;
|
||||
int16 length;
|
||||
int16 planes;
|
||||
int16 pattern_length;
|
||||
int16 pix_width;
|
||||
int16 pix_height;
|
||||
int16 w;
|
||||
int16 h;
|
||||
} IMGHDR;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 *img_buf;
|
||||
int32 img_buf_len;
|
||||
int32 img_buf_offset;
|
||||
int32 img_buf_used;
|
||||
uint8 *line_buffer;
|
||||
int16 pat_len;
|
||||
int16 line_len;
|
||||
int32 rest_length;
|
||||
int32 file_length;
|
||||
int16 img_buf_valid;
|
||||
} XIMG_DATA;
|
||||
|
||||
#ifndef __PIC_STRUCT__
|
||||
#define __PIC_STRUCT__
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 red, green, blue;
|
||||
}RGB;
|
||||
|
||||
typedef struct _picture
|
||||
{
|
||||
int16 file_handle;
|
||||
int16 width;
|
||||
int16 height;
|
||||
int16 planes;
|
||||
IMGHDR img;
|
||||
XIMG_DATA info;
|
||||
} IMG_REF;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
365
sources/z-tools/trunk/zview/plugins/img/imgldg.c
Normal file
365
sources/z-tools/trunk/zview/plugins/img/imgldg.c
Normal file
@@ -0,0 +1,365 @@
|
||||
#include "zview.h"
|
||||
#include "img.h"
|
||||
|
||||
extern int32 plane2packed24( int32 no_words, int32 plane_length, int16 no_planes, void *src, void *dst, COLOR_MAP *palette);
|
||||
|
||||
boolean CDECL reader_init( const char *name, IMGINFO info);
|
||||
void CDECL reader_get_txt( IMGINFO info, txt_data *txtdata);
|
||||
boolean CDECL reader_read( IMGINFO info, uint8 *buffer);
|
||||
void CDECL reader_quit( IMGINFO info);
|
||||
void CDECL init( void);
|
||||
|
||||
|
||||
PROC IMGFunc[] =
|
||||
{
|
||||
{ "plugin_init", "", init},
|
||||
{ "reader_init", "", reader_init},
|
||||
{ "reader_get_txt", "", reader_get_txt},
|
||||
{ "reader_read", "", reader_read},
|
||||
{ "reader_quit", "", reader_quit}
|
||||
};
|
||||
|
||||
|
||||
LDGLIB img_plugin =
|
||||
{
|
||||
0x0200, /* Plugin version */
|
||||
5, /* Number of plugin's functions */
|
||||
IMGFunc, /* List of functions */
|
||||
"IMG", /* File's type Handled */
|
||||
LDG_NOT_SHARED, /* The flags NOT_SHARED is used here.. even if zview plugins are reentrant
|
||||
and are shareable, we must use this flags because we don't know if the
|
||||
user has ldg.prg deamon installed on his computer */
|
||||
NULL, /* Function called when the plugin is unloaded */
|
||||
1L /* Howmany file type are supported by this plugin */
|
||||
};
|
||||
|
||||
|
||||
|
||||
boolean CDECL reader_init( const char *name, IMGINFO info)
|
||||
{
|
||||
IMG_REF *pic = NULL;
|
||||
IMGHDR *head = NULL;
|
||||
XIMG_DATA *imginfo = NULL;
|
||||
int16 handle, line_width;
|
||||
int8 identify[6];
|
||||
|
||||
if ( ( handle = ( int16) Fopen( name, 0)) < 0)
|
||||
return FALSE;
|
||||
|
||||
pic = ( IMG_REF*)malloc( sizeof( IMG_REF));
|
||||
head = &pic->img;
|
||||
imginfo = &pic->info;
|
||||
|
||||
if( pic == NULL)
|
||||
{
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if ( Fread( handle, sizeof( IMGHDR), head) != sizeof( IMGHDR))
|
||||
{
|
||||
free( pic);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (( head->planes != 1) && ( head->planes != 4) && ( head->planes != 8) && ( head->planes != 24))
|
||||
{
|
||||
free( pic);
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
pic->file_handle = handle;
|
||||
pic->width = head->w;
|
||||
pic->height = head->h;
|
||||
pic->planes = head->planes;
|
||||
|
||||
line_width = ((( head->w + 15) & 0xfff0) >> 3 ) * head->planes;
|
||||
|
||||
imginfo->pat_len = head->pattern_length;
|
||||
imginfo->line_len = ( head->w + 7) >> 3;
|
||||
imginfo->file_length = Fseek( 0L, handle, 2);
|
||||
imginfo->img_buf_len = MAX( 8192, line_width << 1);
|
||||
imginfo->img_buf = ( uint8*)malloc( imginfo->img_buf_len + 256L);
|
||||
|
||||
if ( imginfo->img_buf == NULL)
|
||||
{
|
||||
free( pic);
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Normally, here, it's the size of the line that we allocate but we prevent buffer
|
||||
Overflow with some picture saved with french application */
|
||||
imginfo->line_buffer = ( uint8*)malloc( imginfo->img_buf_len + 256L);
|
||||
imginfo->img_buf_valid = 0;
|
||||
|
||||
if ( imginfo->line_buffer == NULL)
|
||||
{
|
||||
free( imginfo->img_buf);
|
||||
free( pic);
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
info->real_width = info->width = pic->width;
|
||||
info->real_height = info->height= pic->height;
|
||||
info->components = ( pic->planes == 1 ? 1 : 3);
|
||||
info->planes = pic->planes;
|
||||
info->orientation = UP_TO_DOWN;
|
||||
info->colors = 1L << ( uint32)pic->planes;
|
||||
info->indexed_color = FALSE; /* ( (( pic->planes == 1) || ( pic->planes > 8)) ? 0 : 1); */
|
||||
info->memory_alloc = TT_RAM;
|
||||
info->page = 1;
|
||||
info->delay = 0;
|
||||
info->num_comments = 0;
|
||||
info->_priv_ptr = ( void*)pic;
|
||||
|
||||
strcpy( info->info, "GEM Bitmap ");
|
||||
strcpy( info->compression, "RLE");
|
||||
|
||||
/* It a extended IMG ?, if not, return */
|
||||
if(( head->length <= ( sizeof( IMGHDR) >> 1)) || ( info->planes > 8))
|
||||
return TRUE;
|
||||
|
||||
strcat( info->info, "( eXtended)");
|
||||
|
||||
Fseek( sizeof( IMGHDR), handle, 0);
|
||||
Fread( handle, 6, identify);
|
||||
|
||||
if( strcmp ( identify, "XIMG") != 0)
|
||||
{
|
||||
free( imginfo->line_buffer);
|
||||
free( imginfo->img_buf);
|
||||
free( pic);
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
RGB1000 palette[256];
|
||||
register int32 pal_len;
|
||||
register int16 i;
|
||||
|
||||
pal_len = MIN ((( head->length << 1) - 6 - sizeof( IMGHDR)), ( sizeof( RGB1000) << 8));
|
||||
|
||||
Fread( handle, pal_len, palette);
|
||||
|
||||
for ( i = 0; i < info->colors; i++)
|
||||
{
|
||||
register int32 intensity = ( int32)palette[i].blue;
|
||||
info->palette[i].blue = ( uint8) (((( intensity << 8) - intensity) + 500) / 1000L);
|
||||
intensity = ( int32)palette[i].green;
|
||||
info->palette[i].green = ( uint8) (((( intensity << 8) - intensity) + 500) / 1000L);
|
||||
intensity = ( int32)palette[i].red;
|
||||
info->palette[i].red = ( uint8) (((( intensity << 8) - intensity) + 500) / 1000L);
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
void fill_img_buf( IMG_REF *pic)
|
||||
{
|
||||
XIMG_DATA *info = &pic->info;
|
||||
int32 read = info->img_buf_len;
|
||||
|
||||
if ( read > info->rest_length)
|
||||
read = info->rest_length;
|
||||
|
||||
info->img_buf_offset = 0;
|
||||
info->img_buf_used = Fread( pic->file_handle, read, info->img_buf );
|
||||
info->rest_length -= info->img_buf_used;
|
||||
}
|
||||
|
||||
|
||||
void refill_img_buf( IMG_REF *pic, int32 read)
|
||||
{
|
||||
XIMG_DATA *info = &pic->info;
|
||||
|
||||
info->img_buf_used -= read;
|
||||
info->img_buf_offset += read;
|
||||
|
||||
if ( info->img_buf_offset >= ( info->img_buf_len >> 1))
|
||||
{
|
||||
if ( info->img_buf_used > 0)
|
||||
memcpy( info->img_buf, info->img_buf + info->img_buf_offset, info->img_buf_used);
|
||||
|
||||
read = info->img_buf_offset;
|
||||
|
||||
if ( read > info->rest_length )
|
||||
read = info->rest_length;
|
||||
|
||||
read = Fread( pic->file_handle, read, info->img_buf + info->img_buf_used );
|
||||
|
||||
info->img_buf_used += read;
|
||||
info->img_buf_offset = 0;
|
||||
info->rest_length -= read;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
uint8 *unpack_line2( uint8 *img, uint8 *des, int16 pat_len, int16 len)
|
||||
{
|
||||
register int16 i, cnt;
|
||||
|
||||
while ( len > 0)
|
||||
{
|
||||
register uint8 tag = *img++;
|
||||
|
||||
if ( tag == 0)
|
||||
{
|
||||
cnt = *img++;
|
||||
|
||||
for ( i = 0; i < cnt; i++)
|
||||
{
|
||||
register int16 j;
|
||||
for ( j = 0; j < pat_len; j++)
|
||||
*des++ = img[j];
|
||||
}
|
||||
|
||||
img += pat_len;
|
||||
cnt *= pat_len;
|
||||
}
|
||||
else if ( tag == 0x80 )
|
||||
{
|
||||
cnt = *img++;
|
||||
|
||||
for ( i = 0; i < cnt; i++)
|
||||
*des++ = *img++;
|
||||
}
|
||||
else if (( tag & 0x80 ) == 0)
|
||||
{
|
||||
cnt = tag & 0x7f;
|
||||
|
||||
for ( i = 0; i < cnt; i++)
|
||||
*des++ = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
cnt = tag & 0x7f;
|
||||
|
||||
for ( i = 0; i < cnt; i++)
|
||||
*des++ = 0xff;
|
||||
}
|
||||
len -= cnt;
|
||||
}
|
||||
return( img);
|
||||
}
|
||||
|
||||
|
||||
uint8 *unpack_line1( uint8 *img, uint8 *des, int16 pat_len, int16 len)
|
||||
{
|
||||
if (( img[0] == 0 ) && ( img[1] == 0 ) && ( img[2] == 0xff))
|
||||
{
|
||||
if ( img[3] > 1)
|
||||
{
|
||||
unpack_line2( img + 4, des, pat_len, len);
|
||||
img[3] -= 1;
|
||||
return( img);
|
||||
}
|
||||
else
|
||||
return( unpack_line2( img + 4, des, pat_len, len));
|
||||
}
|
||||
else
|
||||
return( unpack_line2( img, des, pat_len, len));
|
||||
}
|
||||
|
||||
|
||||
void unpack_line( IMG_REF *pic, uint8 *des)
|
||||
{
|
||||
XIMG_DATA *info = &pic->info;
|
||||
uint8 *img_line;
|
||||
int32 read;
|
||||
|
||||
img_line = info->img_buf + info->img_buf_offset;
|
||||
|
||||
read = ( int32) ( unpack_line1( img_line, des, info->pat_len, info->line_len * pic->planes ) - img_line );
|
||||
|
||||
refill_img_buf( pic, read);
|
||||
}
|
||||
|
||||
|
||||
boolean CDECL reader_read( IMGINFO info, uint8 *buffer)
|
||||
{
|
||||
int16 even_len;
|
||||
IMG_REF *pic = ( IMG_REF *)info->_priv_ptr;
|
||||
XIMG_DATA *img_info = &pic->info;
|
||||
IMGHDR *head = &pic->img;
|
||||
|
||||
|
||||
if ( img_info->img_buf_valid == 0)
|
||||
{
|
||||
Fseek( head->length << 1, pic->file_handle, 0);
|
||||
img_info->rest_length = img_info->file_length - ( head->length << 1);
|
||||
fill_img_buf( pic);
|
||||
img_info->img_buf_valid = 1;
|
||||
}
|
||||
|
||||
if( info->planes > 8)
|
||||
{
|
||||
unpack_line( pic, buffer);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
even_len = ( img_info->line_len + 1) & ~1;
|
||||
|
||||
unpack_line( pic, img_info->line_buffer);
|
||||
|
||||
if ( img_info->line_len & 1)
|
||||
{
|
||||
uint8 *odd, *even;
|
||||
int16 i;
|
||||
|
||||
odd = img_info->line_buffer + ( img_info->line_len * head->planes);
|
||||
even = odd + head->planes;
|
||||
|
||||
for ( i = 0; i < head->planes; i++)
|
||||
{
|
||||
*( --even) = 0;
|
||||
odd -= img_info->line_len;
|
||||
even -= img_info->line_len;
|
||||
memcpy( even, odd, img_info->line_len);
|
||||
}
|
||||
}
|
||||
|
||||
if( !plane2packed24( even_len >> 1, even_len, head->planes, img_info->line_buffer, buffer, info->palette))
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
void CDECL reader_get_txt( IMGINFO info, txt_data *txtdata)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
void CDECL reader_quit( IMGINFO info)
|
||||
{
|
||||
IMG_REF *pic = ( IMG_REF *)info->_priv_ptr;
|
||||
|
||||
if ( pic)
|
||||
{
|
||||
Fclose( pic->file_handle );
|
||||
|
||||
free( pic->info.img_buf);
|
||||
free( pic->info.line_buffer);
|
||||
free( pic);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CDECL init( void)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
int main( void)
|
||||
{
|
||||
ldg_init( &img_plugin);
|
||||
return( 0);
|
||||
}
|
||||
166
sources/z-tools/trunk/zview/plugins/img/xp32.S
Normal file
166
sources/z-tools/trunk/zview/plugins/img/xp32.S
Normal file
@@ -0,0 +1,166 @@
|
||||
.text
|
||||
|
||||
.globl _plane2packed24
|
||||
|
||||
| int32 plane2packed24( int32 no_words, int32 plane_length, int16 no_planes, void *src, void *dst, CTAB_REF src_ctab );
|
||||
| d0 d1 d2 a0 a1 4(sp)
|
||||
|
||||
| 11x4 + 4 + 5x4
|
||||
|
||||
_plane2packed24:
|
||||
movem.l d2-d7/a2-a6,-(sp)
|
||||
|
||||
move.l 11*4+4(sp),d0
|
||||
move.l 11*4+8(sp),d1
|
||||
move.l 11*4+12(sp),d2
|
||||
movea.l 11*4+16(sp),a0
|
||||
movea.l 11*4+20(sp),a1
|
||||
|
||||
movea.l 11*4+24(sp),a6 |source of the color table
|
||||
|
||||
move.l d0,d4
|
||||
subq.l #1,d4
|
||||
move.l d1,d6
|
||||
add.l d6,d6
|
||||
add.l d6,d6
|
||||
|
||||
movea.l a1,a4 |destination's adress to A4
|
||||
lea (a0,d1.l),a1
|
||||
lea (a1,d1.l),a2
|
||||
lea (a2,d1.l),a3
|
||||
|
||||
lea not_supported(pc),a5
|
||||
|
||||
cmpi.w #8,d2
|
||||
bhi.s plane2packed24_transform
|
||||
|
||||
lea plane2packed24_table(pc),a5
|
||||
add.w d2,d2
|
||||
adda.w 0(a5,d2.w),a5
|
||||
|
||||
plane2packed24_transform:
|
||||
jsr (a5)
|
||||
|
||||
movem.l (sp)+,d2-d7/a2-a6
|
||||
rts
|
||||
|
||||
plane2packed24_table:
|
||||
DC.w not_supported-plane2packed24_table
|
||||
DC.w pp_1_to_8-plane2packed24_table |1 Bit
|
||||
DC.w not_supported-plane2packed24_table
|
||||
DC.w not_supported-plane2packed24_table
|
||||
DC.w pp_4_to_24-plane2packed24_table |4 Bit
|
||||
DC.w not_supported-plane2packed24_table
|
||||
DC.w not_supported-plane2packed24_table
|
||||
DC.w not_supported-plane2packed24_table
|
||||
DC.w pp_8_to_24-plane2packed24_table |8 Bit
|
||||
|
||||
|
||||
not_supported:
|
||||
moveq #0,d0
|
||||
rts
|
||||
|
||||
pp_1_to_8:
|
||||
move.w (a0)+,d0
|
||||
moveq #15,d5
|
||||
|
||||
pp_1_to_8_exp:
|
||||
moveq #0,d6
|
||||
|
||||
add.w d0,d0
|
||||
addx.l d6,d6
|
||||
|
||||
move.b d6,(a4)+
|
||||
|
||||
dbra d5,pp_1_to_8_exp
|
||||
|
||||
subq.l #1,d4
|
||||
bpl.b pp_1_to_8
|
||||
moveq #1,d0
|
||||
rts
|
||||
|
||||
|
||||
pp_4_to_24: move.w (a0)+,d0
|
||||
move.w (a1)+,d1
|
||||
move.w (a2)+,d2
|
||||
move.w (a3)+,d3
|
||||
|
||||
moveq #15,d5
|
||||
pp_4_to_24_exp: moveq #0,d6
|
||||
add.w d3,d3
|
||||
addx.w d6,d6
|
||||
add.w d2,d2
|
||||
addx.w d6,d6
|
||||
add.w d1,d1
|
||||
addx.w d6,d6
|
||||
add.w d0,d0
|
||||
addx.w d6,d6
|
||||
|
||||
|
||||
lsl.w #2,d6
|
||||
|
||||
lea (a6,d6.w),a5
|
||||
move.b (a5),(a4)+ |R
|
||||
move.b 1(a5),(a4)+ |G
|
||||
move.b 2(a5),(a4)+ |B
|
||||
|
||||
pp_4_to_24_next: dbra d5,pp_4_to_24_exp
|
||||
|
||||
subq.l #1,d4
|
||||
bpl.b pp_4_to_24
|
||||
moveq #1,d0
|
||||
rts
|
||||
|
||||
|
||||
pp_8_to_24: move.l d4,-(sp)
|
||||
move.l d6,-(sp)
|
||||
|
||||
move.w (a0)+,d0
|
||||
move.w (a1)+,d1
|
||||
move.w (a2)+,d2
|
||||
move.w (a3)+,d3
|
||||
move.w -2(a0,d6.l),d4
|
||||
move.w -2(a1,d6.l),d5
|
||||
move.w -2(a3,d6.l),d7
|
||||
move.w -2(a2,d6.l),d6
|
||||
|
||||
swap d0
|
||||
swap d5
|
||||
move.w #15,d5
|
||||
pp_8_to_24_exp: swap d5
|
||||
clr.w d0
|
||||
add.w d7,d7
|
||||
addx.w d0,d0
|
||||
add.w d6,d6
|
||||
addx.w d0,d0
|
||||
add.w d5,d5
|
||||
addx.w d0,d0
|
||||
add.w d4,d4
|
||||
addx.w d0,d0
|
||||
add.w d3,d3
|
||||
addx.w d0,d0
|
||||
add.w d2,d2
|
||||
addx.w d0,d0
|
||||
add.w d1,d1
|
||||
addx.w d0,d0
|
||||
swap d0
|
||||
add.w d0,d0
|
||||
swap d0
|
||||
addx.w d0,d0
|
||||
|
||||
lsl.w #2,d0
|
||||
|
||||
lea (a6,d0.w),a5
|
||||
move.b (a5),(a4)+ |R
|
||||
move.b 1(a5),(a4)+ |G
|
||||
move.b 2(a5),(a4)+ |B
|
||||
|
||||
swap d5
|
||||
dbra d5,pp_8_to_24_exp
|
||||
|
||||
move.l (sp)+,d6
|
||||
move.l (sp)+,d4
|
||||
subq.l #1,d4
|
||||
bpl.b pp_8_to_24
|
||||
moveq #1,d0
|
||||
rts
|
||||
15
sources/z-tools/trunk/zview/plugins/jpg/Makefile
Normal file
15
sources/z-tools/trunk/zview/plugins/jpg/Makefile
Normal file
@@ -0,0 +1,15 @@
|
||||
STACKSIZE = 64k
|
||||
OPTIMISATION = -O2 -fomit-frame-pointer
|
||||
CPU = -m68020-60
|
||||
LIB = -ljpeg -lexif -lldgserver
|
||||
|
||||
CFLAGS = $(CPU) $(OPTIMISATION) -Wall -I../common
|
||||
LDFLAGS = -nostdlib
|
||||
|
||||
DSP_OBJ = jpgdsp.o
|
||||
|
||||
OBJ = $(LDG_STARTUP_OBJ) $(DSP_OBJ) jpgldg.o
|
||||
|
||||
PROGRAM = jpg.ldg
|
||||
|
||||
include ../../../common.mak
|
||||
503
sources/z-tools/trunk/zview/plugins/jpg/copyright
Normal file
503
sources/z-tools/trunk/zview/plugins/jpg/copyright
Normal file
@@ -0,0 +1,503 @@
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser 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
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
93
sources/z-tools/trunk/zview/plugins/jpg/jpgdh.h
Normal file
93
sources/z-tools/trunk/zview/plugins/jpg/jpgdh.h
Normal file
@@ -0,0 +1,93 @@
|
||||
/* JPEGD header file
|
||||
<09>1992-93 Brainstorm & Atari Corporation.
|
||||
to be included after vdi.h
|
||||
Last modification on 8-apr-1993.
|
||||
*/
|
||||
|
||||
typedef struct _JPGD_STRUCT {
|
||||
void *InPointer; /* JPEG Image Pointer */
|
||||
void *OutPointer; /* Output Buffer/Filename Pointer (see OutFlag) */
|
||||
long InSize; /* JPEG Image Size (Bytes) */
|
||||
long OutSize; /* Output Image Size (Bytes) */
|
||||
short InComponents; /* JPEG Image Components Number (1->4) */
|
||||
short OutComponents; /* Output Components Number (1->4) */
|
||||
short OutPixelSize; /* Output Pixel Size (1->4) */
|
||||
short OutFlag; /* 0 (RAM Output) / -1 (Disk Output) */
|
||||
short XLoopCounter; /* Number of MCUs per Row */
|
||||
short YLoopCounter; /* Number of MCUs per Column */
|
||||
short (*Create)(struct _JPGD_STRUCT *); /* Pointer to User Routine / NULL */
|
||||
short (*Write)(struct _JPGD_STRUCT *); /* Pointer to User Routine / NULL */
|
||||
short (*Close)(struct _JPGD_STRUCT *); /* Pointer to User Routine / NULL */
|
||||
short (*SigTerm)(struct _JPGD_STRUCT *); /* Pointer to User Routine / NULL */
|
||||
uint8 *Comp1GammaPtr; /* Component 1 Gamma Table / NULL */
|
||||
uint8 *Comp2GammaPtr; /* Component 2 Gamma Table / NULL */
|
||||
uint8 *Comp3GammaPtr; /* Component 3 Gamma Table / NULL */
|
||||
uint8 *Comp4GammaPtr; /* Component 4 Gamma Table / NULL */
|
||||
short (*UserRoutine)(struct _JPGD_STRUCT *); /* Pointer to User Routine (Called during Decompression) / NULL */
|
||||
void *OutTmpPointer; /* Current OutPointer / Temporary Disk Buffer Pointer (see OutFlag) */
|
||||
short MCUsCounter; /* Number of MCUs not Decoded */
|
||||
short OutTmpHeight; /* Number of Lines in OutTmpPointer */
|
||||
long User[2]; /* Free, Available for User */
|
||||
short OutHandle; /* 0 / Output File Handle (see OutFlag) */
|
||||
MFDB MFDBStruct; /* Output Image MFDB */
|
||||
} JPGD_STRUCT;
|
||||
typedef JPGD_STRUCT *JPGD_PTR;
|
||||
|
||||
#define JPGD_MAGIC '_JPD'
|
||||
#define JPGD_VERSION 1
|
||||
|
||||
enum JPGD_ENUM {
|
||||
NOERROR=0, /* File correctly uncompressed */
|
||||
UNKNOWNFORMAT, /* File is not JFIF (Error) */
|
||||
INVALIDMARKER, /* Reserved CCITT Marker Found (Error) */
|
||||
SOF1MARKER, /* Mode not handled by the decoder (Error) */
|
||||
SOF2MARKER, /* Mode not handled by the decoder (Error) */
|
||||
SOF3MARKER, /* Mode not handled by the decoder (Error) */
|
||||
SOF5MARKER, /* Mode not handled by the decoder (Error) */
|
||||
SOF6MARKER, /* Mode not handled by the decoder (Error) */
|
||||
SOF7MARKER, /* Mode not handled by the decoder (Error) */
|
||||
SOF9MARKER, /* Mode not handled by the decoder (Error) */
|
||||
SOF10MARKER, /* Mode not handled by the decoder (Error) */
|
||||
SOF11MARKER, /* Mode not handled by the decoder (Error) */
|
||||
SOF13MARKER, /* Mode not handled by the decoder (Error) */
|
||||
SOF14MARKER, /* Mode not handled by the decoder (Error) */
|
||||
SOF15MARKER, /* Mode not handled by the decoder (Error) */
|
||||
RSTmMARKER, /* Unexpected RSTm found (Error) */
|
||||
BADDHTMARKER, /* Buggy DHT Marker (Error) */
|
||||
DACMARKER, /* Marker not handled by the decoder (Error) */
|
||||
BADDQTMARKER, /* Buggy DQT Marker (Error) */
|
||||
BADDNLMARKER, /* Invalid/Unexpected DNL Marker (Error) */
|
||||
BADDRIMARKER, /* Invalid DRI Header Size (Error) */
|
||||
DHPMARKER, /* Marker not handled by the decoder (Error) */
|
||||
EXPMARKER, /* Marker not handled by the decoder (Error) */
|
||||
BADSUBSAMPLING, /* Invalid components subsampling (Error) */
|
||||
NOTENOUGHMEMORY, /* Not enough memory... (Error) */
|
||||
DECODERBUSY, /* Decoder is busy (Error) */
|
||||
DSPBUSY, /* Can't lock the DSP (Error) */
|
||||
BADSOFnMARKER, /* Buggy SOFn marker (Error) */
|
||||
BADSOSMARKER, /* Buggy SOS marker (Error) */
|
||||
HUFFMANERROR, /* Buggy Huffman Stream (Error) */
|
||||
BADPIXELFORMAT, /* Invalid Output Pixel Format (Error) */
|
||||
DISKFULL, /* Hard/Floppy Disk Full (Error) */
|
||||
MISSINGMARKER, /* Marker expected but not found (Error) */
|
||||
IMAGETRUNCATED, /* More bytes Needed (Error) */
|
||||
EXTRABYTES, /* Dummy Bytes after EOI Marker (Warning) */
|
||||
USERABORT, /* User Routine signaled 'Abort' */
|
||||
DSPMEMORYERROR, /* Not Enough DSP RAM (Error) */
|
||||
NORSTmMARKER, /* RSTm Marker expected but not found */
|
||||
BADRSTmMARKER, /* Invalid RSTm Marker Number */
|
||||
DRIVERCLOSED, /* Driver is Already Closed. */
|
||||
ENDOFIMAGE /* Stop Decoding (Internal Message, Should Never Appear) */
|
||||
};
|
||||
typedef long JPGD_ENUM;
|
||||
|
||||
typedef struct {
|
||||
long JPGDVersion;
|
||||
JPGD_ENUM (*JPGDOpenDriver)(JPGD_PTR);
|
||||
JPGD_ENUM (*JPGDCloseDriver)(JPGD_PTR);
|
||||
long (*JPGDGetStructSize)(void);
|
||||
JPGD_ENUM (*JPGDGetImageInfo)(JPGD_PTR);
|
||||
JPGD_ENUM (*JPGDGetImageSize)(JPGD_PTR);
|
||||
JPGD_ENUM (*JPGDDecodeImage)(JPGD_PTR);
|
||||
} JPGDDRV_STRUCT;
|
||||
typedef JPGDDRV_STRUCT *JPGDDRV_PTR;
|
||||
233
sources/z-tools/trunk/zview/plugins/jpg/jpgdsp.c
Normal file
233
sources/z-tools/trunk/zview/plugins/jpg/jpgdsp.c
Normal file
@@ -0,0 +1,233 @@
|
||||
#include "zview.h"
|
||||
#include "jpgdh.h"
|
||||
|
||||
int16 dsp_ram = 0;
|
||||
|
||||
int16 reader_dsp_init( const char *name, IMGINFO info);
|
||||
|
||||
JPGDDRV_PTR jpgdrv = NULL;
|
||||
|
||||
#define JPGDOpenDriver( jpgd, jpgdrv) \
|
||||
__extension__ \
|
||||
({ register int32 retv __asm__("d0"); \
|
||||
__asm__ volatile \
|
||||
(" movl %1,a0; \
|
||||
movl (%2,4),a1; \
|
||||
jsr a1@; \
|
||||
" /* end of code */ \
|
||||
: "=r" (retv) /* out */ \
|
||||
: "a" (jpgd) /* in */ \
|
||||
, "a" (jpgdrv) /* in */ \
|
||||
: "a0", "a1" \
|
||||
); \
|
||||
retv; \
|
||||
})
|
||||
|
||||
#define JPGDCloseDriver( jpgd, jpgdrv) \
|
||||
__extension__ \
|
||||
({ register int32 retv __asm__("d0"); \
|
||||
__asm__ volatile \
|
||||
(" movl %1,a0; \
|
||||
movl (%2,8),a1; \
|
||||
jsr a1@; \
|
||||
" /* end of code */ \
|
||||
: "=r" (retv) /* out */ \
|
||||
: "a" (jpgd) /* in */ \
|
||||
, "a" (jpgdrv) /* in */ \
|
||||
: "a0", "a1" \
|
||||
); \
|
||||
retv; \
|
||||
})
|
||||
|
||||
#define JPGDGetImageInfo( jpgd, jpgdrv) \
|
||||
__extension__ \
|
||||
({ register int32 retv __asm__("d0"); \
|
||||
__asm__ volatile \
|
||||
(" movl %1,a0; \
|
||||
movl (%2,16),a1; \
|
||||
jsr a1@; \
|
||||
" /* end of code */ \
|
||||
: "=r" (retv) /* out */ \
|
||||
: "a" (jpgd) /* in */ \
|
||||
, "a" (jpgdrv) /* in */ \
|
||||
: "a0", "a1" \
|
||||
); \
|
||||
retv; \
|
||||
})
|
||||
|
||||
#define JPGDGetImageSize( jpgd, jpgdrv) \
|
||||
__extension__ \
|
||||
({ register int32 retv __asm__("d0"); \
|
||||
__asm__ volatile \
|
||||
(" movl %1,a0; \
|
||||
movl (%2,20),a1; \
|
||||
jsr a1@; \
|
||||
" /* end of code */ \
|
||||
: "=r" (retv) /* out */ \
|
||||
: "a" (jpgd) /* in */ \
|
||||
, "a" (jpgdrv) /* in */ \
|
||||
: "a0", "a1" \
|
||||
); \
|
||||
retv; \
|
||||
})
|
||||
|
||||
#define JPGDDecodeImage( jpgd, jpgdrv) \
|
||||
__extension__ \
|
||||
({ register int32 retv __asm__("d0"); \
|
||||
__asm__ volatile \
|
||||
(" movl %1,a0; \
|
||||
movl (%2,24),a1; \
|
||||
jsr a1@; \
|
||||
" /* end of code */ \
|
||||
: "=r" (retv) /* out */ \
|
||||
: "a" (jpgd) /* in */ \
|
||||
, "a" (jpgdrv) /* in */ \
|
||||
: "a0", "a1" \
|
||||
); \
|
||||
retv; \
|
||||
})
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_init: *
|
||||
* Open the file "name", fit the "info" struct. ( see zview.h) and make others *
|
||||
* things needed by the decoder. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* name -> The file to open. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
int16 reader_dsp_init( const char *name, IMGINFO info)
|
||||
{
|
||||
char pad[] = { -1, -1, -1, -1, -1, -1, -1, -1, 0, 0};
|
||||
void *src, *dst;
|
||||
int16 jpeg_file;
|
||||
int32 jpgdsize, jpeg_file_size;
|
||||
JPGD_PTR jpgd;
|
||||
|
||||
if ( ( jpeg_file = ( int16)Fopen( name, 0)) < 0)
|
||||
return GOLBAL_ERROR;
|
||||
|
||||
jpeg_file_size = Fseek( 0L, jpeg_file, 2);
|
||||
|
||||
Fseek( 0L, jpeg_file, 0);
|
||||
|
||||
if (( src = ( void*)Mxalloc( jpeg_file_size + sizeof( pad), dsp_ram)) == NULL)
|
||||
{
|
||||
Fclose( jpeg_file);
|
||||
return GOLBAL_ERROR;
|
||||
}
|
||||
|
||||
if ( Fread( jpeg_file, jpeg_file_size, src) != jpeg_file_size)
|
||||
{
|
||||
Mfree( src);
|
||||
Fclose( jpeg_file);
|
||||
return GOLBAL_ERROR;
|
||||
}
|
||||
|
||||
Fclose( jpeg_file);
|
||||
|
||||
memcpy( ( uint8 *)src + jpeg_file_size, pad, sizeof( pad));
|
||||
|
||||
jpgdsize = jpgdrv->JPGDGetStructSize();
|
||||
|
||||
if( jpgdsize < 1)
|
||||
{
|
||||
Mfree( src);
|
||||
return DSP_ERROR;
|
||||
}
|
||||
|
||||
jpgd = ( JPGD_PTR)Mxalloc( jpgdsize, dsp_ram);
|
||||
|
||||
if( jpgd == NULL)
|
||||
{
|
||||
Mfree( src);
|
||||
return GOLBAL_ERROR;
|
||||
}
|
||||
|
||||
memset( ( void *)jpgd, 0, jpgdsize);
|
||||
|
||||
if( JPGDOpenDriver( jpgd, jpgdrv) != 0)
|
||||
{
|
||||
Dsp_Unlock();
|
||||
Mfree( jpgd);
|
||||
Mfree( src);
|
||||
return DSP_ERROR;
|
||||
}
|
||||
|
||||
jpgd->InPointer = src;
|
||||
jpgd->InSize = jpeg_file_size;
|
||||
|
||||
if( JPGDGetImageInfo( jpgd, jpgdrv) != 0)
|
||||
{
|
||||
JPGDCloseDriver( jpgd, jpgdrv);
|
||||
Dsp_Unlock();
|
||||
Mfree( jpgd);
|
||||
Mfree( src);
|
||||
return DSP_ERROR;
|
||||
}
|
||||
|
||||
jpgd->OutComponents = 3;
|
||||
jpgd->OutPixelSize = 3;
|
||||
|
||||
if( JPGDGetImageSize( jpgd, jpgdrv) != 0)
|
||||
{
|
||||
JPGDCloseDriver( jpgd, jpgdrv);
|
||||
Mfree( jpgd);
|
||||
Mfree( src);
|
||||
return DSP_ERROR;
|
||||
}
|
||||
|
||||
if(( dst = ( void*)Mxalloc( jpgd->OutSize, dsp_ram)) == NULL)
|
||||
{
|
||||
JPGDCloseDriver( jpgd, jpgdrv);
|
||||
Mfree( jpgd);
|
||||
Mfree( src);
|
||||
return GOLBAL_ERROR;
|
||||
}
|
||||
|
||||
jpgd->OutPointer = dst;
|
||||
jpgd->OutFlag = 0;
|
||||
jpgd->UserRoutine = NULL;
|
||||
|
||||
if( JPGDDecodeImage( jpgd, jpgdrv) != 0)
|
||||
{
|
||||
JPGDCloseDriver( jpgd, jpgdrv);
|
||||
Mfree( jpgd);
|
||||
Mfree( src);
|
||||
Mfree( dst);
|
||||
return DSP_ERROR;
|
||||
}
|
||||
|
||||
info->components = 3;
|
||||
info->width = jpgd->MFDBStruct.fd_w;
|
||||
info->height = jpgd->MFDBStruct.fd_h;
|
||||
info->real_width = info->width;
|
||||
info->real_height = info->height;
|
||||
info->memory_alloc = TT_RAM;
|
||||
info->planes = 24;
|
||||
info->orientation = UP_TO_DOWN;
|
||||
info->colors = 1uL << ( uint32)info->planes;
|
||||
info->indexed_color = FALSE;
|
||||
info->page = 1;
|
||||
info->delay = 0;
|
||||
info->num_comments = 0;
|
||||
info->max_comments_length = 0;
|
||||
|
||||
info->_priv_ptr = dst;
|
||||
info->_priv_var = jpgd->MFDBStruct.fd_wdwidth << 1;
|
||||
info->_priv_var_more = info->_priv_var;
|
||||
|
||||
strcpy( info->info, "JPEG");
|
||||
strcpy( info->compression, "JPG");
|
||||
|
||||
JPGDCloseDriver( jpgd, jpgdrv);
|
||||
|
||||
Mfree( jpgd);
|
||||
Mfree( src);
|
||||
|
||||
return ALL_OK;
|
||||
}
|
||||
|
||||
813
sources/z-tools/trunk/zview/plugins/jpg/jpgldg.c
Normal file
813
sources/z-tools/trunk/zview/plugins/jpg/jpgldg.c
Normal file
@@ -0,0 +1,813 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <jpeglib.h>
|
||||
#include "zview.h"
|
||||
#include "jpgdh.h"
|
||||
#include <libexif/exif-data.h>
|
||||
#include <libexif/exif-utils.h>
|
||||
|
||||
void CDECL init( void);
|
||||
boolean CDECL reader_init( const char *name, IMGINFO info);
|
||||
void CDECL reader_get_txt( IMGINFO info, txt_data *txtdata);
|
||||
boolean CDECL reader_read( IMGINFO info, uint8 *buffer);
|
||||
void CDECL reader_quit( IMGINFO info);
|
||||
boolean CDECL encoder_init( const char *name, IMGINFO info);
|
||||
boolean CDECL encoder_write( IMGINFO info, uint8 *buffer);
|
||||
void CDECL encoder_quit( IMGINFO info);
|
||||
void CDECL set_jpg_option( int16 set_quality, J_COLOR_SPACE set_color_space, boolean set_progressive);
|
||||
|
||||
|
||||
extern int16 reader_dsp_init( const char *name, IMGINFO info);
|
||||
|
||||
PROC LibFunc[] =
|
||||
{
|
||||
{ "plugin_init", "", init},
|
||||
{ "reader_init", "", reader_init},
|
||||
{ "reader_get_txt", "", reader_get_txt},
|
||||
{ "reader_read", "", reader_read},
|
||||
{ "reader_quit", "", reader_quit},
|
||||
{ "encoder_init", "", encoder_init},
|
||||
{ "encoder_write", "", encoder_write},
|
||||
{ "encoder_quit", "", encoder_quit},
|
||||
{ "set_jpg_option", "", set_jpg_option}
|
||||
};
|
||||
|
||||
|
||||
LDGLIB plugin =
|
||||
{
|
||||
0x0200, /* Plugin version */
|
||||
9, /* Number of plugin's functions */
|
||||
LibFunc, /* List of functions */
|
||||
"JPGJPEPEG", /* File's type Handled */
|
||||
LDG_NOT_SHARED, /* The flags NOT_SHARED is used here.. */
|
||||
NULL,
|
||||
3L /* Howmany file type are supported by this plugin */
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
struct jpeg_source_mgr pub; /* public fields */
|
||||
uint8 *buffer;
|
||||
int size;
|
||||
JOCTET terminal[2];
|
||||
}my_source_mgr;
|
||||
|
||||
/* Options*/
|
||||
static int quality = 90; /* quality 0 -> 100 % */
|
||||
static J_COLOR_SPACE color_space = JCS_RGB;
|
||||
static boolean progressive = FALSE;
|
||||
|
||||
|
||||
/* Brainstorm DSP driver cookie pointer */
|
||||
extern JPGDDRV_PTR jpgdrv;
|
||||
boolean dsp_decoding = FALSE;
|
||||
extern int16 dsp_ram;
|
||||
|
||||
typedef struct jpeg_decompress_struct *JPEG_DEC;
|
||||
typedef struct jpeg_error_mgr *JPEG_ERR;
|
||||
typedef struct jpeg_compress_struct *JPEG_ENC;
|
||||
typedef my_source_mgr *my_src_ptr;
|
||||
|
||||
|
||||
|
||||
|
||||
static void _jpeg_shutup( j_common_ptr cinfo, int msg_level)
|
||||
{
|
||||
( void)cinfo;
|
||||
( void)msg_level;
|
||||
}
|
||||
|
||||
|
||||
static void _jpeg_errjmp( j_common_ptr cinfo)
|
||||
{
|
||||
jmp_buf *escape = cinfo->client_data;
|
||||
|
||||
if ( escape)
|
||||
longjmp( *escape, TRUE);
|
||||
}
|
||||
|
||||
static void init_source (j_decompress_ptr cinfo)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
static boolean fill_input_buffer (j_decompress_ptr cinfo)
|
||||
{
|
||||
my_src_ptr src = (my_src_ptr) cinfo->src;
|
||||
|
||||
src->pub.next_input_byte = src->terminal;
|
||||
src->pub.bytes_in_buffer = 2;
|
||||
src->terminal[0] = (JOCTET) 0xFF;
|
||||
src->terminal[1] = (JOCTET) JPEG_EOI;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void skip_input_data( j_decompress_ptr cinfo, long num_bytes)
|
||||
{
|
||||
my_src_ptr src = (my_src_ptr) cinfo->src;
|
||||
src->pub.next_input_byte = src->pub.next_input_byte + num_bytes;
|
||||
}
|
||||
|
||||
static void term_source (j_decompress_ptr cinfo)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
boolean decompress_thumbnail_image( void *source, uint32 size, IMGINFO info)
|
||||
{
|
||||
int header = 0;
|
||||
jmp_buf escape;
|
||||
JPEG_ERR jerr;
|
||||
JPEG_DEC jpeg;
|
||||
my_src_ptr src;
|
||||
|
||||
jpeg = ( JPEG_DEC) malloc( sizeof( struct jpeg_decompress_struct));
|
||||
jerr = ( JPEG_ERR) malloc( sizeof( struct jpeg_error_mgr));
|
||||
|
||||
if ( jpeg == NULL || jerr == NULL)
|
||||
{
|
||||
if ( jerr) free( jerr);
|
||||
if ( jpeg) free( jpeg);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
if( setjmp( escape))
|
||||
{
|
||||
if ( header == 2)
|
||||
jpeg_abort_decompress( jpeg);
|
||||
|
||||
jpeg_destroy_decompress( jpeg);
|
||||
if ( jerr) free( jerr);
|
||||
if ( jpeg) free( jpeg);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
jpeg->err = jpeg_std_error( jerr);
|
||||
jpeg->err->emit_message = _jpeg_shutup;
|
||||
jpeg->err->error_exit = _jpeg_errjmp;
|
||||
jpeg->client_data = &escape;
|
||||
|
||||
jpeg_create_decompress( jpeg);
|
||||
|
||||
if (jpeg->src == NULL)
|
||||
jpeg->src = (struct jpeg_source_mgr *)(*jpeg->mem->alloc_small)((j_common_ptr)jpeg, JPOOL_PERMANENT, sizeof (my_source_mgr));
|
||||
|
||||
src = (my_src_ptr)jpeg->src;
|
||||
|
||||
src->pub.init_source = init_source;
|
||||
src->pub.fill_input_buffer = fill_input_buffer;
|
||||
src->pub.skip_input_data = skip_input_data;
|
||||
src->pub.resync_to_restart = jpeg_resync_to_restart;
|
||||
src->pub.term_source = term_source;
|
||||
src->pub.bytes_in_buffer = size;
|
||||
src->pub.next_input_byte = source;
|
||||
src->buffer = source;
|
||||
src->size = size;
|
||||
|
||||
jpeg_read_header( jpeg, TRUE);
|
||||
|
||||
jpeg->dct_method = JDCT_IFAST;
|
||||
jpeg->do_fancy_upsampling = FALSE;
|
||||
|
||||
header = 1;
|
||||
jpeg_start_decompress( jpeg);
|
||||
header = 2;
|
||||
|
||||
switch( jpeg->out_color_space)
|
||||
{
|
||||
case JCS_RGB:
|
||||
info->components = 3;
|
||||
break;
|
||||
case JCS_GRAYSCALE:
|
||||
info->components = 1;
|
||||
break;
|
||||
default:
|
||||
jpeg->out_color_space = JCS_RGB;
|
||||
info->components = jpeg->out_color_components = 3;
|
||||
break;
|
||||
}
|
||||
|
||||
info->width = jpeg->image_width;
|
||||
info->height = jpeg->image_height;
|
||||
info->planes = ( ( jpeg->out_color_space == JCS_RGB) ? 24 : 8);
|
||||
info->colors = 1 << info->planes;
|
||||
|
||||
info->_priv_ptr = ( void*)jpeg;
|
||||
info->_priv_var_more = 1;
|
||||
info->_priv_var = -1;
|
||||
|
||||
jpeg->client_data = NULL;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_init: *
|
||||
* Open the file "name", fit the "info" struct. ( see zview.h) and make others *
|
||||
* things needed by the decoder. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* name -> The file to open. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL reader_init( const char *name, IMGINFO info)
|
||||
{
|
||||
JPEG_ERR jerr;
|
||||
JPEG_DEC jpeg;
|
||||
jpeg_saved_marker_ptr mark;
|
||||
txt_data *comment;
|
||||
jmp_buf escape;
|
||||
FILE* jpeg_file;
|
||||
int16 header = 0;
|
||||
|
||||
/* If Brainstorm cookie is used, we try to decode with it*/
|
||||
if( jpgdrv)
|
||||
{
|
||||
int16 dsp_result = reader_dsp_init( name, info);
|
||||
|
||||
switch( dsp_result)
|
||||
{
|
||||
case GOLBAL_ERROR:
|
||||
dsp_decoding = FALSE;
|
||||
return FALSE;
|
||||
|
||||
case DSP_ERROR:
|
||||
case PROGRESSIVE_JPG:
|
||||
dsp_decoding = FALSE;
|
||||
break;
|
||||
|
||||
case ALL_OK:
|
||||
dsp_decoding = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ( jpeg_file = fopen( name, "rb")) == NULL)
|
||||
return FALSE;
|
||||
|
||||
jpeg = ( JPEG_DEC) malloc( sizeof( struct jpeg_decompress_struct));
|
||||
jerr = ( JPEG_ERR) malloc( sizeof( struct jpeg_error_mgr));
|
||||
comment = ( txt_data*)malloc( sizeof( txt_data));
|
||||
|
||||
if ( jpeg == NULL || jerr == NULL || comment == NULL)
|
||||
{
|
||||
if ( comment) free( comment);
|
||||
if ( jerr) free( jerr);
|
||||
if ( jpeg) free( jpeg);
|
||||
fclose( jpeg_file);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
comment->lines = 0;
|
||||
comment->max_lines_length = 0;
|
||||
comment->txt[0] = NULL;
|
||||
|
||||
jpeg->err = jpeg_std_error( jerr);
|
||||
jpeg->err->emit_message = _jpeg_shutup;
|
||||
jpeg->err->error_exit = _jpeg_errjmp;
|
||||
jpeg->client_data = &escape;
|
||||
|
||||
if ( setjmp( escape))
|
||||
{
|
||||
if ( header >= 2)
|
||||
jpeg_abort_decompress( jpeg);
|
||||
|
||||
jpeg_destroy_decompress( jpeg);
|
||||
|
||||
if ( comment)
|
||||
{
|
||||
register int16 i;
|
||||
|
||||
for ( i = 0; i < comment->lines; i++)
|
||||
{
|
||||
if( comment->txt[i])
|
||||
free( comment->txt[i]);
|
||||
}
|
||||
|
||||
free( comment);
|
||||
comment = NULL;
|
||||
}
|
||||
|
||||
if ( jerr) free( jerr);
|
||||
if ( jpeg) free( jpeg);
|
||||
fclose( jpeg_file);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
jpeg_create_decompress( jpeg);
|
||||
jpeg_stdio_src( jpeg, jpeg_file);
|
||||
jpeg_save_markers( jpeg, JPEG_COM, 0xffff); /* comment */
|
||||
jpeg_save_markers( jpeg, M_EXIF, 0xFFFF); /* EXIF */
|
||||
jpeg_read_header( jpeg, TRUE);
|
||||
|
||||
|
||||
// faster that the default method ( 10%) for a very little output quality lost
|
||||
jpeg->dct_method = JDCT_IFAST;
|
||||
jpeg->do_fancy_upsampling = FALSE;
|
||||
|
||||
header = 1;
|
||||
jpeg_start_decompress( jpeg);
|
||||
header = 2;
|
||||
|
||||
jpeg->client_data = NULL;
|
||||
|
||||
switch( jpeg->out_color_space)
|
||||
{
|
||||
case JCS_RGB:
|
||||
info->components = 3;
|
||||
break;
|
||||
case JCS_GRAYSCALE:
|
||||
info->components = 1;
|
||||
break;
|
||||
default:
|
||||
jpeg->out_color_space = JCS_RGB;
|
||||
info->components = jpeg->out_color_components = 3;
|
||||
break;
|
||||
}
|
||||
|
||||
info->real_width = jpeg->image_width;
|
||||
info->real_height = jpeg->image_height;
|
||||
info->width = info->real_width;
|
||||
info->height = info->real_height;
|
||||
info->planes = ( ( jpeg->out_color_space == JCS_RGB) ? 24 : 8);
|
||||
info->orientation = UP_TO_DOWN;
|
||||
info->colors = 1 << info->planes;
|
||||
info->memory_alloc = TT_RAM;
|
||||
info->indexed_color = FALSE;
|
||||
info->page = 1;
|
||||
info->delay = 0;
|
||||
|
||||
strcpy( info->info, "JPEG");
|
||||
|
||||
if( info->planes == 8)
|
||||
strcat( info->info, " Greyscale");
|
||||
|
||||
strcpy( info->compression, "JPG");
|
||||
|
||||
for ( mark = jpeg->marker_list; mark; mark = mark->next)
|
||||
{
|
||||
if( mark->marker == JPEG_COM)
|
||||
{
|
||||
if (!mark->data || !mark->data_length)
|
||||
continue;
|
||||
|
||||
comment->txt[comment->lines] = ( int8*)malloc( mark->data_length + 1);
|
||||
|
||||
if( comment->txt[comment->lines] == NULL)
|
||||
continue;
|
||||
|
||||
memcpy( comment->txt[comment->lines], mark->data, mark->data_length);
|
||||
comment->max_lines_length = MAX( comment->max_lines_length, ( int16)mark->data_length + 1);
|
||||
comment->lines++;
|
||||
}
|
||||
else if( mark->marker == M_EXIF)
|
||||
{
|
||||
int i, l, lenght;
|
||||
char value[1024+256];
|
||||
ExifData *exifData = exif_data_new_from_data(( char*)mark->data, mark->data_length);
|
||||
|
||||
if( !exifData)
|
||||
continue;
|
||||
|
||||
for( i = 0; i < EXIF_IFD_COUNT; i++)
|
||||
{
|
||||
ExifContent* content = exifData->ifd[i];
|
||||
|
||||
for ( l = 0; l < content->count; l++)
|
||||
{
|
||||
if( comment->lines > 253)
|
||||
break;
|
||||
|
||||
ExifEntry *e = content->entries[l];
|
||||
|
||||
sprintf( value, "%s", exif_tag_get_name (e->tag));
|
||||
|
||||
strcat( value, ": ");
|
||||
|
||||
lenght = strlen( value);
|
||||
|
||||
exif_entry_get_value( e, &value[lenght], sizeof(value) - lenght);
|
||||
|
||||
lenght = strlen( value);
|
||||
|
||||
comment->txt[comment->lines] = ( int8*)malloc( lenght + 1);
|
||||
|
||||
if( comment->txt[comment->lines] == NULL)
|
||||
break;
|
||||
|
||||
strcpy( comment->txt[comment->lines], value);
|
||||
|
||||
comment->max_lines_length = MAX( comment->max_lines_length, ( int16)lenght);
|
||||
comment->lines++;
|
||||
}
|
||||
}
|
||||
|
||||
if(( exifData->data) && ( exifData->size > 0) && info->thumbnail)
|
||||
{
|
||||
int32 size = exifData->size;
|
||||
|
||||
info->__priv_ptr_more = malloc( size + 1);
|
||||
memcpy( info->__priv_ptr_more, exifData->data, size);
|
||||
|
||||
exif_data_unref( exifData);
|
||||
|
||||
jpeg_finish_decompress( jpeg);
|
||||
jpeg_destroy_decompress( jpeg);
|
||||
free( jpeg->err);
|
||||
free( jpeg);
|
||||
fclose( jpeg_file);
|
||||
|
||||
if( decompress_thumbnail_image( info->__priv_ptr_more, size, info))
|
||||
{
|
||||
info->num_comments = comment->lines;
|
||||
info->max_comments_length = comment->max_lines_length;
|
||||
info->_priv_ptr_more = ( void*)comment;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
else // We can't extract the thumbnail :/
|
||||
{
|
||||
free( info->__priv_ptr_more);
|
||||
exif_data_unref( exifData);
|
||||
|
||||
if ( comment)
|
||||
{
|
||||
register int16 i;
|
||||
|
||||
for ( i = 0; i < comment->lines; i++)
|
||||
{
|
||||
if( comment->txt[i])
|
||||
free( comment->txt[i]);
|
||||
}
|
||||
|
||||
free( comment);
|
||||
comment = NULL;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
exif_data_unref( exifData);
|
||||
}
|
||||
}
|
||||
|
||||
info->num_comments = comment->lines;
|
||||
info->max_comments_length = comment->max_lines_length;
|
||||
|
||||
|
||||
info->_priv_ptr = ( void*)jpeg;
|
||||
info->_priv_ptr_more = ( void*)comment;
|
||||
info->__priv_ptr_more = NULL;
|
||||
info->_priv_var = jpeg_file;
|
||||
info->_priv_var_more = 0; /* 1 for exif thumbnail */
|
||||
|
||||
jpeg->client_data = NULL;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_get_txt *
|
||||
* This function , like other CDECL function mus be always present. *
|
||||
* It fills txtdata struct. with the text present in the picture ( if any). *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* txtdata -> The destination text buffer. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL reader_get_txt( IMGINFO info, txt_data *txtdata)
|
||||
{
|
||||
register int16 i;
|
||||
txt_data *comment;
|
||||
|
||||
if( dsp_decoding)
|
||||
return;
|
||||
|
||||
comment = ( txt_data *)info->_priv_ptr_more;
|
||||
|
||||
for ( i = 0; i < txtdata->lines; i++)
|
||||
strcpy( txtdata->txt[i] , comment->txt[i]);
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_read: *
|
||||
* This function fits the buffer with image data *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* buffer -> The destination buffer. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL reader_read( IMGINFO info, uint8 *buffer)
|
||||
{
|
||||
if( dsp_decoding)
|
||||
{
|
||||
const void *source = ( uint8*)info->_priv_ptr + info->_priv_var_more;
|
||||
|
||||
memcpy( ( void*)buffer, source, info->_priv_var);
|
||||
info->_priv_var_more += info->_priv_var;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if( jpeg_read_scanlines(( JPEG_DEC)info->_priv_ptr, ( JSAMPROW*)&buffer, 1))
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_quit: *
|
||||
* This function makes the last job like close the file handler and free the *
|
||||
* allocated memory. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL reader_quit( IMGINFO info)
|
||||
{
|
||||
JPEG_DEC jpeg;
|
||||
txt_data *comment;
|
||||
|
||||
if( dsp_decoding)
|
||||
{
|
||||
if( info->_priv_ptr)
|
||||
{
|
||||
// DSP decoder uses Mxalloc()
|
||||
Mfree( info->_priv_ptr);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
jpeg = ( JPEG_DEC)info->_priv_ptr;
|
||||
comment = ( txt_data *)info->_priv_ptr_more;
|
||||
|
||||
if( !jpeg)
|
||||
return;
|
||||
|
||||
if( comment)
|
||||
{
|
||||
register int16 i;
|
||||
|
||||
for ( i = 0; i < comment->lines; i++)
|
||||
{
|
||||
if( comment->txt[i])
|
||||
free( comment->txt[i]);
|
||||
}
|
||||
free( comment);
|
||||
}
|
||||
|
||||
jpeg_finish_decompress( jpeg);
|
||||
jpeg_destroy_decompress( jpeg);
|
||||
|
||||
free( jpeg->err);
|
||||
free( jpeg);
|
||||
|
||||
/* thumbnail mode? */
|
||||
if( info->__priv_ptr_more)
|
||||
{
|
||||
free( info->__priv_ptr_more);
|
||||
return;
|
||||
}
|
||||
|
||||
fclose( info->_priv_var);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean set_jpg_option: *
|
||||
* This function set some encoder's options *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL set_jpg_option( int16 set_quality, J_COLOR_SPACE set_color_space, boolean set_progressive)
|
||||
{
|
||||
quality = set_quality;
|
||||
color_space = set_color_space;
|
||||
progressive = set_progressive;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL encoder_init: *
|
||||
* Open the file "name", fit the "info" struct. ( see zview.h) and make others *
|
||||
* things needed by the encoder. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* name -> The file to open. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL encoder_init( const char *name, IMGINFO info)
|
||||
{
|
||||
JPEG_ERR jerr = NULL;
|
||||
JPEG_ENC jpeg = NULL;
|
||||
FILE* jpeg_file;
|
||||
jmp_buf escape;
|
||||
int16 header = 0;
|
||||
|
||||
if ( ( jpeg_file = fopen( name, "wb")) == NULL)
|
||||
return FALSE;
|
||||
|
||||
jpeg = ( JPEG_ENC) malloc( sizeof( struct jpeg_decompress_struct));
|
||||
jerr = ( JPEG_ERR) malloc( sizeof( struct jpeg_error_mgr));
|
||||
|
||||
if ( jpeg == NULL || jerr == NULL)
|
||||
{
|
||||
if ( jerr) free( jerr);
|
||||
if ( jpeg) free( jpeg);
|
||||
fclose( jpeg_file);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if ( setjmp( escape))
|
||||
{
|
||||
if ( header > 1)
|
||||
jpeg_abort_compress( jpeg);
|
||||
|
||||
jpeg_destroy_compress( jpeg);
|
||||
|
||||
if ( jerr) free( jerr);
|
||||
if ( jpeg) free( jpeg);
|
||||
jerr = NULL;
|
||||
jpeg = NULL;
|
||||
fclose( jpeg_file);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
jpeg->err = jpeg_std_error( jerr);
|
||||
jpeg->err->emit_message = _jpeg_shutup;
|
||||
jpeg->err->error_exit = _jpeg_errjmp;
|
||||
jpeg->client_data = &escape;
|
||||
|
||||
jpeg_create_compress( jpeg);
|
||||
jpeg_stdio_dest( jpeg, jpeg_file);
|
||||
|
||||
jpeg->image_width = info->width;
|
||||
jpeg->image_height = info->height;
|
||||
jpeg->input_components = info->components = 3;
|
||||
jpeg->in_color_space = JCS_RGB;
|
||||
|
||||
jpeg_set_defaults( jpeg);
|
||||
jpeg_set_colorspace ( jpeg, color_space);
|
||||
|
||||
/* jpeg->num_components = ( color_space == JCS_RGB ? 3 : 1);
|
||||
jpeg->jpeg_color_space = color_space;
|
||||
*/ jpeg->progressive_mode = progressive;
|
||||
|
||||
jpeg_set_quality( jpeg, quality, TRUE);
|
||||
|
||||
header = 1;
|
||||
jpeg_start_compress( jpeg, TRUE);
|
||||
header = 2;
|
||||
|
||||
info->planes = 24;
|
||||
info->colors = 16777215L;
|
||||
info->orientation = UP_TO_DOWN;
|
||||
info->real_width = info->width;
|
||||
info->real_height = info->height;
|
||||
info->memory_alloc = TT_RAM;
|
||||
info->indexed_color = FALSE;
|
||||
info->page = 1;
|
||||
info->delay = 0;
|
||||
info->_priv_ptr = ( void*)jpeg;
|
||||
info->_priv_ptr_more = NULL;
|
||||
info->__priv_ptr_more = NULL;
|
||||
info->_priv_var = jpeg_file;
|
||||
info->_priv_var_more = 0;
|
||||
|
||||
jpeg->client_data = NULL;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECLencoder_write: *
|
||||
* This function write data from buffer to file *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* buffer -> The source buffer. *
|
||||
* info -> The IMGINFO struct . *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL encoder_write( IMGINFO info, uint8 *buffer)
|
||||
{
|
||||
( void)jpeg_write_scanlines( ( JPEG_ENC)info->_priv_ptr, ( JSAMPROW*)&buffer, 1);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL encoder_quit: *
|
||||
* This function makes the last job like close the file handler and free the *
|
||||
* allocated memory. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL encoder_quit( IMGINFO info)
|
||||
{
|
||||
JPEG_ENC jpeg = ( JPEG_ENC)info->_priv_ptr;
|
||||
if( jpeg)
|
||||
{
|
||||
jpeg_finish_compress( jpeg);
|
||||
jpeg_destroy_compress( jpeg);
|
||||
free( jpeg->err);
|
||||
free( jpeg);
|
||||
fclose( info->_priv_var);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL init: *
|
||||
* First function called from zview, in this one, you can make some internal *
|
||||
* initialisation. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* -- *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL init( void)
|
||||
{
|
||||
int32 mach, cpu = 0;
|
||||
|
||||
/* DSP decoder present */
|
||||
if( Getcookie( C__JPD, ( long*)&jpgdrv) != 0)
|
||||
jpgdrv = NULL;
|
||||
else
|
||||
{
|
||||
// Cconws("JPG Cookie found \n\r");
|
||||
|
||||
Getcookie( C__MCH, ( long*)&mach);
|
||||
|
||||
/* If Aranym is detected, we decode with the DSP routine */
|
||||
/* and we can use TT ram for DSP allocation */
|
||||
if( mach == 0x50000L)
|
||||
{
|
||||
dsp_ram = 3;
|
||||
// Cconws("JPG Cookie used \n\r");
|
||||
return;
|
||||
}
|
||||
|
||||
Getcookie( C__CPU, ( long*)&cpu);
|
||||
cpu &= 0xFFFF;
|
||||
|
||||
/* if we have a CPU > 68030, we decode with this one, it's faster */
|
||||
if( cpu != 30)
|
||||
jpgdrv = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* int main: *
|
||||
* Main function, his job is to call ldg_init function. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* -- *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* 0 *
|
||||
*==================================================================================*/
|
||||
int main( void)
|
||||
{
|
||||
ldg_init( &plugin);
|
||||
return( 0);
|
||||
}
|
||||
|
||||
9
sources/z-tools/trunk/zview/plugins/libs.txt
Normal file
9
sources/z-tools/trunk/zview/plugins/libs.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Download required libs from:
|
||||
|
||||
https://sourceforge.net/projects/giflib/
|
||||
http://www.libpng.org/pub/png/libpng.html
|
||||
http://www.ijg.org/
|
||||
http://libtiff.maptools.org/
|
||||
http://easybmp.sourceforge.net/
|
||||
http://libexif.sourceforge.net/
|
||||
http://www.cs.wisc.edu/graphics/Gallery/LibTarga/
|
||||
13
sources/z-tools/trunk/zview/plugins/neochrome/Makefile
Normal file
13
sources/z-tools/trunk/zview/plugins/neochrome/Makefile
Normal file
@@ -0,0 +1,13 @@
|
||||
STACKSIZE = 64k
|
||||
OPTIMISATION = -O2 -fomit-frame-pointer -finline-functions
|
||||
CPU = -m68020-60
|
||||
LIB = -lldgserver
|
||||
|
||||
CFLAGS = $(CPU) $(OPTIMISATION) -Wall -I../common
|
||||
LDFLAGS = -nostdlib
|
||||
|
||||
OBJ = $(LDG_STARTUP_OBJ) neoldg.o
|
||||
|
||||
PROGRAM = neo.ldg
|
||||
|
||||
include ../../../common.mak
|
||||
503
sources/z-tools/trunk/zview/plugins/neochrome/copyright
Normal file
503
sources/z-tools/trunk/zview/plugins/neochrome/copyright
Normal file
@@ -0,0 +1,503 @@
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser 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
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
302
sources/z-tools/trunk/zview/plugins/neochrome/neoldg.c
Normal file
302
sources/z-tools/trunk/zview/plugins/neochrome/neoldg.c
Normal file
@@ -0,0 +1,302 @@
|
||||
#include "zview.h"
|
||||
|
||||
boolean CDECL reader_init( const char *name, IMGINFO info);
|
||||
boolean CDECL reader_read( IMGINFO info, uint8 *buffer);
|
||||
void CDECL reader_get_txt( IMGINFO info, txt_data *txtdata);
|
||||
void CDECL reader_quit( IMGINFO info);
|
||||
void CDECL init( void);
|
||||
|
||||
|
||||
PROC NEOFunc[] =
|
||||
{
|
||||
{ "plugin_init", "", init},
|
||||
{ "reader_init", "", reader_init},
|
||||
{ "reader_get_txt", "", reader_get_txt},
|
||||
{ "reader_read", "", reader_read},
|
||||
{ "reader_quit", "", reader_quit}
|
||||
};
|
||||
|
||||
|
||||
LDGLIB neo_plugin =
|
||||
{
|
||||
0x0200, /* Plugin version */
|
||||
5, /* Number of plugin's functions */
|
||||
NEOFunc, /* List of functions */
|
||||
"NEO", /* File's type Handled */
|
||||
LDG_NOT_SHARED, /* The flags NOT_SHARED is used here.. even if zview plugins are reentrant
|
||||
and are shareable, we must use this flags because we don't know if the
|
||||
user has ldg.prg deamon installed on his computer */
|
||||
NULL, /* Function called when the plugin is unloaded */
|
||||
1L /* Howmany file type are supported by this plugin */
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int16 flags; /* Always 0 */
|
||||
int16 resolution; /* 0 = low, 1 = medium, 3 = high */
|
||||
uint16 palette[16]; /* Picture palette in Atari ST hardware format */
|
||||
int8 filename[12]; /* The original file name */
|
||||
int16 color_anim_limit; /* color animation limit */
|
||||
int16 color_anim_speed; /* color animation speed and direction */
|
||||
int16 color_steps; /* numbre of color step */
|
||||
int16 x_offset; /* image offset */
|
||||
int16 y_offset; /* " */
|
||||
int16 width;
|
||||
int16 height;
|
||||
int16 reserverd[33];
|
||||
} NEOHDR;
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_init: *
|
||||
* Open the file "name", fit the "info" struct. ( see zview.h) and make others *
|
||||
* things needed by the decoder. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* name -> The file to open. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL reader_init( const char *name, IMGINFO info)
|
||||
{
|
||||
int32 position;
|
||||
int16 handle;
|
||||
NEOHDR *neo;
|
||||
|
||||
if ( ( handle = ( int16)Fopen( name, 0)) < 0)
|
||||
return FALSE;
|
||||
|
||||
if( Fseek( 0L, handle, 2) != 32128L)
|
||||
{
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
Fseek( 0L, handle, 0);
|
||||
|
||||
neo = ( NEOHDR *)malloc( 32128L);
|
||||
|
||||
if ( neo == NULL)
|
||||
{
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if ( Fread( handle, 32128L, neo) != 32128L)
|
||||
{
|
||||
free( neo);
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
Fclose( handle);
|
||||
|
||||
switch( neo->resolution)
|
||||
{
|
||||
case 0:
|
||||
info->width = 320;
|
||||
info->height = 200;
|
||||
info->planes = 4;
|
||||
info->components = 3;
|
||||
info->indexed_color = TRUE;
|
||||
info->colors = 16;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
info->width = 640;
|
||||
info->height = 200;
|
||||
info->planes = 2;
|
||||
info->components = 3;
|
||||
info->indexed_color = TRUE;
|
||||
info->colors = 4;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
info->width = 640;
|
||||
info->height = 400;
|
||||
info->planes = 1;
|
||||
info->components = 1;
|
||||
info->indexed_color = FALSE;
|
||||
info->colors = 2;
|
||||
break;
|
||||
|
||||
default:
|
||||
free( neo);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
position = sizeof( NEOHDR);
|
||||
|
||||
info->real_width = info->width;
|
||||
info->real_height = info->height;
|
||||
info->memory_alloc = TT_RAM;
|
||||
info->page = 1;
|
||||
info->delay = 0;
|
||||
info->orientation = UP_TO_DOWN;
|
||||
info->num_comments = 0;
|
||||
info->max_comments_length = 0;
|
||||
info->_priv_ptr = ( void*)neo;
|
||||
info->_priv_var_more = position;
|
||||
|
||||
strcpy( info->info, "Neochrome");
|
||||
strcpy( info->compression, "None");
|
||||
|
||||
if( info->indexed_color)
|
||||
{
|
||||
register int16 i;
|
||||
|
||||
for ( i = 0; i < info->colors; i++)
|
||||
{
|
||||
info->palette[i].red = ((( neo->palette[i] >> 7) & 0xE) + (( neo->palette[i] >> 11) & 0x1)) * 0x11;
|
||||
info->palette[i].green = ((( neo->palette[i] >> 3) & 0xE) + (( neo->palette[i] >> 7) & 0x1)) * 0x11;
|
||||
info->palette[i].blue = ((( neo->palette[i] << 1) & 0xE) + (( neo->palette[i] >> 3) & 0x1)) * 0x11;
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_read: *
|
||||
* This function fits the buffer with image data *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* buffer -> The destination buffer. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL reader_read( IMGINFO info, uint8 *buffer)
|
||||
{
|
||||
NEOHDR *neo = ( NEOHDR*)info->_priv_ptr;
|
||||
uint8 *l, *s = ( uint8*)neo + info->_priv_var_more;
|
||||
uint16 x, c, p0, p1, p2, p3;
|
||||
|
||||
switch( info->planes)
|
||||
{
|
||||
case 4:
|
||||
for( x = 0, l = s; x < info->width; l += 8)
|
||||
{
|
||||
p0 = ( l[0] << 8) | l[1];
|
||||
p1 = ( l[2] << 8) | l[3];
|
||||
p2 = ( l[4] << 8) | l[5];
|
||||
p3 = ( l[6] << 8) | l[7];
|
||||
|
||||
for ( c = 0; c < 16; c++)
|
||||
{
|
||||
buffer[x++] = ((p0 >> 15) & 1) | ((p1 >> 14) & 2) | ((p2 >> 13) & 4) | ((p3 >> 12) & 8);
|
||||
p0 <<= 1;
|
||||
p1 <<= 1;
|
||||
p2 <<= 1;
|
||||
p3 <<= 1;
|
||||
}
|
||||
}
|
||||
info->_priv_var_more += 160;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
for ( x = 0, l = s; x < info->width; l += 4)
|
||||
{
|
||||
p0 = (l[0] << 8) | l[1];
|
||||
p1 = (l[2] << 8) | l[3];
|
||||
|
||||
for (c = 0; c < 16; c++)
|
||||
{
|
||||
buffer[x++] = ((p0 >> 15) & 1) | ((p1 >> 14) & 2);
|
||||
p0 <<= 1;
|
||||
p1 <<= 1;
|
||||
}
|
||||
}
|
||||
info->_priv_var_more += 160;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
for (x = 0, l = s; x < info->width; l += 2)
|
||||
{
|
||||
p0 = ( l[0] << 8) | l[1];
|
||||
|
||||
for ( c = 0; c < 16; c++)
|
||||
{
|
||||
buffer[x++] = ((p0 >> 15) & 1);
|
||||
p0 <<= 1;
|
||||
}
|
||||
}
|
||||
info->_priv_var_more += 80;
|
||||
break;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_get_txt *
|
||||
* This function , like other CDECL function mus be always present. *
|
||||
* It fills txtdata struct. with the text present in the picture ( if any). *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* txtdata -> The destination text buffer. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL reader_get_txt( IMGINFO info, txt_data *txtdata)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_quit: *
|
||||
* This function makes the last job like close the file handler and free the *
|
||||
* allocated memory. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL reader_quit( IMGINFO info)
|
||||
{
|
||||
NEOHDR *neo = ( NEOHDR*)info->_priv_ptr;
|
||||
|
||||
free( neo);
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL init: *
|
||||
* First function called from zview, in this one, you can make some internal *
|
||||
* initialisation. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* -- *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL init( void)
|
||||
{
|
||||
}
|
||||
|
||||
/*==================================================================================*
|
||||
* int main: *
|
||||
* Main function, his job is to call ldg_init function. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* -- *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* 0 *
|
||||
*==================================================================================*/
|
||||
int main( void)
|
||||
{
|
||||
ldg_init( &neo_plugin);
|
||||
return( 0);
|
||||
}
|
||||
13
sources/z-tools/trunk/zview/plugins/png/Makefile
Normal file
13
sources/z-tools/trunk/zview/plugins/png/Makefile
Normal file
@@ -0,0 +1,13 @@
|
||||
STACKSIZE = 64k
|
||||
OPTIMISATION = -O2 -fomit-frame-pointer
|
||||
CPU = -m68020-60
|
||||
LIB = -lpng -lz -lldgserver
|
||||
|
||||
CFLAGS = $(CPU) $(OPTIMISATION) -Wall -I../common
|
||||
LDFLAGS = -nostdlib
|
||||
|
||||
OBJ = $(LDG_STARTUP_OBJ) pngldg.o
|
||||
|
||||
PROGRAM = png.ldg
|
||||
|
||||
include ../../../common.mak
|
||||
503
sources/z-tools/trunk/zview/plugins/png/copyright
Normal file
503
sources/z-tools/trunk/zview/plugins/png/copyright
Normal file
@@ -0,0 +1,503 @@
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser 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
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
364
sources/z-tools/trunk/zview/plugins/png/pngldg.c
Normal file
364
sources/z-tools/trunk/zview/plugins/png/pngldg.c
Normal file
@@ -0,0 +1,364 @@
|
||||
#include "zview.h"
|
||||
#include <png.h>
|
||||
|
||||
boolean CDECL reader_init( const char *name, IMGINFO info);
|
||||
boolean CDECL reader_read( IMGINFO info, uint8 *buffer);
|
||||
void CDECL reader_get_txt( IMGINFO info, txt_data *txtdata);
|
||||
void CDECL reader_quit( IMGINFO info);
|
||||
void CDECL init( void);
|
||||
|
||||
#define alpha_composite( composite, fg, alpha, bg) { \
|
||||
uint16 register temp = (( uint16)( fg) * ( uint16)( alpha) + \
|
||||
( uint16)( bg) * ( uint16)(255 - ( uint16)( alpha)) + ( uint16)128); \
|
||||
( composite) = ( uint8)(( temp + ( temp >> 8)) >> 8); \
|
||||
}
|
||||
|
||||
PROC PNGFunc[] =
|
||||
{
|
||||
{ "plugin_init", "", init},
|
||||
{ "reader_init", "", reader_init},
|
||||
{ "reader_get_txt", "", reader_get_txt},
|
||||
{ "reader_read", "", reader_read},
|
||||
{ "reader_quit", "", reader_quit}
|
||||
};
|
||||
|
||||
|
||||
LDGLIB png_plugin =
|
||||
{
|
||||
0x0200, /* Plugin version */
|
||||
5, /* Number of plugin's functions */
|
||||
PNGFunc, /* List of functions */
|
||||
"PNG", /* File's type Handled */
|
||||
LDG_NOT_SHARED, /* The flags NOT_SHARED is used here.. even if zview plugins are reentrant
|
||||
and are shareable, we must use this flags because we don't know if the
|
||||
user has ldg.prg deamon installed on his computer */
|
||||
NULL, /* Function called when the plugin is unloaded */
|
||||
1L /* Howmany file type are supported by this plugin */
|
||||
};
|
||||
|
||||
boolean first_pass;
|
||||
uint8 *line_buffer, *png_image, *png_image_ptr;
|
||||
int16 number_passes;
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* void tga_write_pixel_to_mem: *
|
||||
* Write the pixel to the data regarding how the header says the data *
|
||||
* is ordered. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* dst -> the pixel is wrote here. *
|
||||
* orientation -> the pixel orientation ( from TGA header). *
|
||||
* pixel_position -> the pixel position in the x axis. *
|
||||
* width -> the image's width. *
|
||||
* pixel -> the 24 bits pixel to write. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
boolean CDECL reader_init( const char *name, IMGINFO info)
|
||||
{
|
||||
png_structp png_ptr = NULL;
|
||||
png_infop info_ptr = NULL;
|
||||
FILE* png_file;
|
||||
char header[8];
|
||||
int header_size = sizeof( header);
|
||||
/* png_color_16 my_background = {0,0xFFFF,0xFFFF,0xFFFF,0xFFFF};
|
||||
png_color_16p image_background;
|
||||
*/
|
||||
png_textp png_text_ptr;
|
||||
int num_text;
|
||||
|
||||
first_pass = TRUE;
|
||||
png_image = NULL;
|
||||
line_buffer = NULL;
|
||||
number_passes = 0;
|
||||
|
||||
|
||||
if ( ( png_file = fopen( name, "rb")) == NULL)
|
||||
return FALSE;
|
||||
|
||||
if ( fread( header, 1, header_size, png_file) != header_size || png_sig_cmp( header, 0, header_size))
|
||||
{
|
||||
fclose ( png_file);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
png_ptr = png_create_read_struct( PNG_LIBPNG_VER_STRING, NULL, 0, 0);
|
||||
|
||||
if ( !png_ptr || ( info_ptr = png_create_info_struct ( png_ptr)) == NULL)
|
||||
{
|
||||
png_destroy_read_struct ( &png_ptr, &info_ptr, NULL);
|
||||
fclose ( png_file);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if( setjmp( png_jmpbuf( png_ptr)))
|
||||
{
|
||||
png_destroy_read_struct( &png_ptr, &info_ptr, NULL);
|
||||
fclose ( png_file);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
png_init_io ( png_ptr, png_file);
|
||||
png_set_sig_bytes ( png_ptr, ( int)header_size);
|
||||
png_read_info ( png_ptr, info_ptr);
|
||||
|
||||
if( png_get_color_type( png_ptr, info_ptr) == PNG_COLOR_TYPE_PALETTE)
|
||||
png_set_expand( png_ptr);
|
||||
if( png_get_color_type( png_ptr, info_ptr) == PNG_COLOR_TYPE_GRAY && png_get_bit_depth( png_ptr, info_ptr) < 8)
|
||||
png_set_expand( png_ptr);
|
||||
if( png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS))
|
||||
png_set_tRNS_to_alpha( png_ptr);
|
||||
if( png_get_bit_depth( png_ptr, info_ptr) == 16)
|
||||
png_set_strip_16( png_ptr);
|
||||
if( png_get_color_type( png_ptr, info_ptr) == PNG_COLOR_TYPE_GRAY || png_get_color_type( png_ptr, info_ptr) == PNG_COLOR_TYPE_GRAY_ALPHA)
|
||||
png_set_gray_to_rgb( png_ptr);
|
||||
|
||||
strcpy( info->info, "Portable Network Format ");
|
||||
strcpy( info->compression, "ZIP");
|
||||
|
||||
if ( png_get_interlace_type( png_ptr, info_ptr) == PNG_INTERLACE_ADAM7)
|
||||
{
|
||||
strcat( info->info, "( Interlaced)");
|
||||
number_passes = png_set_interlace_handling( png_ptr);
|
||||
}
|
||||
|
||||
png_read_update_info( png_ptr, info_ptr);
|
||||
|
||||
png_get_text( png_ptr, info_ptr, &png_text_ptr, &num_text);
|
||||
|
||||
info->width = png_get_image_width( png_ptr, info_ptr);
|
||||
info->height = png_get_image_height( png_ptr, info_ptr);
|
||||
info->real_width = info->width;
|
||||
info->real_height = info->height;
|
||||
info->memory_alloc = TT_RAM;
|
||||
info->components = ( png_get_channels( png_ptr, info_ptr) > 3) ? 3 : png_get_channels( png_ptr, info_ptr);
|
||||
info->planes = png_get_bit_depth( png_ptr, info_ptr);
|
||||
info->colors = 1 << info->planes;
|
||||
info->delay = 0;
|
||||
info->orientation = UP_TO_DOWN;
|
||||
info->page = 1;
|
||||
info->num_comments = num_text;
|
||||
info->max_comments_length = 0;
|
||||
info->indexed_color = FALSE;
|
||||
info->_priv_ptr = ( void*)png_ptr;
|
||||
info->_priv_ptr_more = ( void*)info_ptr;
|
||||
info->__priv_ptr_more = png_file;
|
||||
|
||||
if( png_get_channels( png_ptr, info_ptr) == 4)
|
||||
{
|
||||
line_buffer = ( uint8*)malloc( png_get_rowbytes( png_ptr, info_ptr) + 64);
|
||||
|
||||
if( line_buffer == NULL)
|
||||
{
|
||||
reader_quit( info);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if( num_text)
|
||||
{
|
||||
register int16 i;
|
||||
|
||||
for ( i = 0; i < num_text; i++)
|
||||
info->max_comments_length = MAX( info->max_comments_length, ( strlen(png_text_ptr[i].key) + png_text_ptr[i].text_length));
|
||||
|
||||
info->max_comments_length += 4;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_get_txt *
|
||||
* This function , like other CDECL function mus be always present. *
|
||||
* It fills txtdata struct. with the text present in the picture ( if any). *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* txtdata -> The destination text buffer. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL reader_get_txt( IMGINFO info, txt_data *txtdata)
|
||||
{
|
||||
register int16 i;
|
||||
png_infop info_ptr = ( png_infop)info->_priv_ptr_more;
|
||||
png_structp png_ptr = ( png_structp)info->_priv_ptr;
|
||||
png_textp png_text_ptr;
|
||||
int num_text;
|
||||
|
||||
png_get_text( png_ptr, info_ptr, &png_text_ptr, &num_text);
|
||||
|
||||
for ( i = 0; i < txtdata->lines; i++)
|
||||
sprintf( txtdata->txt[i] , "%s: %s", png_text_ptr[i].key, png_text_ptr[i].text);
|
||||
}
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_read: *
|
||||
* This function fits the buffer with image data *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* buffer -> The destination buffer. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL reader_read( IMGINFO info, uint8 *buffer)
|
||||
{
|
||||
png_structp png_ptr = ( png_structp)info->_priv_ptr;
|
||||
png_infop info_ptr = ( png_infop)info->_priv_ptr_more;
|
||||
uint8 *buf;
|
||||
int16 i;
|
||||
|
||||
if( png_get_channels( png_ptr, info_ptr) == 4)
|
||||
buf = line_buffer;
|
||||
else
|
||||
buf = buffer;
|
||||
|
||||
if( setjmp( png_jmpbuf( png_ptr)))
|
||||
return FALSE;
|
||||
|
||||
if( png_get_interlace_type( png_ptr, info_ptr) == PNG_INTERLACE_ADAM7)
|
||||
{
|
||||
/* We make the first pass here and not before to avoid memory fragmentation */
|
||||
if( first_pass == TRUE)
|
||||
{
|
||||
int16 pass;
|
||||
|
||||
png_image = ( uint8*)malloc( png_get_rowbytes( png_ptr, info_ptr) * ( info->height + 1));
|
||||
|
||||
png_image_ptr = png_image;
|
||||
|
||||
for ( pass = 1; pass < number_passes; pass++)
|
||||
{
|
||||
for( i = 0; i < info->height; i++)
|
||||
{
|
||||
png_bytep row = png_image + i * png_get_rowbytes( png_ptr, info_ptr);
|
||||
png_read_row( png_ptr, row, NULL);
|
||||
}
|
||||
}
|
||||
first_pass = FALSE;
|
||||
}
|
||||
|
||||
png_read_row( png_ptr, png_image_ptr, NULL);
|
||||
memcpy( buf, png_image_ptr, png_get_rowbytes( png_ptr, info_ptr));
|
||||
png_image_ptr += png_get_rowbytes( png_ptr, info_ptr);
|
||||
}
|
||||
else
|
||||
png_read_row( png_ptr, buf, NULL);
|
||||
|
||||
|
||||
if( png_get_channels( png_ptr, info_ptr) == 4)
|
||||
{
|
||||
uint8 red, green, blue, r, g, b, a;
|
||||
uint8 *dest = buffer, *buf_ptr = buf;
|
||||
|
||||
for ( i = info->width; i > 0; --i)
|
||||
{
|
||||
r = *buf_ptr++;
|
||||
g = *buf_ptr++;
|
||||
b = *buf_ptr++;
|
||||
a = *buf_ptr++;
|
||||
|
||||
if( a == 255)
|
||||
{
|
||||
red = r;
|
||||
green = g;
|
||||
blue = b;
|
||||
}
|
||||
else if ( a == 0)
|
||||
{
|
||||
red = 0xFF;
|
||||
green = 0xFF;
|
||||
blue = 0xFF;
|
||||
}
|
||||
else
|
||||
{
|
||||
register uint32 transparent_color = info->background_color;
|
||||
|
||||
alpha_composite( red, r, a, ( transparent_color >> 16) & 0xFF);
|
||||
alpha_composite( green, g, a, ( transparent_color >> 8) & 0xFF);
|
||||
alpha_composite( blue, b, a, ( transparent_color) & 0xFF);
|
||||
}
|
||||
|
||||
*dest++ = red;
|
||||
*dest++ = green;
|
||||
*dest++ = blue;
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_quit: *
|
||||
* This function makes the last job like close the file handler and free the *
|
||||
* allocated memory. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL reader_quit( IMGINFO info)
|
||||
{
|
||||
png_structp png_ptr = ( png_structp)info->_priv_ptr;
|
||||
png_infop info_ptr = ( png_infop)info->_priv_ptr_more;
|
||||
|
||||
if ( png_ptr)
|
||||
{
|
||||
if( png_image)
|
||||
free ( png_image);
|
||||
|
||||
if( line_buffer)
|
||||
free( line_buffer);
|
||||
|
||||
if ( !setjmp( png_jmpbuf( png_ptr)))
|
||||
png_read_end( png_ptr, info_ptr);
|
||||
|
||||
png_destroy_read_struct ( &png_ptr, &info_ptr, NULL);
|
||||
fclose( info->__priv_ptr_more);
|
||||
info->_priv_ptr = NULL;
|
||||
info->_priv_ptr_more = NULL;
|
||||
info->__priv_ptr_more = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL init: *
|
||||
* First function called from zview, in this one, you can make some internal *
|
||||
* initialisation. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* -- *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL init( void)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/*==================================================================================*
|
||||
* int main: *
|
||||
* Main function, his job is to call ldg_init function. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* -- *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* 0 *
|
||||
*==================================================================================*/
|
||||
int main( void)
|
||||
{
|
||||
ldg_init( &png_plugin);
|
||||
return( 0);
|
||||
}
|
||||
13
sources/z-tools/trunk/zview/plugins/tga/Makefile
Normal file
13
sources/z-tools/trunk/zview/plugins/tga/Makefile
Normal file
@@ -0,0 +1,13 @@
|
||||
STACKSIZE = 64k
|
||||
OPTIMISATION = -O2 -fomit-frame-pointer -finline-functions
|
||||
CPU = -m68020-60
|
||||
LIB = -lldgserver
|
||||
|
||||
CFLAGS = $(CPU) $(OPTIMISATION) -Wall -I../common
|
||||
LDFLAGS = -nostdlib
|
||||
|
||||
OBJ = $(LDG_STARTUP_OBJ) tgaldg.o
|
||||
|
||||
PROGRAM = tga.ldg
|
||||
|
||||
include ../../../common.mak
|
||||
503
sources/z-tools/trunk/zview/plugins/tga/copyright
Normal file
503
sources/z-tools/trunk/zview/plugins/tga/copyright
Normal file
@@ -0,0 +1,503 @@
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser 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
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
67
sources/z-tools/trunk/zview/plugins/tga/libtarga.h
Normal file
67
sources/z-tools/trunk/zview/plugins/tga/libtarga.h
Normal file
@@ -0,0 +1,67 @@
|
||||
#ifndef _libtarga_h_
|
||||
#define _libtarga_h_
|
||||
|
||||
#define TGA_IMG_NODATA (0)
|
||||
#define TGA_IMG_UNC_PALETTED (1)
|
||||
#define TGA_IMG_UNC_TRUECOLOR (2)
|
||||
#define TGA_IMG_UNC_GRAYSCALE (3)
|
||||
#define TGA_IMG_RLE_PALETTED (9)
|
||||
#define TGA_IMG_RLE_TRUECOLOR (10)
|
||||
#define TGA_IMG_RLE_GRAYSCALE (11)
|
||||
|
||||
|
||||
#define TGA_LOWER_LEFT (0)
|
||||
#define TGA_LOWER_RIGHT (1)
|
||||
#define TGA_UPPER_LEFT (2)
|
||||
#define TGA_UPPER_RIGHT (3)
|
||||
|
||||
|
||||
#define HDR_LENGTH (18)
|
||||
#define HDR_IDLEN (0)
|
||||
#define HDR_CMAP_TYPE (1)
|
||||
#define HDR_IMAGE_TYPE (2)
|
||||
#define HDR_CMAP_FIRST (3)
|
||||
#define HDR_CMAP_LENGTH (5)
|
||||
#define HDR_CMAP_ENTRY_SIZE (7)
|
||||
#define HDR_IMG_SPEC_XORIGIN (8)
|
||||
#define HDR_IMG_SPEC_YORIGIN (10)
|
||||
#define HDR_IMG_SPEC_WIDTH (12)
|
||||
#define HDR_IMG_SPEC_HEIGHT (14)
|
||||
#define HDR_IMG_SPEC_PIX_DEPTH (16)
|
||||
#define HDR_IMG_SPEC_IMG_DESC (17)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 idlen; /* length of the image_id string below. */
|
||||
uint8 cmap_type; /* paletted image <=> cmap_type */
|
||||
uint8 image_type; /* can be any of the IMG_TYPE constants above. */
|
||||
uint16 cmap_first;
|
||||
uint16 cmap_length; /* how long the colormap is */
|
||||
uint8 cmap_entry_size; /* how big a palette entry is. */
|
||||
uint16 img_spec_xorig; /* the x origin of the image in the image data.*/
|
||||
uint16 img_spec_yorig; /* the y origin of the image in the image data.*/
|
||||
uint16 img_spec_width; /* the width of the image. */
|
||||
uint16 img_spec_height; /* the height of the image. */
|
||||
uint8 img_spec_pix_depth; /* the depth of a pixel in the image. */
|
||||
uint8 img_spec_img_desc; /* the image descriptor. */
|
||||
} targa_hdr;
|
||||
|
||||
#define TGA_TRUECOLOR_32 (4)
|
||||
#define TGA_TRUECOLOR_24 (3)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int16 handle;
|
||||
uint8 *img_buf; /* buffer for 1 line of packet TGA Data */
|
||||
uint8 alphabits;
|
||||
uint8 bytes_per_pix;
|
||||
uint8 orientation;
|
||||
int32 line_size;
|
||||
int32 img_buf_len; /* L<>nge des IMG-Buffers */
|
||||
int32 img_buf_offset; /* Abstand zum Anfang des IMG-Buffers */
|
||||
int32 img_buf_used; /* Anzahl der benutzten Bytes des IMG-Buffers */
|
||||
int32 rest_length; /* noch einzulesende Dateil<69>nge */
|
||||
targa_hdr tga;
|
||||
} tga_pic;
|
||||
|
||||
#endif /* _libtarga_h_ */
|
||||
526
sources/z-tools/trunk/zview/plugins/tga/tgaldg.c
Normal file
526
sources/z-tools/trunk/zview/plugins/tga/tgaldg.c
Normal file
@@ -0,0 +1,526 @@
|
||||
#include "zview.h"
|
||||
#include "libtarga.h"
|
||||
|
||||
#define alpha_composite( composite, fg, alpha) { \
|
||||
uint16 temp = (( uint16)( fg) * ( uint16)( alpha) + ( uint16)128); \
|
||||
( composite) = ( uint8)(( temp + ( temp >> 8)) >> 8); \
|
||||
}
|
||||
|
||||
static uint8 *unpack_line1( tga_pic *tga_struct, uint8 *src, uint8 *dst, uint16 line_width);
|
||||
static int16 fill_img_buf( tga_pic *tga_struct, int32 read);
|
||||
static int16 unpack_line( tga_pic *tga_struct, uint8 *dst);
|
||||
|
||||
boolean CDECL reader_init( const char *name, IMGINFO info);
|
||||
boolean CDECL reader_read( IMGINFO info, uint8 *buffer);
|
||||
void CDECL reader_get_txt( IMGINFO info, txt_data *txtdata);
|
||||
void CDECL reader_quit( IMGINFO info);
|
||||
void CDECL init( void);
|
||||
|
||||
|
||||
PROC TGAFunc[] =
|
||||
{
|
||||
{ "plugin_init", "", init},
|
||||
{ "reader_init", "", reader_init},
|
||||
{ "reader_get_txt", "", reader_get_txt},
|
||||
{ "reader_read", "", reader_read},
|
||||
{ "reader_quit", "", reader_quit}
|
||||
};
|
||||
|
||||
|
||||
LDGLIB tga_plugin =
|
||||
{
|
||||
0x0200, /* Plugin version */
|
||||
5, /* Number of plugin's functions */
|
||||
TGAFunc, /* List of functions */
|
||||
"TGA", /* File's type Handled */
|
||||
LDG_NOT_SHARED, /* The flags NOT_SHARED is used here.. even if zview plugins are reentrant
|
||||
and are shareable, we must use this flags because we don't know if the
|
||||
user has ldg.prg deamon installed on his computer */
|
||||
NULL, /* Function called when the plugin is unloaded */
|
||||
1L /* Howmany file type are supported by this plugin */
|
||||
};
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* void tga_write_pixel_to_mem: *
|
||||
* Write the pixel to the data regarding how the header says the data *
|
||||
* is ordered. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* dst -> the pixel is wrote here. *
|
||||
* orientation -> the pixel orientation ( from TGA header). *
|
||||
* pixel_position -> the pixel position in the x axis. *
|
||||
* width -> the image's width. *
|
||||
* pixel -> the 24 bits pixel to write. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
static inline void tga_write_pixel_to_mem( uint8 *dst, uint8 orientation, uint16 pixel_position, uint16 width, uint8 *rgb)
|
||||
{
|
||||
register uint16 x, addy;
|
||||
|
||||
switch( orientation)
|
||||
{
|
||||
case TGA_UPPER_LEFT:
|
||||
case TGA_LOWER_LEFT:
|
||||
default:
|
||||
x = pixel_position % width;
|
||||
break;
|
||||
|
||||
case TGA_LOWER_RIGHT:
|
||||
case TGA_UPPER_RIGHT:
|
||||
x = width - 1 - ( pixel_position % width);
|
||||
break;
|
||||
}
|
||||
|
||||
addy = x * 3;
|
||||
|
||||
dst[addy++] = rgb[0];
|
||||
dst[addy++] = rgb[1];
|
||||
dst[addy] = rgb[2];
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* uint32 tga_convert_color: *
|
||||
* Write the pixel to the data regarding how the header says the data *
|
||||
* is ordered. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* rgb -> bgra value. *
|
||||
* bpp_in -> original image bitplanes. *
|
||||
* alphabits -> Alpha bit... 1 if present else 0. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* the converted pixel. *
|
||||
*==================================================================================*/
|
||||
static inline void tga_convert_color( uint8 *bgra, uint8 *rgb, uint8 bpp_in, uint8 alphabits)
|
||||
{
|
||||
uint8 r = 0, g = 0, b = 0, a = 0;
|
||||
|
||||
switch( bpp_in)
|
||||
{
|
||||
case 32:
|
||||
case 24:
|
||||
if( alphabits)
|
||||
{
|
||||
/* not premultiplied alpha -- multiply. */
|
||||
a = bgra[3];
|
||||
alpha_composite( r, bgra[2], a);
|
||||
alpha_composite( g, bgra[1], a);
|
||||
alpha_composite( b, bgra[0], a);
|
||||
}
|
||||
else
|
||||
{
|
||||
r = bgra[2];
|
||||
g = bgra[1];
|
||||
b = bgra[0];
|
||||
}
|
||||
break;
|
||||
|
||||
case 16:
|
||||
case 15:
|
||||
{
|
||||
/* 16-bit to 32-bit; (force alpha to full) */
|
||||
register uint16 src16 = (( ( uint16)bgra[1] << 8) | bgra[0]);
|
||||
b = (( src16) & 0x001F) << 3;
|
||||
g = (( src16 >> 5) & 0x001F) << 3;
|
||||
r = (( src16 >> 10) & 0x001F) << 3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
rgb[0] = r;
|
||||
rgb[1] = g;
|
||||
rgb[2] = b;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_init: *
|
||||
* Open the file "name", fit the "info" struct. ( see zview.h) and make others *
|
||||
* things needed by the decoder. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* name -> The file to open. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL reader_init( const char *name, IMGINFO info)
|
||||
{
|
||||
uint32 num_pixels, file_length;
|
||||
int16 handle, format = TGA_TRUECOLOR_24;
|
||||
uint8 header_buf[HDR_LENGTH];
|
||||
tga_pic *tga_struct;
|
||||
|
||||
if ( ( handle = ( int16)Fopen( name, 0)) < 0)
|
||||
return FALSE;
|
||||
|
||||
if( Fread( handle, HDR_LENGTH, &header_buf) != HDR_LENGTH)
|
||||
{
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
tga_struct = ( tga_pic*)malloc( sizeof( tga_pic));
|
||||
|
||||
if( tga_struct == NULL)
|
||||
{
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* byte order is important here. */
|
||||
tga_struct->tga.idlen = header_buf[0];
|
||||
tga_struct->tga.cmap_type = header_buf[1];
|
||||
tga_struct->tga.image_type = header_buf[2];
|
||||
tga_struct->tga.cmap_first = (uint16)header_buf[3] + ((uint16)header_buf[4] << 8);
|
||||
tga_struct->tga.cmap_length = (uint16)header_buf[5] + ((uint16)header_buf[6] << 8);
|
||||
tga_struct->tga.cmap_entry_size = header_buf[7];
|
||||
tga_struct->tga.img_spec_xorig = (uint16)header_buf[8] + ((uint16)header_buf[9] << 8);
|
||||
tga_struct->tga.img_spec_yorig = (uint16)header_buf[10] + ((uint16)header_buf[11] << 8);
|
||||
tga_struct->tga.img_spec_width = (uint16)header_buf[12] + ((uint16)header_buf[13] << 8);
|
||||
tga_struct->tga.img_spec_height = (uint16)header_buf[14] + ((uint16)header_buf[15] << 8);
|
||||
tga_struct->tga.img_spec_pix_depth = header_buf[16];
|
||||
tga_struct->tga.img_spec_img_desc = header_buf[17];
|
||||
|
||||
num_pixels = tga_struct->tga.img_spec_width * tga_struct->tga.img_spec_height;
|
||||
|
||||
if( num_pixels == 0)
|
||||
{
|
||||
free( ( void*)tga_struct);
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
file_length = Fseek( 0L, handle, 2);
|
||||
|
||||
tga_struct->alphabits = tga_struct->tga.img_spec_img_desc & 0x0F;
|
||||
tga_struct->handle = handle;
|
||||
|
||||
/* seek past the image id, if there is one */
|
||||
if( Fseek( tga_struct->tga.idlen + HDR_LENGTH, handle, 0) < 0 )
|
||||
{
|
||||
free( ( void*)tga_struct);
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* if the image type is not supported, just jump out. */
|
||||
if( tga_struct->tga.image_type != TGA_IMG_UNC_TRUECOLOR && tga_struct->tga.image_type != TGA_IMG_RLE_TRUECOLOR)
|
||||
{
|
||||
free( ( void*)tga_struct);
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* compute number of bytes in an image data unit (either index or BGR triple) */
|
||||
if( tga_struct->tga.img_spec_pix_depth & 0x07 )
|
||||
tga_struct->bytes_per_pix = ((( 8 - ( tga_struct->tga.img_spec_pix_depth & 0x07)) + tga_struct->tga.img_spec_pix_depth) >> 3);
|
||||
else
|
||||
tga_struct->bytes_per_pix = ( tga_struct->tga.img_spec_pix_depth >> 3);
|
||||
|
||||
/* assume that there's one byte per pixel */
|
||||
if( tga_struct->bytes_per_pix == 0 )
|
||||
tga_struct->bytes_per_pix = 1;
|
||||
|
||||
tga_struct->line_size = tga_struct->tga.img_spec_width * tga_struct->bytes_per_pix;
|
||||
tga_struct->img_buf_len = tga_struct->line_size << 1;
|
||||
|
||||
tga_struct->img_buf = ( uint8 *)malloc( tga_struct->img_buf_len + 256L);
|
||||
|
||||
if( tga_struct->img_buf == NULL)
|
||||
{
|
||||
free( ( void*)tga_struct);
|
||||
Fclose( handle);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
tga_struct->orientation = ( tga_struct->tga.img_spec_img_desc & 0x30) >> 4;
|
||||
tga_struct->rest_length = file_length - ( tga_struct->tga.idlen + HDR_LENGTH);
|
||||
|
||||
if ( tga_struct->img_buf_len > tga_struct->rest_length)
|
||||
tga_struct->img_buf_len = tga_struct->rest_length;
|
||||
|
||||
tga_struct->img_buf_offset = 0;
|
||||
tga_struct->img_buf_used = Fread( handle, tga_struct->img_buf_len, tga_struct->img_buf);
|
||||
tga_struct->rest_length -= tga_struct->img_buf_used;
|
||||
|
||||
info->width = tga_struct->tga.img_spec_width;
|
||||
info->height = tga_struct->tga.img_spec_height;
|
||||
info->real_width = info->width;
|
||||
info->real_height = info->height;
|
||||
info->memory_alloc = TT_RAM;
|
||||
info->components = format;
|
||||
info->planes = tga_struct->tga.img_spec_pix_depth;
|
||||
info->colors = 1L << ( uint32)info->planes;
|
||||
info->page = 1;
|
||||
info->delay = 0;
|
||||
info->num_comments = 0;
|
||||
info->max_comments_length = 0;
|
||||
info->indexed_color = FALSE;
|
||||
info->_priv_ptr = ( void *)tga_struct;
|
||||
|
||||
if( tga_struct->orientation == TGA_UPPER_LEFT || tga_struct->orientation == TGA_UPPER_RIGHT)
|
||||
{
|
||||
info->orientation = UP_TO_DOWN;
|
||||
}
|
||||
else
|
||||
{
|
||||
info->orientation = DOWN_TO_UP;
|
||||
}
|
||||
|
||||
strcpy( info->info, "Truevision Graphics Adapter");
|
||||
|
||||
if( tga_struct->tga.image_type == TGA_IMG_UNC_TRUECOLOR)
|
||||
{
|
||||
strcpy( info->compression, "None");
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy( info->compression, "RLE");
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* int16 fill_img_buf: *
|
||||
* fill the buffer "tga_struct->img_buf" with a line from file. *
|
||||
* the buffer can contain 2 lines, this function search also where write the *
|
||||
* new line from the file. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* tga_struct -> tga_pic struct. with all the wanted information. *
|
||||
* read -> internal counter. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* Always 1 ( need to code something more secure) *
|
||||
*==================================================================================*/
|
||||
static int16 fill_img_buf( tga_pic *tga_struct, int32 read)
|
||||
{
|
||||
tga_struct->img_buf_used -= read;
|
||||
tga_struct->img_buf_offset += read;
|
||||
|
||||
if ( tga_struct->img_buf_offset >= ( tga_struct->img_buf_len >> 1))
|
||||
{
|
||||
if ( tga_struct->img_buf_used > 0)
|
||||
memcpy( tga_struct->img_buf, tga_struct->img_buf + tga_struct->img_buf_offset, tga_struct->img_buf_used);
|
||||
|
||||
read = tga_struct->img_buf_offset;
|
||||
|
||||
if ( read > tga_struct->rest_length )
|
||||
read = tga_struct->rest_length;
|
||||
|
||||
read = Fread( tga_struct->handle, read, tga_struct->img_buf + tga_struct->img_buf_used);
|
||||
|
||||
tga_struct->img_buf_used += read;
|
||||
tga_struct->img_buf_offset = 0;
|
||||
tga_struct->rest_length -= read;
|
||||
}
|
||||
|
||||
return( 1);
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* uint8 *unpack_line1: *
|
||||
* depack ( for RLE image) and copy data from source to destination. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* tga_struct -> tga_pic struct. with all the wanted information. *
|
||||
* src -> the source buffer. *
|
||||
* dst -> the destination buffer. *
|
||||
* line_width -> the image width. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* Howmany source buffer position after that the job is done. *
|
||||
*==================================================================================*/
|
||||
static uint8 *unpack_line1( tga_pic *tga_struct, uint8 *src, uint8 *dst, uint16 line_width)
|
||||
{
|
||||
register uint16 i, j, bytes_per_pix = ( int16)tga_struct->bytes_per_pix;
|
||||
uint8 bgra[4], rgb[3], packet_header, repcount;
|
||||
|
||||
if( tga_struct->tga.image_type == TGA_IMG_UNC_TRUECOLOR)
|
||||
{
|
||||
for ( i = 0; i < line_width; i++)
|
||||
{
|
||||
for ( j = 0; j < bytes_per_pix; j++)
|
||||
bgra[j] = *src++;
|
||||
|
||||
tga_convert_color( &bgra[0], &rgb[0], tga_struct->tga.img_spec_pix_depth, tga_struct->alphabits);
|
||||
tga_write_pixel_to_mem( dst, tga_struct->orientation, i, line_width, &rgb[0]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
register uint16 l;
|
||||
|
||||
for( i = 0; i < line_width; )
|
||||
{
|
||||
packet_header = *src++;
|
||||
|
||||
if( packet_header & 0x80 )
|
||||
{
|
||||
|
||||
for ( j = 0; j < bytes_per_pix; j++)
|
||||
bgra[j] = *src++;
|
||||
|
||||
tga_convert_color( &bgra[0], &rgb[0], tga_struct->tga.img_spec_pix_depth, tga_struct->alphabits);
|
||||
|
||||
repcount = (packet_header & 0x7F) + 1;
|
||||
|
||||
/* write all the data out */
|
||||
for( j = 0; j < repcount; j++ )
|
||||
tga_write_pixel_to_mem( dst, tga_struct->orientation, i + j, line_width, &rgb[0]);
|
||||
|
||||
i += repcount;
|
||||
}
|
||||
else
|
||||
{
|
||||
repcount = ( packet_header & 0x7F) + 1;
|
||||
|
||||
for( l = 0; l < repcount; l++)
|
||||
{
|
||||
for ( j = 0; j < bytes_per_pix; j++)
|
||||
bgra[j] = *src++;
|
||||
|
||||
tga_convert_color( &bgra[0], &rgb[0], tga_struct->tga.img_spec_pix_depth, tga_struct->alphabits);
|
||||
|
||||
tga_write_pixel_to_mem( dst, tga_struct->orientation, i + l, line_width, &rgb[0]);
|
||||
}
|
||||
|
||||
i += repcount;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return( src);
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* int16 unpack_line: *
|
||||
* Call the "source's buffer to destination's buffer" and *
|
||||
* "image to source's buffer" functions. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* tga_struct -> tga_pic struct. with all the wanted information. *
|
||||
* dst -> the destination buffer. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* 1 if ok else 0. *
|
||||
*==================================================================================*/
|
||||
static int16 unpack_line( tga_pic *tga_struct, uint8 *dst)
|
||||
{
|
||||
uint8 *line_begin;
|
||||
int32 read;
|
||||
|
||||
line_begin = tga_struct->img_buf + tga_struct->img_buf_offset;
|
||||
|
||||
read = ( int32)( unpack_line1( tga_struct, line_begin, dst, ( uint16)tga_struct->tga.img_spec_width) - line_begin);
|
||||
|
||||
if( fill_img_buf( tga_struct, read))
|
||||
return ( 1);
|
||||
else
|
||||
return ( 0);
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_read: *
|
||||
* This function fits the buffer with image data *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* buffer -> The destination buffer. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL reader_read( IMGINFO info, uint8 *buffer)
|
||||
{
|
||||
tga_pic *tga_struct = ( tga_pic*)info->_priv_ptr;
|
||||
|
||||
if( unpack_line( tga_struct, buffer))
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_get_txt *
|
||||
* This function , like other CDECL function mus be always present. *
|
||||
* It fills txtdata struct. with the text present in the picture ( if any). *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* txtdata -> The destination text buffer. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL reader_get_txt( IMGINFO info, txt_data *txtdata)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_quit: *
|
||||
* This function makes the last job like close the file handler and free the *
|
||||
* allocated memory. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL reader_quit( IMGINFO info)
|
||||
{
|
||||
tga_pic *tga_struct = ( tga_pic*)info->_priv_ptr;
|
||||
|
||||
Fclose( tga_struct->handle);
|
||||
free( tga_struct->img_buf);
|
||||
free( ( void*)tga_struct);
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL init: *
|
||||
* First function called from zview, in this one, you can make some internal *
|
||||
* initialisation. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* -- *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL init( void)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* int main: *
|
||||
* Main function, his job is to call ldg_init function. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* -- *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* 0 *
|
||||
*==================================================================================*/
|
||||
int main( void)
|
||||
{
|
||||
ldg_init( &tga_plugin);
|
||||
return( 0);
|
||||
}
|
||||
13
sources/z-tools/trunk/zview/plugins/tiff/Makefile
Normal file
13
sources/z-tools/trunk/zview/plugins/tiff/Makefile
Normal file
@@ -0,0 +1,13 @@
|
||||
STACKSIZE = 64k
|
||||
OPTIMISATION = -O2 -fomit-frame-pointer -finline-functions
|
||||
CPU = -m68020-60
|
||||
LIB = -ltiff -ljpeg -lz -lldgserver -lgcc
|
||||
|
||||
CFLAGS = $(CPU) $(OPTIMISATION) -Wall -I. -I../common
|
||||
LDFLAGS = -nostdlib
|
||||
|
||||
OBJ = $(LDG_STARTUP_OBJ) tiffldg.o
|
||||
|
||||
PROGRAM = tiff.ldg
|
||||
|
||||
include ../../../common.mak
|
||||
503
sources/z-tools/trunk/zview/plugins/tiff/copyright
Normal file
503
sources/z-tools/trunk/zview/plugins/tiff/copyright
Normal file
@@ -0,0 +1,503 @@
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser 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
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
422
sources/z-tools/trunk/zview/plugins/tiff/tiffldg.c
Normal file
422
sources/z-tools/trunk/zview/plugins/tiff/tiffldg.c
Normal file
@@ -0,0 +1,422 @@
|
||||
#include <tiffio.h>
|
||||
#define HAVE_INTS_DEFINED
|
||||
#include "zview.h"
|
||||
|
||||
#define alpha_composite( composite, fg, alpha) { \
|
||||
uint16 temp = (( uint16)( fg) * ( uint16)( alpha) + ( uint16)128); \
|
||||
( composite) = ( uint8)(( temp + ( temp >> 8)) >> 8); \
|
||||
}
|
||||
|
||||
void CDECL init( void);
|
||||
boolean CDECL reader_init( const char *name, IMGINFO info);
|
||||
void CDECL reader_get_txt( IMGINFO info, txt_data *txtdata);
|
||||
boolean CDECL reader_read( IMGINFO info, uint8 *buffer);
|
||||
void CDECL reader_quit( IMGINFO info);
|
||||
boolean CDECL encoder_init( const char *name, IMGINFO info);
|
||||
boolean CDECL encoder_write( IMGINFO info, uint8 *buffer);
|
||||
void CDECL encoder_quit( IMGINFO info);
|
||||
void CDECL set_tiff_option( int16 set_quality, uint16 set_encode_compression);
|
||||
|
||||
|
||||
PROC TIFFFunc[] =
|
||||
{
|
||||
{ "plugin_init", "", init},
|
||||
{ "reader_init", "", reader_init},
|
||||
{ "reader_get_txt", "", reader_get_txt},
|
||||
{ "reader_read", "", reader_read},
|
||||
{ "reader_quit", "", reader_quit},
|
||||
{ "encoder_init", "", encoder_init},
|
||||
{ "encoder_write", "", encoder_write},
|
||||
{ "encoder_quit", "", encoder_quit},
|
||||
{ "set_tiff_option","", set_tiff_option}
|
||||
};
|
||||
|
||||
|
||||
LDGLIB tiff_plugin =
|
||||
{
|
||||
0x0200, /* Plugin version */
|
||||
9, /* Number of plugin's functions */
|
||||
TIFFFunc, /* List of functions */
|
||||
"TIFIFF", /* File's type Handled */
|
||||
LDG_NOT_SHARED, /* The flags NOT_SHARED is used here.. even if zview plugins are reentrant
|
||||
and are shareable, we must use this flags because we don't know if the
|
||||
user has ldg.prg deamon installed on his computer */
|
||||
NULL, /* Function called when the plugin is unloaded */
|
||||
2L /* Howmany file type are supported by this plugin */
|
||||
};
|
||||
|
||||
uint16 encode_compression = COMPRESSION_LZW;
|
||||
int quality = 75;
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_init: *
|
||||
* Open the file "name", fit the "info" struct. ( see zview.h) and make others *
|
||||
* things needed by the decoder. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* name -> The file to open. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL reader_init( const char *name, IMGINFO info)
|
||||
{
|
||||
TIFF *tif;
|
||||
uint32 w, h, *raster;
|
||||
uint16 compression, bitpersample, samplesperpixel, planes;
|
||||
|
||||
if(( tif = TIFFOpen( name, "r")) == NULL)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
do
|
||||
{
|
||||
info->page++;
|
||||
}while( TIFFReadDirectory( tif));
|
||||
*/
|
||||
|
||||
TIFFGetField( tif, TIFFTAG_IMAGEWIDTH, &w);
|
||||
TIFFGetField( tif, TIFFTAG_IMAGELENGTH, &h);
|
||||
TIFFGetField( tif, TIFFTAG_COMPRESSION, &compression);
|
||||
TIFFGetField( tif, TIFFTAG_BITSPERSAMPLE, &bitpersample);
|
||||
TIFFGetField( tif, TIFFTAG_SAMPLESPERPIXEL, &samplesperpixel);
|
||||
|
||||
planes = bitpersample * samplesperpixel;
|
||||
|
||||
info->width = ( uint16)w;
|
||||
info->height = ( uint16)h;
|
||||
info->components = 3;
|
||||
info->planes = planes;
|
||||
info->indexed_color = FALSE;
|
||||
info->page = 1;
|
||||
|
||||
planes = MIN( 24, planes);
|
||||
|
||||
info->colors = ( uint32)( 1uL << planes);
|
||||
info->real_width = info->width;
|
||||
info->real_height = info->height;
|
||||
info->memory_alloc = TT_RAM;
|
||||
info->delay = 0;
|
||||
info->orientation = UP_TO_DOWN;
|
||||
info->num_comments = 0;
|
||||
info->max_comments_length = 0;
|
||||
|
||||
|
||||
strcpy( info->info, "Tag Image File Format - TIFF");
|
||||
|
||||
switch( compression)
|
||||
{
|
||||
case 1:
|
||||
strcpy( info->compression, "None");
|
||||
break;
|
||||
case 2: /* CCITT modified Huffman RLE */
|
||||
strcpy( info->compression, "HRLE");
|
||||
break;
|
||||
case 3: /* CCITT Group 3 fax encoding */
|
||||
strcpy( info->compression, "FAX3");
|
||||
break;
|
||||
case 4: /* CCITT Group 4 fax encoding */
|
||||
strcpy( info->compression, "FAX4");
|
||||
break;
|
||||
case 5: /* Lempel-Ziv & Welch */
|
||||
strcpy( info->compression, "LZW");
|
||||
break;
|
||||
case 6: /* Old JPG, no supported ! */
|
||||
TIFFClose( tif);
|
||||
return FALSE;
|
||||
case 7: /* JPEG DCT compression */
|
||||
strcpy( info->compression, "JPEG");
|
||||
break;
|
||||
case 32766: /* NeXT 2-bit RLE */
|
||||
strcpy( info->compression, "NeXT");
|
||||
break;
|
||||
case 32771: /* #1 w/ word alignment RLE*/
|
||||
strcpy( info->compression, "RLEw");
|
||||
break;
|
||||
case 32773: /* Macintosh RLE */
|
||||
strcpy( info->compression, "MAC");
|
||||
break;
|
||||
case 32809: /* ThunderScan RLE */
|
||||
strcpy( info->compression, "Thun");
|
||||
break;
|
||||
case 32895: /* IT8 CT w/padding */
|
||||
strcpy( info->compression, "IT8");
|
||||
break;
|
||||
case 32896: /* IT8 Linework RLE */
|
||||
strcpy( info->compression, "IT8R");
|
||||
break;
|
||||
case 32897: /* IT8 Monochrome picture */
|
||||
strcpy( info->compression, "IT8M");
|
||||
break;
|
||||
case 32898: /* IT8 Binary line art */
|
||||
strcpy( info->compression, "IT8B");
|
||||
break;
|
||||
case 32908: /* Pixar companded 10/11bit LZW */
|
||||
case 32909:
|
||||
strcpy( info->compression, "Pixa");
|
||||
break;
|
||||
case 8:
|
||||
case 32946: /* Deflate compression */
|
||||
strcpy( info->compression, "Defl");
|
||||
break;
|
||||
case 32947: /* Kodak DCS encoding */
|
||||
strcpy( info->compression, "DCS");
|
||||
break;
|
||||
case 34661: /* ISO JBIG */
|
||||
strcpy( info->compression, "JBIG");
|
||||
break;
|
||||
case 34676: /* SGI Log Luminance RLE / 24bits*/
|
||||
case 34677:
|
||||
strcpy( info->compression, "SGI");
|
||||
break;
|
||||
case 34712: /* Leadtools JPEG2000 */
|
||||
strcpy( info->compression, "JP20");
|
||||
break;
|
||||
default:
|
||||
strcpy( info->compression, "???");
|
||||
break;
|
||||
}
|
||||
|
||||
raster = ( uint32*)malloc( ( w * h) << 2);
|
||||
|
||||
if( raster == NULL)
|
||||
{
|
||||
TIFFClose( tif);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
info->_priv_ptr = ( void*)raster;
|
||||
info->_priv_ptr_more = ( void*)raster;
|
||||
info->__priv_ptr_more = ( void*)tif;
|
||||
|
||||
if( TIFFReadRGBAImageOriented( tif, w, h, raster, ORIENTATION_TOPLEFT, 0))
|
||||
return TRUE;
|
||||
|
||||
free( raster);
|
||||
TIFFClose( tif);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_read: *
|
||||
* This function fits the buffer with image data *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* buffer -> The destination buffer. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL reader_read( IMGINFO info, uint8 *buffer)
|
||||
{
|
||||
uint8 r = 0, g = 0, b = 0, a = 0;
|
||||
uint16 i, j = 0;
|
||||
uint32 *img = ( uint32*)info->_priv_ptr_more;
|
||||
|
||||
for( i = 0; i < info->width; i++)
|
||||
{
|
||||
a = TIFFGetA(img[i]);
|
||||
r = TIFFGetR(img[i]);
|
||||
g = TIFFGetG(img[i]);
|
||||
b = TIFFGetB(img[i]);
|
||||
|
||||
alpha_composite( buffer[j++], r, a);
|
||||
alpha_composite( buffer[j++], g, a);
|
||||
alpha_composite( buffer[j++], b, a);
|
||||
}
|
||||
|
||||
info->_priv_ptr_more = ( uint32*)info->_priv_ptr_more + info->width;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_get_txt *
|
||||
* This function , like other CDECL function must be always present. *
|
||||
* It fills txtdata struct. with the text present in the picture ( if any). *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* txtdata -> The destination text buffer. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL reader_get_txt( IMGINFO info, txt_data *txtdata)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL reader_quit: *
|
||||
* This function makes the last job like close the file handler and free the *
|
||||
* allocated memory. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL reader_quit( IMGINFO info)
|
||||
{
|
||||
TIFF *tif = ( TIFF*)info->__priv_ptr_more;
|
||||
|
||||
free( ( uint32*)info->_priv_ptr);
|
||||
TIFFClose( tif);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL encoder_init: *
|
||||
* Open the file "name", fit the "info" struct. ( see zview.h) and make others *
|
||||
* things needed by the encoder. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* name -> The file to open. *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL encoder_init( const char *name, IMGINFO info)
|
||||
{
|
||||
TIFF *tif;
|
||||
|
||||
if(( tif = TIFFOpen( name, "w")) == NULL)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
TIFFSetField( tif, TIFFTAG_IMAGEWIDTH, ( uint32)info->width);
|
||||
TIFFSetField( tif, TIFFTAG_IMAGELENGTH, ( uint32)info->height);
|
||||
TIFFSetField( tif, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);
|
||||
TIFFSetField( tif, TIFFTAG_SAMPLESPERPIXEL, 3);
|
||||
TIFFSetField( tif, TIFFTAG_BITSPERSAMPLE, 8);
|
||||
TIFFSetField( tif, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
|
||||
TIFFSetField( tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB);
|
||||
TIFFSetField( tif, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_UINT);
|
||||
TIFFSetField( tif, TIFFTAG_COMPRESSION, encode_compression);
|
||||
|
||||
if( encode_compression == COMPRESSION_JPEG)
|
||||
{
|
||||
TIFFSetField( tif, TIFFTAG_JPEGQUALITY, quality);
|
||||
TIFFSetField( tif, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB);
|
||||
}
|
||||
|
||||
TIFFSetField( tif, TIFFTAG_ROWSPERSTRIP, TIFFDefaultStripSize( tif, 0));
|
||||
|
||||
info->planes = 24;
|
||||
info->colors = 16777215L;
|
||||
info->orientation = UP_TO_DOWN;
|
||||
info->memory_alloc = TT_RAM;
|
||||
info->indexed_color = FALSE;
|
||||
info->page = 1;
|
||||
info->delay = 0;
|
||||
info->_priv_ptr = ( void*)tif;
|
||||
info->_priv_ptr_more = NULL;
|
||||
info->__priv_ptr_more = NULL;
|
||||
info->_priv_var = 0uL;
|
||||
info->_priv_var_more = 0uL;
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECLencoder_write: *
|
||||
* This function write data from buffer to file *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* buffer -> The source buffer. *
|
||||
* info -> The IMGINFO struct . *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* TRUE if all ok else FALSE. *
|
||||
*==================================================================================*/
|
||||
boolean CDECL encoder_write( IMGINFO info, uint8 *buffer)
|
||||
{
|
||||
if ( TIFFWriteScanline( ( TIFF *)info->_priv_ptr, buffer, info->_priv_var++, 0) < 0)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL encoder_quit: *
|
||||
* This function makes the last job like close the file handler and free the *
|
||||
* allocated memory. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* info -> The IMGINFO struct. to fit. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL encoder_quit( IMGINFO info)
|
||||
{
|
||||
TIFF *tif = ( TIFF*)info->_priv_ptr;
|
||||
|
||||
TIFFClose( tif);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean set_tiff_option: *
|
||||
* This function set some encoder's options *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL set_tiff_option( int16 set_quality, uint16 set_encode_compression)
|
||||
{
|
||||
encode_compression = set_encode_compression;
|
||||
quality = set_quality;
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* boolean CDECL init: *
|
||||
* First function called from zview, in this one, you can make some internal *
|
||||
* initialisation. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* -- *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* -- *
|
||||
*==================================================================================*/
|
||||
void CDECL init( void)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/*==================================================================================*
|
||||
* int main: *
|
||||
* Main function, his job is to call ldg_init function. *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* input: *
|
||||
* -- *
|
||||
*----------------------------------------------------------------------------------*
|
||||
* return: *
|
||||
* 0 *
|
||||
*==================================================================================*/
|
||||
int main( void)
|
||||
{
|
||||
ldg_init( &tiff_plugin);
|
||||
return( 0);
|
||||
}
|
||||
Reference in New Issue
Block a user