253 lines
6.8 KiB
C
253 lines
6.8 KiB
C
/*
|
|
* zView.
|
|
* Copyright (c) 2004-2005 Zorro ( zorro270@yahoo.fr)
|
|
*
|
|
* This application is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This application 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 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 <dirent.h>
|
|
#include <errno.h>
|
|
#include <sys/stat.h>
|
|
#include <unistd.h>
|
|
#include <time.h>
|
|
#include <windom1.h>
|
|
#include <scancode.h>
|
|
#include <ldg.h>
|
|
#include "zaes.h"
|
|
#include "zedit/libtedit.h"
|
|
#include "pdf/goo/gmem.h"
|
|
#include "zview.rsh"
|
|
|
|
/* Window's Attrib. */
|
|
#define WINATTRIB MOVER|NAME|VSLIDE|MOVER|CLOSER|DNARROW|UPARROW|SIZER|SMALLER|FULLER
|
|
|
|
/* Custom data name */
|
|
#define WD_ICON 0x49434F4EL
|
|
#define WD_WIMG 0x57494D47L
|
|
|
|
/* Custom error code */
|
|
#define E_NAMEEXIST 10001
|
|
#define E_RSC 10002
|
|
#define NO_EDDI 10003
|
|
#define NO_ICON 10004
|
|
|
|
/* custom def */
|
|
#define preview_mode 1
|
|
#define full_size 0
|
|
#define ON 1
|
|
#define OFF 0
|
|
#define UNKNOWN -1
|
|
|
|
/* xfont text attrib. */
|
|
#define BOLD 0x01
|
|
#define LIGHT 0x02
|
|
#define ITALIC 0x04
|
|
#define ULINE 0x08
|
|
#define INVERSE 0x10
|
|
#define SHADOW 0x20
|
|
#define MONOSPACE 0x40
|
|
|
|
|
|
#ifndef MAXNAMLEN
|
|
#define MAXNAMLEN 255
|
|
#endif
|
|
|
|
#ifndef MAX_PATH
|
|
#define MAX_PATH 1024
|
|
#endif
|
|
|
|
#define shared_malloc( s) _ldg_malloc( s, ldg_global[2]);
|
|
#define shared_realloc( s, b) _ldg_realloc( s, b, ldg_global[2]);
|
|
#define shared_free( s) _ldg_free( s, ldg_global[2]);
|
|
|
|
/* MACRO */
|
|
#ifndef ABS
|
|
#define ABS(val) ( ( ( val) < 0) ? -( val) : ( val))
|
|
#endif
|
|
|
|
#ifndef XATTR
|
|
typedef struct
|
|
{
|
|
uint16 mode;
|
|
int32 index;
|
|
uint16 dev;
|
|
uint16 reserved1;
|
|
uint16 nlink;
|
|
uint16 uid;
|
|
uint16 gid;
|
|
int32 size;
|
|
int32 blksize;
|
|
int32 nblocks;
|
|
int16 mtime;
|
|
int16 mdate;
|
|
int16 atime;
|
|
int16 adate;
|
|
int16 ctime;
|
|
int16 cdate;
|
|
int16 attr;
|
|
int16 reserved2;
|
|
int32 reserved3;
|
|
int32 reserved4;
|
|
} XATTR;
|
|
#endif
|
|
|
|
typedef struct
|
|
{
|
|
uint32 item;
|
|
uint32 size;
|
|
} fileinfo;
|
|
|
|
typedef enum
|
|
{
|
|
ET_DIR,
|
|
ET_FILE,
|
|
ET_IMAGE,
|
|
ET_PDF,
|
|
ET_PRG
|
|
} EntryType;
|
|
|
|
|
|
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
|
|
{
|
|
/* Image Info */
|
|
uint16 img_w, img_h; /* original size */
|
|
int16 bits; /* image's colors bits */
|
|
int8 working_time[12]; /* ex: 15,2s */
|
|
uint32 colors; /* Picture colors's number */
|
|
int8 info[38]; /* Information about the image, for ex: "Portable Network Graphic" */
|
|
int8 compression[5]; /* Compression type, ex: "LZW" */
|
|
int16 page; /* Number of page/image in the file */
|
|
uint16 delay[1024]; /* Animation delay in millise. between each frame */
|
|
|
|
txt_data *comments;
|
|
|
|
/* Private Data */
|
|
int16 view_mode; /* preview or full size view? */
|
|
int16 progress_bar; /* display the progress bar? */
|
|
|
|
/* Private data for the PDF */
|
|
void *_priv_ptr;
|
|
void *_priv_ptr_more;
|
|
/* ------------------------ */
|
|
|
|
MFDB *image; /* The Image itself */
|
|
}IMAGE;
|
|
|
|
|
|
typedef struct _entry
|
|
{
|
|
int8 name[MAXNAMLEN]; /* The real file's name */
|
|
int8 name_shown[100]; /* The file's name shown in the window */
|
|
|
|
struct stat stat; /* Entry's Unix Stat */
|
|
|
|
int8 size[15]; /* File size in human readable format */
|
|
int8 date[28]; /* date of last modification */
|
|
int8 time[12]; /* time of last modification */
|
|
|
|
int16 icon_txt_w; /* Text width for screen output */
|
|
|
|
RECT16 txt_pos; /* text position in the window */
|
|
RECT16 icn_pos; /* icon position in the window */
|
|
RECT16 case_pos; /* case position in the window */
|
|
|
|
EntryType type; /* icon type */
|
|
|
|
IMAGE preview; /* the preview data and picture */
|
|
|
|
MFDB *icon; /* icon */
|
|
|
|
struct _entry *next_selected;
|
|
struct _entry *next;
|
|
|
|
} Entry;
|
|
|
|
|
|
|
|
typedef struct _mini
|
|
{
|
|
char foldername[MAX_PATH + MAXNAMLEN]; /* Folder name with the full path */
|
|
char name[MAXNAMLEN]; /* Folder's name shown in the window */
|
|
|
|
RECT16 icon_position; /* text position in the window */
|
|
RECT16 arrow_position; /* icon position in the window */
|
|
|
|
struct _mini *parent; /* the parent entry */
|
|
struct _mini *child; /* the child(s) entry */
|
|
|
|
int16 nbr_child; /* number of valid child's entries */
|
|
int16 icon_txt_w; /* Text width for screen output */
|
|
int16 state; /* Deployed or not ( ON/OFF) */
|
|
} Mini_Entry;
|
|
|
|
|
|
|
|
|
|
typedef struct
|
|
{
|
|
char directory[MAX_PATH]; /* current directory */
|
|
|
|
/* File browser data */
|
|
int16 border_position[2]; /* frame's border position in the 'x' axe */
|
|
int16 case_w; /* case width */
|
|
int16 case_h; /* case height */
|
|
int16 columns; /* number of columns */
|
|
int16 icons_last_line; /* number of icons in the last line */
|
|
EDIT *edit; /* Text struct for the edition mode */
|
|
Entry *first_selected; /* Pointer to the first icon selected */
|
|
Entry *entry; /* pointer to 'Entry' structur */
|
|
int16 nbr_icons; /* number of valid icons */
|
|
|
|
|
|
/* "Tree view" data */
|
|
Mini_Entry *mini_selected; /* Pointer to 'Mini_Entry' structur */
|
|
Mini_Entry *root; /* Pointer to 'Mini_Entry' structur */
|
|
int16 nbr_child; /* Number of valid child's entries */
|
|
int32 ypos; /* relative data position in the window */
|
|
int32 ypos_max; /* Maximal values of previous variables */
|
|
int16 h_u; /* vertical and horizontal scroll offset */
|
|
|
|
} WINDICON;
|
|
|
|
|
|
extern int16 pic_load( const char *file, char *extention, IMAGE *img);
|
|
extern void zdebug( const char *format, ...);
|
|
extern void applexit( void);
|
|
|
|
/* Globals variables */
|
|
extern WINDOW *win_catalog;
|
|
extern WINDOW *win_image;
|
|
extern char zview_path[MAX_PATH];
|
|
extern int16 mint_os, magic_os;
|
|
|
|
/* Windom's function not defined in windom.h */
|
|
extern void frm_cls( WINDOW *win);
|
|
extern void snd_rdw( WINDOW *win);
|
|
extern void snd_msg( WINDOW *win, int msg, int par1, int par2, int par3, int par4);
|
|
extern void draw_page( WINDOW *win, int x, int y, int w, int h);
|