First of all: my apologies for this very spartan page, but it was thrown in in a real haste just to give some info about this project.
I will try to make something better as soon as I have some time  (c;]

Fumetti is a digital-comics manager/display.
It allows to index a (possibly huge) collection and access it easily, including storylines spanning various titles.
You can read the comics directly from Fumetti with good quality rendering.
It can also rename Your files into a custom-defined directory structure and standardize the file format including Editor/Series/Issue data.

It is currently in Alpha stage and I'm open to suggestions.
Also help is welcome.
Current platform is MSWindows-Delphi-Interbase, but Lazarus-MySQL is considered for the future.

IMPORTANT NOTE: I released the current (ALPHA!!!) version to CVS, but I'm not even sure it will be compilable on someone else's machine. As You may know Windows-world is far less standardized than other Universes. I have a lot of highly optional stuff installed on my machine and, while I tried to stick to basics, I might have done some stupid mistake. Please help me (c;]

ANY comment is welcome!

This project aims to ease the life of all digital comics collectors scanning their issues and/or trading them with other collectors.

I'm mainly interested in very old (and almost impossible to find in paper format) comics. I once had them all, but moving several times, university, marriage, kids ... made them disappear.

I scanned what I managed to salvage in order to preserve the rotting paper, then began to trade in electronic form. [[I'm not quite sure of how this stands in copyright infringement and I would like an opinion; I have almost nothing less than 10 years old and most of my things are WAY older!]]

The program I began to write, however, knows nothing about copyrights, but I'm trying to teach it about comics (c;]


The starting point is:


What I aim to do is:



Environment:

I'm currently working under MSWindows and I'm using Delphi7 for development.
I'm using only to basic components because I would like to try porting to Lazarus; exceptions are the archive decoding (zip & rar) and XML reading. All of those are available for Lazarus.
Database I'm using is Interbase6, but I'm using only straight SQL, so porting to other databases should be possible.

I tested with Firebird-Embedded and it seems to work OK. You can download it from Souceforge (click here); just copy the files alongside with the executable and rename fbembed.dll => gds32.dll. This removes the need for Interbase installed on tatget machine.

Other non-standard component I use is XMLPartner. This is also an Open-Source package hosted on Sourceforge. Get it here.

Status:

   create table EDITORS
ID INT NOT NULL primary key,
Name VARCHAR(128) NOT NULL UNIQUE
);
create table CHARACTERS (
ID INT NOT NULL primary key,
EDITOR_ID INT references EDITORS (ID),
Name VARCHAR(128) NOT NULL UNIQUE
);
create table SERIES (
ID INT NOT NULL primary key,
EDITOR_ID INT NOT NULL references EDITORS (ID),
Name VARCHAR(128) NOT NULL,
Volume INT DEFAULT 1 NOT NULL,
CHARACTER_ID INT references CHARACTERS (ID),
First INT default 0,
Last INT default 999,
constraint C_SR unique (EDITOR_ID, Name, Volume)
);
create table ISSUES (
ID INT NOT NULL primary key,
SERIE_ID INT NOT NULL references SERIES (ID),
Num INT NOT NULL,
iDate DATE,
Title VARCHAR(128),
Filename VARCHAR(128),
CHARACTER_ID INT references CHARACTERS (ID),
constraint C_IS unique (SERIE_ID, Num)
);
create table STORYLINES (
ID INT NOT NULL primary key,
Title VARCHAR(128) NOT NULL unique,
CHARACTER_ID INT references CHARACTERS (ID),
StartDate DATE,
Total INT
);
create table STORYISSUES (
ID INT NOT NULL primary key,
ISSUE_ID INT NOT NULL references ISSUES (ID),
Num INT NOT NULL,
STORYLINE_ID INT NOT NULL references STORYLINES (ID),
constraint C_SE unique (STORYLINE_ID, Num)
);

   <!DOCTYPE Fumetti [
<!ELEMENT Fumetti (Editor*, Character*, Serie*, Storyline*)>
<!ELEMENT Editor (Character*, Serie*)>
<!ATTLIST Editor name CDATA #REQUIRED>
<!ELEMENT Character (Serie*)>
<!ATTLIST Character name CDATA #REQUIRED>
<!ELEMENT Serie (Issue*)>
<!ATTLIST Serie
name CDATA #REQUIRED
volume CDATA #REQUIRED
editor CDATA #REQUIRED
character CDATA #IMPLIED
first CDATA #IMPLIED
last CDATA #REQUIRED
>
<!ELEMENT Issue (EMPTY)>
<!ATTLIST Issue
serie CDATA #REQUIRED
volume CDATA #REQUIRED
editor CDATA #REQUIRED
num CDATA #REQUIRED
title CDATA #IMPLIED
character CDATA #IMPLIED
date CDATA #IMPLIED
>
<!ELEMENT Storyline (StoryIssue*)>
<!ATTLIST Storyline
title CDATA #REQUIRED
character CDATA #IMPLIED
date CDATA #IMPLIED
total CDATA #IMPLIED
>
<!ELEMENT StoryIssue (EMPTY)>
<!ATTLIST StoryIssue
storyline CDATA #REQUIRED
serie CDATA #REQUIRED
volume CDATA #REQUIRED
num CDATA #REQUIRED
ordinal CDATA #REQUIRED
>
]>


To Do:




If You got here You deserve a special THANK YOU! (c;]