LINUX.ORG.RU

Сообщения drish

 

KDE patches

Форум — General

Где можно скачать патчи KDE-3.3.0 - 3.3.1 - 3.3.2?

drish
()

Помогите с алгоритмом

Форум — Development

Написал программу, фильтр для изображений (получаются рисунки простым карандашом). Алгоритм такой: если каждый пиксель достаточно сильно отличается от следующего (это отличие указывается с помощью value), то ставится серый пиксель, яркость которого определяется разницей цвета и коэффициентом яркости (brightness_quotient). Но некоторые картинки получаются слишком плохо. На самом деле алгоритма три, но они очень похожи, и результаты не всегда заметно отличаются. Хотелось бы у предложения по усовершенствованию алгоритма.

// pencil.c

#include <stdio.h>
#include <getopt.h>
#include <unistd.h>
#include <stdlib.h>
#include "bmp.h"

#define _GNU_SOURCE
#define DEFAULT 0
#define ADDITION 1
#define MULTIPLICATION 2


BMPHEADER bmp;
char *bits;

struct option long_options[] = {
{"algorithm", 1, 0, 0},
{"value", 1, 0, 0},
{"help", 0, 0, 0},
{"version", 0, 0, 0},
{"direction", 1, 0, 0},
{"brightness", 1, 0, 0},
{0, 0, 0, 0}
};

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;
}
}
}

int main(int argc, char **argv)
{
check_options(argc, argv);
if (value == 0 || ofile == NULL || optind >= argc)
{
printf("wrong options\n");
exit(1);
}
if (load_bitmap(argv[argc-1], &bmp) == INVALID_BITMAP)
{
printf("INVALID_BITMAP\n");
exit(2);
}
bits = (char *)malloc(bmp.info.biWidth*bmp.info.biHeight*3);
int i, j;
if (direction != 1)
for(i = 0; i < bmp.info.biHeight; i++)
{
for(j = 0; j < bmp.info.biWidth-1; j++)
{
unsigned char rr, gg, bb;
bb = myabs(bmp.bits[(j*bmp.info.biHeight+i)*3] - bmp.bits[(j*bmp.info.biHeight+i+1)*3]);
gg = myabs(bmp.bits[(j*bmp.info.biHeight+i)*3+1] - bmp.bits[(j*bmp.info.biHeight+i+1)*3 + 1]);
rr = myabs(bmp.bits[(j*bmp.info.biHeight+i)*3+2] - bmp.bits[(j*bmp.info.biHeight+i+1)*3 + 2]);
switch(algorithm)
{
case DEFAULT:
if (rr > value || gg > value || bb > value)
bits[(j*bmp.info.biHeight+i)*3] = bits[(j*bmp.info.biHeight+i)*3+1] = bits[(j*bmp.info.biHeight+i)*3+2] = (int)(brightness_quotient*((float)rr+(float)gg+(float)bb)*9.0);
else
bits[(j*bmp.info.biHeight+i)*3] = bits[(j*bmp.info.biHeight+i)*3+1] = bits[(j*bmp.info.biHeight+i)*3+2] = 255;
break;
case ADDITION:
if ((rr + gg + bb) > value)
bits[(j*bmp.info.biHeight+i)*3] = bits[(j*bmp.info.biHeight+i)*3+1] = bits[(j*bmp.info.biHeight+i)*3+2] = (int)(brightness_quotient*((float)rr+(float)gg+(float)bb)*9.0);
else
bits[(j*bmp.info.biHeight+i)*3] = bits[(j*bmp.info.biHeight+i)*3+1] = bits[(j*bmp.info.biHeight+i)*3+2] = 255;
break;
case MULTIPLICATION:
if (rr*gg*bb > value)
bits[(j*bmp.info.biHeight+i)*3] = bits[(j*bmp.info.biHeight+i)*3+1] = bits[(j*bmp.info.biHeight+i)*3+2] = (int)(brightness_quotient*((float)rr+(float)gg+(float)bb)*9.0);
else
bits[(j*bmp.info.biHeight+i)*3] = bits[(j*bmp.info.biHeight+i)*3+1] = bits[(j*bmp.info.biHeight+i)*3+2] = 255;
break;
}
}
}
if (direction != 0)
for(j = 0; j < bmp.info.biWidth; j++)
{
for(i = 0; i < bmp.info.biHeight-1; i++)
{
unsigned char rr, gg, bb;
bb = myabs(bmp.bits[(j*bmp.info.biHeight+i)*3] - bmp.bits[(j*bmp.info.biHeight+i+bmp.info.biWidth)*3]);
gg = myabs(bmp.bits[(j*bmp.info.biHeight+i)*3+1] - bmp.bits[(j*bmp.info.biHeight+i+bmp.info.biWidth)*3 + 1]);
rr = myabs(bmp.bits[(j*bmp.info.biHeight+i)*3+2] - bmp.bits[(j*bmp.info.biHeight+i+bmp.info.biWidth)*3 + 2]);
switch(algorithm)
{
case DEFAULT:
if (rr > value || gg > value || bb > value)
bits[(j*bmp.info.biHeight+i)*3] = bits[(j*bmp.info.biHeight+i)*3+1] = bits[(j*bmp.info.biHeight+i)*3+2] = (int)(brightness_quotient*((float)rr+(float)gg+(float)bb)*9.0);
break;
case ADDITION:
if ((rr + gg + bb) > value)
bits[(j*bmp.info.biHeight+i)*3] = bits[(j*bmp.info.biHeight+i)*3+1] = bits[(j*bmp.info.biHeight+i)*3+2] = (int)(brightness_quotient*((float)rr+(float)gg+(float)bb)*9.0);
break;
case MULTIPLICATION:
if (rr*gg*bb > value)
bits[(j*bmp.info.biHeight+i)*3] = bits[(j*bmp.info.biHeight+i)*3+1] = bits[(j*bmp.info.biHeight+i)*3+2] = (int)(brightness_quotient*((float)rr+(float)gg+(float)bb)*9.0);
break;
}
}
}
bmp_writestd(ofile, bits, bmp.info.biWidth, bmp.info.biHeight);
return 0;
}

