Online for 11 Years
Last changed: 03/October/2009 (03.10.2009)
What is the portable SView5 SDK?
- Closed/Shared Source Graphics Toolkit
- C++ wrapper classes based on rocksolid, highly efficient C code
- highly portable
- low memory and CPU requirements
- originally written in scarce resource environment
- free of GNU GPL or similar restrictive 3rd party licenses (x)
It is basically a graphics toolkit, which allows to read and write a large number (over 100
variants of) file formats and a collection of almost as many graphic filters. The system supports
1-24 bit color depth (max. 8 bit per channel) and alpha channel - 48 bit (16 bit per channel)
and HDR currently still are downscaled to 24 bit, but this will change in near future.
The system is very efficient and compact and suits very well e.g. Embedded Systems.
A typical size of the SView class library under standard Linux/x86 with GCC is around 500K.
On an Embedded System with efficient C library a fraction of that should be sufficient.
Targets so far include MS VC++ 9 (previously VC++ 6) and Cygwin resp. Linux.
The design of the C++ classes is completely platform-independent and endian-aware,
thus suitable to be ported to a wide range of operating systems, e.g. all Linux
derivates, Windows, AmigaOS, BeOS/Zeta, VxWorks or QNX. Additionally, no compiler-specific
C++ specialities are used ("baseline C++) and utilization from within an otherwise
pure C program therfore is not an issue.
GUIs of any kind easily can be wrappted around the C++ classes.
Currently there's a GUI prototype (alpha stage) done in MS VC++ 9
and a sample display program for X11.
Should you be(come) interested to license the SDK for use e.g. with
Linux, QNX or some other OS/RTOS for Embedded System applications,
please contact me by eMail.
I will gladly make you a reasonable offer for licensing. The exact conditions
are to be negotiated - since I do not actively operate a business at the time of
writing, there is unfortunately no way to discuss potential conditions here on this
website.
Why should you contact me?
-- Because the API approach is simple to use and easy to adapt!
-- Because portability and OS abstraction is high!
-- Because the source-code is consistent and well-tested!
-- Etc.
Why should you do this? -- Because the API approach is simple to use and easy to adapt!
Currently the following C++ classes for loading/saving images have been done:
SDK: [129] [59]
- BMP (Win + OS/2) load (1) save (1)
- C64 (Koala, Doodle) load (2)
- C-Source + Assembler save (4)
- CDR (C'relDr'w Preview) load (1)
- CT (Sc't'x) load (1)
- CUT (Dr. H'l') load (1)
- CVP load (1)
- DDS/DXT (MS DX10) load (6) save (1)
- Degas (PI1,PI2,PI3) load (3)
- DNG (et al) (*) load (1)
- EPS (EPSF) (*) load (2) save (1)
- Exif (XMP) (*) load (1)
- FBM load (1) save (1)
- FIG (*) load (1)
- FITS (#) load (1)
- GIF (87a/89a) load (2) save (2)
- HDR (RGBE) load (1) save (1)
- IFF-ACBM load (1) save (1)
- IFF-DEEP load (3) save (1)
- IFF-ILBM load (2) save (2)
- IFF-PBM load (2) save (2)
- IFF-RGB8/RGBN load (2) save (1)
- IFF-RGFX load (3) save (3)
- IFF-YUVN load (7) save (1)
- IMG (HS16/HS18) load (2)
- JPEG (IJG-JFIF) load (1) save (1)
- JPEG 2000 (JP2,JPC,PGX) load (3) save (2)
- LJPG (JPEG-LS) load (1) save (1)
- MAC (MacP''nt) load (1)
- MIFF save (1)
- MSP (MSP''nt) load (1)
- NEO (chrome) load (1)
- MTV load (1) save (1)
- JPEG (IJG-JFIF) load (1) save (1)
- PAM (P7 GRAY/RGB) load (2) save (2)
- PCX load (1) save (1)
- PDF (GS) (*) load (1)
- PFM (PF/Pf) load (2) save (2)
- PCP (P'ctor) load (1)
- PICT-2 (Mac) load (1)
- PNG (PiNG) load (1) save (1)
- PNM (PBM,PGM,PPM/P1-P6) load (6) save (2)
- PhotoCD [TM] (768x512) load (1)
- PS (GS) (*) load (1)
- PSD (Ph'toSh'p) load (1) save (1)
- PSP (P'intSh'p) load (3)
- PXR (P'xar) load (1)
- QRT/POV (Raytracer) load (1) save (1)
- QL (QL4/QL8 SCR) load (2)
- RAS (SunRaster) load (1) save (1)
- RAW load (14) save (4)
- RAW Meta load (8) save (4)
- SCR (ZX Spectrum) load (1)
- SGI load (1) save (1)
- SGX (SView Gfx) load (3) save (3)
- Targa load (1) save (1)
- TIFF load (12) save (2)
- TIM (PSX) load (1)
- XBM (v11) load (1) save (1)
- XMP (v1-v3) load (3) save (3)
- XWD (V11) load (1)
(*) requires external tool for full functionality,
like: Ghostscript, Fig2Dev (WinFIG), DCRAW,
ExifTool
(#) contained in SDK, disabled in SView5
Currently the following C++ classes for image processing have been done:
SDK: [59]
- AddAlpha
- AddBorder
- AlphaBlend
- Antique
- AnyTo24Bit
- AnyTo48Bit
- AutoBorder
- Blur
- Brightness
- ColorCycle
- Complement
- Contrast
- Convolve (3x3) [*]
- ConvolveFloat (3x3) [*]
- ConvolveNxN (nxn) [*] - i.e. 5x5, 7x7, 9x9
- Crop
- Cut
- CutInverse
- DigiPaint
- DitherFix24
- Dither24Bit
- ExtractAlpha
- ExtractBlue
- ExtractGrayScales
- ExtractGreen
- ExtractRed
- FlipNibbles
- Gamma
- Ghost
- HilbertDither256
- Histogram
- InvertAlpha
- InvertColors256
- LeftToRight
- Median
- Mirror
- MirrorCopy
- Mosaic
- Negate
- OilPaint
- OptimizePalette
- PaletteDither
- Paste
- RedEyeFix
- ReplaceBorder
- ResetChannel
- Resize
- ResizeDDA
- Rotate
- RotateFree
- Scale50
- Scatter
- Sharpen
- Slicing
- StripAlpha
- Tiling
- TopToBottom
- XOr
[*]
plus 67 pre-defined 3x3 convolution matrix filters
plus 21 pre-defined NxN convolution matrix filters
plus 10 pre-defined 3x3 float convolution matrices
More modules will be made available over the time or on demand.
The SView C++ classes are free of GNU-alike restrictive 3rd party licenses.
(x) - png is based on libpng/zlib
- jfif is based on libjpeg
- jpeg2000 is based on libjasper
- tiff is based on libtiff/libjpeg/zlib and custom code,
i.e. JPEG and ZLib compression and more are supported.
For LZW no longer an Unisys license is required
- for GIF no longer an Unisys license is required
- PCX, BMP and Targa are far more advanced than usual "mainstream" filters,
same is true for some of the other file formats
- libexif/iptc are used (LGPL code), but clearly separated
- color management is based on LittleCMS (using ICC profiles)
and accesses the ICCP chunks/tags in PNG, JPEG, TIFF, etc.
How do the SDK and Amiga version differ? Can I test it?
The feature list of the Amiga version is described here.
With Amiga Forever or WinUAE you can try SView5 already today on your Windows PC
and make your own picture of its functionality. Download: [Aminet link]
Porting one of the missing AmigaOS modules to the platform-independent C++ framework
in average takes around 2h.
How does it work on source code level?
When necessary you get a pointer to a linear buffer in memory providing direct access
to 8 Bit respectively 24 Bit (8:8:8) pixel data for further processing. A separate
8 bit alpha channel buffer is provided optionally in addition.
This data easily can be converted e.g. into an X11 ZPixmap or a Windows .NET Bitmap.
Example Code:
int main(int argc, char **argv) // [conv.exe] [source.gif] [dest.bmp]
{
svoGIF gifr; // one Object for reading a GIF
svoBMP bmpw; // one Object for writing a BMP
ULONG retval;
retval = CheckLoadSave( (SVObject *) &gifr, (SVObject *) &bmpw, argv[1], argv[2]);
if(retval) printf("\nError: \42%s\42 !", SVL_GetErrorString(errorcode));
return(0);
}
void MyProgress(struct SVProgress *pr, APTR progressdata)
{
printf("\rPercent: %3ld", pr->svpr_Percent);
}
ULONG CheckLoadSave(class SVObject *objr, class SVObject *objw, char *readname, char *writename)
{
struct SV_GfxBuffer *gfxb = NULL; // contains 8 bit and 24 bit data uncompressed
ULONG retval = SVERR_NO_ERROR;
printf("\nLoading %s...\n", readname);
objr->SetProgressFunc(&MyProgress, NULL);
retval = objr->SetReadName((UBYTE *) readname);
if(!retval)
{
retval = objr->ReadToGfxBuffer();
if(!retval)
{
retval = objr->GetGfxBuffer(&gfxb);
if(!retval)
{
if(gfxb)
{
printf("\nSaving %s...\n", writename);
objw->SetProgressFunc(&MyProgress, NULL);
retval = objw->SetWriteName((UBYTE *) writename);
if(!retval)
{
retval = objw->SetGfxBuffer(gfxb);
if(!retval)
{
retval = objw->WriteGfxBuffer();
}
}
}
}
}
}
return(retval);
}
Created and (C) 1999-2010 by Dipl.-Ing. Andreas R. Kleinert VDI. Impressum/Datenschutz (deutsch) - Imprint (english) & PGP-Key - All mentioned trademarks are subject to their owners -
