2006/06/29(木)CreateFile

仕様変更。親フォルダに指定するのは、各ユーザのホームディレクトリからの相対パス。

以下の場合、エラーとなります。

  • パスの中に、親ディレクトリを示す..が含まれていた場合 \実際にはきちんとしたユーザのディレクトリの中であろうと、..が含まれていた時点でエラーです
  • ファイル名の中に/が含まれていた場合 \ファイル名に/が含まれてはいけません。\({\}もテストすべき?)
  • 連番でファイル名をテストする時、4桁以内の数値で収まらなかった時\ファイル名がfile.jpgであった場合、file_9999.jpgまではテストしますが、file_10000.jpgをテストする前にエラーを返します。

また、返り値 realname には実際に生成されたホームディレクトリからのパスを含むファイル名が入ります。

user: serika
gallery: temp
image: test.jpg

CreateFolder("temp", "test.jpg", realname)
realname -> "temp/test.jpg"

2006/06/25(日)プラグイン::ロード順

プラグインは,ファイル名を辞書式にソートした順でロードされます.

そのため,アーカイブの展開プラグインや,画像のサムネイルを作成するプラグインではファイル名の指定が重要になります.

例えば,汎用サムネイル作成プラグインは,すべての形式に対して有効であるため,先にロードされるファイル名であると,その後ロードされたサムネイル作成プラグインが無効となってしまいます.

2006/06/24(土)プラグイン::サムネイル作成

サムネイル作成プラグインは,プラグイン汎用関数の他,IsAccept関数MakeThumbnail関数ImageSize関数を実装しなければならない.

  • int IsAccept(const char *path, const void *header)
    pathで指定されたファイルを処理できるか返す関数.
    処理できる場合は,0以外の値 を返し,処理できない場合は,0 を返すこと.
    headerには,pathで指定されるファイルの先頭 128byte が入っている.
    ただし,128byteに満たないファイルの場合,余剰部分に入っているデータは未定義である.
  • size MakeThumbnail(const char *in, const char *out, int width, int height, int reserved)
    inで指定されたファイルのサムネイルを作成し,outで指定されるファイルに保存する関数.
    サムネイルのサイズは,幅width pixel,高さheight pixel以内で作成すること.
    返値は,作成したサムネイルのサイズをsize型のオブジェクトで返すこと.
    サムネイルの作成に失敗した場合,size.x = size.y = 1sizeオブジェクトを返すこと.
  • size ImageSize(const char *img, const void *header)
    imgで指定されたファイルの画像のサイズを返す関数.
    headerには,pathで指定されるファイルの先頭 128byte が入っている.
    ただし,128byteに満たないファイルの場合,余剰部分に入っているデータは未定義である.
    返値は,サムネイルのサイズをsize型のオブジェクトで返すこと.
    画像サイズが不明である場合,size.x = size.y = 1sizeオブジェクトを返すこと.

sizeクラスの定義は以下の通りである.

class size
{
public:
	int x;
	int y;
	size(int nx = -1, int ny = -1)
		{ x = nx; y = ny; };
	~size(){};
};

後々,size MakeThumbnailFD(const char *in, int out, int width, int height, int reserved)
関数との選択式にする予定.
こちらの関数は,outで指定されるファイルディスクリプタにサムネイルを出力する.

2006/06/11(日)プラグイン::一般

プラグインは,最低限以下に上げる関数を実装しなければならない.

  • int IsEnable(void);
    プラグイン自体が有効か示す関数.
    プラグインが無効ならば 0 ,有効ならば 0以外の値 を返すこと
  • int Type(void);
    プラグインのサポートする種類を返す関数.
    返値は,CPlugin内において定義されているENUM値の論理和である必要がある.
         ENUM値サポートする機能
    AUTH 認証
    IF サムネイル作成
    AX アーカイブ展開
    EXT 機能拡張
    PEXT ページ拡張
    PV 画像表示
    例えば,機能拡張,ページ拡張の2つの機能を持つプラグインの場合,

    int Type(void){
        return CPlugin::EXT | CPlugin::PEXT;
    }
    

    となる

  • const char *Info(void);
    プラグインの説明文.
  • const char *Name(void);
    プラグインの名前.

2006/05/30(火)プラグインの種類

プラグインは,
  1. 認証
    他のプラグインを利用するための認証プラグイン.
    実際に実装するのは,開発の後期になってからだと思う.
  2. サムネイルの作成
    アップロードされた画像からサムネイルを作成するためのプラグイン.
    サムネイルは,jpeg限定.オフィシャルでは,GIF,JPEG(libexifによる埋め込みサムネイルへの対応),PNGの3種類のプラグインを配布する予定.
  3. アーカイブの展開
    アップロードされたアーカイブを展開するためのプラグイン.
    実際には,ファイルをアップロードするためのプラグインから,逐次解凍するために利用されることになる.zip展開プラグインを配布する予定.
  4. 機能拡張
    アルバム本体とは直接関係ない機能を追加するためのプラグイン.
    フォルダの作成と1行掲示板のプラグインを配布する予定.
  5. ページ拡張
    アルバムの各ページにおいて機能を拡張するためのプラグイン.
    画像のアップロードや,画像の移動といった,画像に関するプラグインがメイン.
  6. 画像表示
    各ページにおいて,サムネイル画像を表示するためのプラグイン.
    このプラグインが無いと,アルバムの各ページにおいて画像を表示することができない,画像のみのサムネイル表示,画像のタイトルなどの情報を含めたリスト表示,一枚ずつ画像を表示するスライドショーの3つのプラグインを配布する予定.
の6種類である.