drish
()

Есть ли что-нибудь?

Форум — Talks

Интерисует какой-нибудь сервис, позволяющий получить доступ к ослу через http.

drish
()

Обращение матриц на C

Форум — Development

У кого-нибудь есть пример? Уже запарило. :(

drish
()

Русификация

Форум — General

Долго с этим парился, читал факи/статьи, но ничего нужного в них не нашёл. Проблемы начались давно - просто я возвращался к ним редко. После того как я снёс 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 не помогает.

drish
()

Нужен редактор

Форум — General

Написанный на GTK2, простой (в X не люблю пользоваться вимом).

drish
()

Шрифты, ввод

Форум — General

Скачал Sylpheed, возникло два вопроса. Можно ли заставить его использовать fontconfig? (Хочу ttf-шрифты подключить). И мне никак не напечатать по-русски. :(

drish
()

Xfce

Форум — General

Хочу перейти на что-нибудь побыстрее. Я не знаток desktop-менеджеров, поэтому хочу проконсультироваться. Мне нужна высокая производительность и, желательно, красота (не разукрашенный скрин, а просто приятный глазу и аккуратный рабочий стол). Что скажете насчёт winmaker, afterstep? Ещё нужна альтернатива KMail (на GTK, тоже побыстрее).

drish
()

Можно ли получить доступ к ослу через ftp или http?

Форум — Talks

сабж

drish
()

Переименование

Форум — General

Как с помощью bash переместить файлы с названиями в KOI8-R в CP1251? for d in * ; do mv $d `echo $d | iconv -f koi8-r -t cp1251` ; done - это не предлагать, в файлах есть пробелы.

drish
()

Книга

Форум — Talks

Френсис Хилл - "OpenGL: программирование компьютерной графики" Оригинальное название "Computer Graphics Using OpenGL (Second Edition)". Где-нибудь есть pdf? А то пора отдавать, а я ещё только про трассировку читать начал. Ещё хотелось бы все тематические задания выполнить. Купить негде :(

drish
()

xpdf, продолжение

Форум — General

Шрифты надо прописывать в ~/.xpdfrc. Прописал, теперь осталось только Warning: Cannot find callback list in XtAddCallback. И при вызове XtWidgetToApplicationContext(). Где копать?

drish
()

Проблема с xpdf, Xt

Форум — General

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.

drish
()

cd wolfenstein; find

Форум — Games

Что выдаёт сабж? Хочу разобраться, какие файлы у меня отсутствуют.

drish
()

Wolfenstein

Форум — Games

Скачал 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-текстуры. С чем это связано?

drish
()

glut

Форум — Development

Сильно лагает программа, написанная с использованием glut. Ставлю в glutIdleFunc рисование двухмерного прямоугольника. Окно передвигается с трудом, при закрытии на некоторое время пропадает звук, если запущен mplayer. Двойную буферизацию включил. Но если включать её до создания окна, то вообще ничего в окне не прорисовывается. Видеокарта GeForce4 MX 440, X.Org 6.8.0, драйвер NVIDIA 5336.

drish
()

MMF player

Форум — General

Есть что-нибудь подобное для Linux? В Windows Winamp играет.

drish
()

Кто виноват? И что делать?

Форум — General

Вот такая интересная вещь. В /etc/init.d/boot для проверки фс у меня стоит fsck -C -T -A -a. Но проверяется только /home на ReiserFS. Это рейзер виноват, что другие фс не проверяются? Без рейзера этого не было. Сейчас я поставил, чтобы они все по очереди проверялись, но там что-то пишется про ext2_check_if_mounted.

drish
()

Русский в OO

Форум — General

Вот такая проблемка: поставил OpenOffice в иксах, там шрифты криво, но отображались (я cp1251 НЕ ttf использовал) . Теперь я хочу настроить шрифты для интерфейса в KDE, но как это сделать, у меня не читаемо ничего? Где хранятся настройки? В строке заголовка всё отображается.

drish
()

Wolfenstein, ReiserFS

Форум — General

Я уже удалил его, можно восстановить? :D

drish
()

RSS подписка на новые темы