Написал программу, фильтр для изображений (получаются рисунки простым карандашом). Алгоритм такой: если каждый пиксель достаточно сильно отличается от следующего (это отличие указывается с помощью value), то ставится серый пиксель, яркость которого определяется разницей цвета и коэффициентом яркости (brightness_quotient). Но некоторые картинки получаются слишком плохо. На самом деле алгоритма три, но они очень похожи, и результаты не всегда заметно отличаются. Хотелось бы у предложения по усовершенствованию алгоритма.
char algorithm=0;
int value=0;
char *ofile;
int direction=2;
float brightness_quotient=1.0;
int myabs(int val)
{
if (val < 0) return -val; else return val;
}
void help(char *argv0)
{
printf("%s options input_file\n", argv0);
printf("Available options:\n");
printf("\t--algorithm,-a [name] - use optional algorithm from following list:\n");
printf("\t\t0 = default\n");
printf("\t\t1 = addition\n");
printf("\t\t2 = multiplication\n");
printf("\t--value,-v [val]\n");
printf("\t--direction,-d [dir] - possible values:\n");
printf("\t\t0 = horizontal\n");
printf("\t\t1 = vertical\n");
printf("\t\t[other value] = horizontal and vertical\n");
printf("\t--brightness,-b - brightness quotient (default value is 1.0)\n");
printf("\t--help,-h - show help\n");
printf("\t--version - show version\n");
printf("\t-o [file]\n");
exit(0);
}
void version()
{
printf("Pencil version 0.1\n");
exit(0);
}
void check_options(int argc, char **argv)
{
int n;
while(1)
{
int c = getopt_long(argc, argv, "a:v:ho:d:b:", long_options, &n);
if (c == -1) break;
switch(c)
{
case 0:
switch(n)
{
case 0:
algorithm = atoi(optarg);
break;
case 1:
value = atoi(optarg);
break;
case 2:
help(argv[0]);
break;
case 3:
version();
break;
case 4:
direction = atoi(optarg);
break;
case 5:
brightness_quotient = atof(optarg);
break;
}
case 'v':
value = atoi(optarg);
break;
case 'h':
help(argv[0]);
break;
case 'o':
ofile = optarg;
break;
case 'a':
algorithm = atoi(optarg);
break;
case 'd':
direction = atoi(optarg);
break;
case 'b':
brightness_quotient = atof(optarg);
break;
}
}
}
Долго с этим парился, читал факи/статьи, но ничего нужного в них не нашёл. Проблемы начались давно - просто я возвращался к ним редко. После того как я снёс Gentoo и перешёл на свой сборный дистрибутив, в KDE проблемы почти закончились (если не считать мелочей, например, в Konsole вместо русских букв вопросительные знаки и т.д.). Но сейчас поставил Xfce, перешёл на xterm, и пришлось вернуться к проблемам. В консоли ничего такого нет и не было - читать и писать по-русски могу, и больше мне ничего не надо.
Итак, что требуется в иксах:
Возможность читать и писать по-русски, но не русифицируя программы (то есть никаких i18n-пакетов мне не надо): возможность писать по-русски в xterm, видеть русские файлы в программах на GTK2 (tea, например, там в диалоге открытия файла пропадают русские файлы, в xffm они выглядят выпросительными знаками), кроме того, мне нужны не кривые шрифты, а antialiased, TrueType.
Через fontconfig со шрифтами всё в порядке, и русские символы отображаются.
Чем можете, помогите, пожалуйста. Если можно, пишите из собственного опыта, но можно посмотреть и статьи.
PS: При установке LC_* xterm сообщает о том, что не возможно установить локаль, потому что нет поддержки. Скажите, пожалуйста, как пользоваться localedef. localedef -f koi8-r -i ru_RU ru_RU.KOI8-R не помогает.
Скачал Sylpheed, возникло два вопроса. Можно ли заставить его использовать fontconfig? (Хочу ttf-шрифты подключить). И мне никак не напечатать по-русски. :(
Хочу перейти на что-нибудь побыстрее. Я не знаток desktop-менеджеров, поэтому хочу проконсультироваться. Мне нужна высокая производительность и, желательно, красота (не разукрашенный скрин, а просто приятный глазу и аккуратный рабочий стол). Что скажете насчёт winmaker, afterstep? Ещё нужна альтернатива KMail (на GTK, тоже побыстрее).
Как с помощью bash переместить файлы с названиями в KOI8-R в CP1251? for d in * ; do mv $d `echo $d | iconv -f koi8-r -t cp1251` ; done - это не предлагать, в файлах есть пробелы.
Френсис Хилл - "OpenGL: программирование компьютерной графики" Оригинальное название "Computer Graphics Using OpenGL (Second Edition)". Где-нибудь есть pdf? А то пора отдавать, а я ещё только про трассировку читать начал. Ещё хотелось бы все тематические задания выполнить. Купить негде :(
Шрифты надо прописывать в ~/.xpdfrc. Прописал, теперь осталось только Warning: Cannot find callback list in XtAddCallback. И при вызове XtWidgetToApplicationContext(). Где копать?
xpdf при запуске падает.
Error: No display font for 'Courier'
Error: No display font for 'Courier-Bold'
Error: No display font for 'Courier-BoldOblique'
Error: No display font for 'Courier-Oblique'
Error: No display font for 'Helvetica'
Error: No display font for 'Helvetica-Bold'
Error: No display font for 'Helvetica-BoldOblique'
Error: No display font for 'Helvetica-Oblique'
Error: No display font for 'Symbol'
Error: No display font for 'Times-Bold'
Error: No display font for 'Times-BoldItalic'
Error: No display font for 'Times-Italic'
Error: No display font for 'Times-Roman'
Error: No display font for 'ZapfDingbats'
Warning: Cannot find callback list in XtAddCallback
Warning: Cannot find callback list in XtAddCallback
Warning: Cannot find callback list in XtAddCallback
Warning: Cannot find callback list in XtAddCallback
Warning: Cannot find callback list in XtAddCallback
Warning: Cannot find callback list in XtAddCallback
Warning: Cannot find callback list in XtAddCallback
Warning: Cannot find callback list in XtAddCallback
Warning: Cannot find callback list in XtAddCallback
Warning: Cannot find callback list in XtAddCallback
Warning: Cannot find callback list in XtAddCallback
Warning: Cannot find callback list in XtAddCallback
Warning: Cannot find callback list in XtAddCallback
Warning: Cannot find callback list in XtAddCallback
Warning: Cannot find callback list in XtAddCallback
Warning: Cannot find callback list in XtAddCallback
Warning: Cannot find callback list in XtAddCallback
Warning: Cannot find callback list in XtAddCallback
Warning: Cannot find callback list in XtAddCallback
Warning: Cannot find callback list in XtAddCallback
Warning: Cannot find callback list in XtAddCallback
Segmentation fault
gdb выдаёт следующее:
Program received signal SIGSEGV, Segmentation fault.
0x4023b646 in XtWidgetToApplicationContext () from /usr/X11R6/lib/libXt.so.6
В мане написано, что эта функция инициализирует Xt.
Скачал run файл, разорхивировал, но gzip в конце выдал ошибку: tar: Skipping to next header tar: Archive contains obsolescent base-64 headers tar: A lone zero block at 263160
gzip: stdin: invalid compressed data--crc error tar: Child returned status 1 tar: Error exit delayed from previous errors Но 120 метров-таки разорхивировалось. А при запуске он не находит tga-текстуры. С чем это связано?
Сильно лагает программа, написанная с использованием glut. Ставлю в glutIdleFunc рисование двухмерного прямоугольника. Окно передвигается с трудом, при закрытии на некоторое время пропадает звук, если запущен mplayer. Двойную буферизацию включил. Но если включать её до создания окна, то вообще ничего в окне не прорисовывается. Видеокарта GeForce4 MX 440, X.Org 6.8.0, драйвер NVIDIA 5336.
Вот такая интересная вещь. В /etc/init.d/boot для проверки фс у меня стоит fsck -C -T -A -a. Но проверяется только /home на ReiserFS. Это рейзер виноват, что другие фс не проверяются? Без рейзера этого не было. Сейчас я поставил, чтобы они все по очереди проверялись, но там что-то пишется про ext2_check_if_mounted.
Вот такая проблемка: поставил OpenOffice в иксах, там шрифты криво, но отображались (я cp1251 НЕ ttf использовал) . Теперь я хочу настроить шрифты для интерфейса в KDE, но как это сделать, у меня не читаемо ничего? Где хранятся настройки? В строке заголовка всё отображается.