[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mgp-users-jp 00378] Re: visual class



From: Atsushi Onoe <onoe@sm.sony.co.jp>

> > 今の MagicPoint は PseudoColor のつもりで作っているようなので、
> > PseudoColor 16depth の方が扱いやすいと思います。
> 
> いや、開発者の大部分が 16bit TrueColor の Note だったこともあって、
> TrueColor が基本です。24bit, 8bit が後で追加されました。

なるほど、それは失礼しました。


> background image 上の anti-alias なんてときに PseudoColor は計算が
> しんどいし遅いので TrueColor の方が好きです。
> DirectColor とか StaticColor とか言われると困るけど。。。

計算が面倒ですね。私も PseudoColor はできるだけ避けています。
ただ、数年前までは 8depth PseudoColor のサーバが多かったような気がしま
すが、いまは大丈夫でしょうか ?

以下のような前提があれば、大丈夫なのかな ?
    - プレゼンするのはノート
    - ノートは数年しか使えない (古いノートはつかっていない)
    - 最近のノートはカラーで 16,24 depth が主流


> > X の慣例に従っていない理由がわからないのですが...
> > "geometry" とか "foreground" という風な指定をするのなら、X の引数処理
> > ルーチンを使った方が良い気がしますが、どうして使っていないのでしょうか ?
> 
> 少なくとも私にとっては X を知らない、というのが主な理由です:-)
> 
> ただ、Xlib 以外を使い始めると余計ややこしくなる(し勉強しなきゃいけない)
> ので、できれば Xlib 以外は使いたくないのですが、Xlib にそんなのありました
> っけ?

私はいつもは Xt なので、自分では呼び出していませんが、Xlib のレベルで
は XrmParseCommand() というのがあります。これなら Xlib です。ちょっと
の勉強は必要です :-)

下のプログラムを試してみて下さい。Xlib だけリンクして動くでしょう。
つぎのように実行すると挙動が分かると思います。

	% ./a.out -font fixed -fg red first second third



/*
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xproto.h>
#include <X11/Xresource.h>

static XrmOptionDescRec optlist[] = {
 {"-fg",        ".foreground",  XrmoptionSepArg,    NULL},
 {"-foreground",".foreground",  XrmoptionSepArg,    NULL},
 {"-bg",        ".background",  XrmoptionSepArg,    NULL},
 {"-background",".background",  XrmoptionSepArg,    NULL},
 {"-font",      ".font",        XrmoptionSepArg,    NULL},
 {"-visual",    ".visual",      XrmoptionSepArg,    NULL},
 {"-depth",     ".depth",       XrmoptionSepArg,    NULL},
 {"-geometry",  ".geometry",    XrmoptionSepArg,    NULL},
 {"-file",      ".file",    XrmoptionSepArg,    NULL},
};

XrmDatabase db;

void
main(int argc, char **argv)
{
    int i;
    char    *progname="dummy";
    XrmValue value;
    char     *type;

    XrmInitialize();
    XrmParseCommand(&db,
        optlist, sizeof(optlist)/sizeof(XrmOptionDescRec),
        progname, &argc, argv);


    fprintf(stderr, "options:\n");
    for(i=0;i<sizeof(optlist)/sizeof(XrmOptionDescRec);i++) {
        char label[1024];

        sprintf(label, "%s%s", progname, optlist[i].specifier);
        if (XrmGetResource(db, label, (char *) NULL, &type, &value)) {
            fprintf(stderr,
                "  '%s' // value len %d, addr %p '%s'\n",
                optlist[i].specifier,
                value.size, value.addr, value.addr);
        }
    }

    fprintf(stderr, "argments:\n");
    for(i=0;i<argc;i++) {
        fprintf(stderr, "  %2d: '%s'\n", i, argv[i]);
    }

    exit(0);
}