Windows vs Linux - Как десктоп
, и игровая станция.
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.243] |
|
|
Правила раздела:
| Страницы: (1182) « Первая ... 407 408 [409] 410 411 ... 1181 1182 ( Перейти к последнему сообщению ) |
Windows vs Linux - Как десктоп
, и игровая станция.
|
Сообщ.
#6121
,
|
|
|
|
linuxfan - такой кодек (со всеми аппаратными фичами), можешь откопать в nVidia DVD плеере =) Он использует аппаратнуя распаковку mpeg средствами видяхи. для перемножения матриц используються NV_XXX расширения. покопайся в них, мальчек.
Добавлено а ну да! а shader-assembler те.. гм.. в руки. Наскоко мне известно - релиз такой тулзы есть у M$явок в DX SDK. |
|
Сообщ.
#6122
,
|
|
|
|
Цитата Smike @ Хотя дайте еще глянуть на DrawText, это наверно самая используемая функция, посмотрим как она организована ![]() Да пожалуйста... Цитата dlls/user/text.c ![]() ![]() /*********************************************************************** * DrawTextW (USER32.@) */ INT WINAPI DrawTextW( HDC hdc, LPCWSTR str, INT count, LPRECT rect, UINT flags ) { DRAWTEXTPARAMS dtp; memset (&dtp, 0, sizeof(dtp)); if (flags & DT_TABSTOP) { dtp.iTabLength = (flags >> 8) && 0xff; flags &= 0xffff00ff; } return DrawTextExW(hdc, (LPWSTR)str, count, rect, flags, &dtp); } /*********************************************************************** * DrawTextExW (USER32.@) * * The documentation on the extra space required for DT_MODIFYSTRING at MSDN * is not quite complete, especially with regard to \0. We will assume that * the returned string could have a length of up to i_count+3 and also have * a trailing \0 (which would be 4 more than a not-null-terminated string but * 3 more than a null-terminated string). If this is not so then increase * the allowance in DrawTextExA. */ #define MAX_BUFFER 1024 INT WINAPI DrawTextExW( HDC hdc, LPWSTR str, INT i_count, LPRECT rect, UINT flags, LPDRAWTEXTPARAMS dtp ) { SIZE size; const WCHAR *strPtr; WCHAR *retstr, *p_retstr; size_t size_retstr; WCHAR line[MAX_BUFFER]; int len, lh, count=i_count; TEXTMETRICW tm; int lmargin = 0, rmargin = 0; int x = rect->left, y = rect->top; int width = rect->right - rect->left; int max_width = 0; int last_line; int tabwidth /* to keep gcc happy */ = 0; int prefix_offset; ellipsis_data ellip; TRACE("%s, %d, [%s] %08x\n", debugstr_wn (str, count), count, wine_dbgstr_rect(rect), flags); if (dtp) TRACE("Params: iTabLength=%d, iLeftMargin=%d, iRightMargin=%d\n", dtp->iTabLength, dtp->iLeftMargin, dtp->iRightMargin); if (!str || count == 0) return 0; if (count == -1) { count = strlenW(str); if (count == 0) { if( flags & DT_CALCRECT) { rect->right = rect->left; rect->bottom = rect->top; } return 0; } } strPtr = str; if (flags & DT_SINGLELINE) flags &= ~DT_WORDBREAK; GetTextMetricsW(hdc, &tm); if (flags & DT_EXTERNALLEADING) lh = tm.tmHeight + tm.tmExternalLeading; else lh = tm.tmHeight; if (dtp) { lmargin = dtp->iLeftMargin * tm.tmAveCharWidth; rmargin = dtp->iRightMargin * tm.tmAveCharWidth; if (!(flags & (DT_CENTER | DT_RIGHT))) x += lmargin; dtp->uiLengthDrawn = 0; /* This param RECEIVES number of chars processed */ } if (flags & DT_EXPANDTABS) { int tabstop = ((flags & DT_TABSTOP) && dtp) ? dtp->iTabLength : 8; tabwidth = tm.tmAveCharWidth * tabstop; } if (flags & DT_CALCRECT) flags |= DT_NOCLIP; if (flags & DT_MODIFYSTRING) { size_retstr = (count + 4) * sizeof (WCHAR); retstr = HeapAlloc(GetProcessHeap(), 0, size_retstr); if (!retstr) return 0; memcpy (retstr, str, size_retstr); } else { size_retstr = 0; retstr = NULL; } p_retstr = retstr; do { len = sizeof(line)/sizeof(line[0]); last_line = !(flags & DT_NOCLIP) && y + ((flags & DT_EDITCONTROL) ? 2*lh-1 : lh) > rect->bottom; strPtr = TEXT_NextLineW(hdc, strPtr, &count, line, &len, width, flags, &size, last_line, &p_retstr, tabwidth, &prefix_offset, &ellip); if (flags & DT_CENTER) x = (rect->left + rect->right - size.cx) / 2; else if (flags & DT_RIGHT) x = rect->right - size.cx; if (flags & DT_SINGLELINE) { if (flags & DT_VCENTER) y = rect->top + (rect->bottom - rect->top) / 2 - size.cy / 2; else if (flags & DT_BOTTOM) y = rect->bottom - size.cy; } if (!(flags & DT_CALCRECT)) { const WCHAR *str = line; int xseg = x; while (len) { int len_seg; SIZE size; if ((flags & DT_EXPANDTABS)) { const WCHAR *p; p = str; while (p < str+len && *p != TAB) p++; len_seg = p - str; if (len_seg != len && !GetTextExtentPointW(hdc, str, len_seg, &size)) return 0; } else len_seg = len; if (!ExtTextOutW( hdc, xseg, y, ((flags & DT_NOCLIP) ? 0 : ETO_CLIPPED) | ((flags & DT_RTLREADING) ? ETO_RTLREADING : 0), rect, str, len_seg, NULL )) return 0; if (prefix_offset != -1 && prefix_offset < len_seg) { TEXT_DrawUnderscore (hdc, xseg, y + tm.tmAscent + 1, str, prefix_offset, (flags & DT_NOCLIP) ? NULL : rect); } len -= len_seg; str += len_seg; if (len) { assert ((flags & DT_EXPANDTABS) && *str == TAB); len--; str++; xseg += ((size.cx/tabwidth)+1)*tabwidth; if (prefix_offset != -1) { if (prefix_offset < len_seg) { /* We have just drawn an underscore; we ought to * figure out where the next one is. I am going * to leave it for now until I have a better model * for the line, which will make reprefixing easier. * This is where ellip would be used. */ prefix_offset = -1; } else prefix_offset -= len_seg; } } } } else if (size.cx > max_width) max_width = size.cx; y += lh; if (dtp) dtp->uiLengthDrawn += len; } while (strPtr && !last_line); if (flags & DT_CALCRECT) { rect->right = rect->left + max_width; rect->bottom = y; if (dtp) rect->right += lmargin + rmargin; } if (retstr) { memcpy (str, retstr, size_retstr); HeapFree (GetProcessHeap(), 0, retstr); } return y - rect->top; } |
|
Сообщ.
#6123
,
|
|
|
|
Цитата mo3r @ Да пожалуйста... Спасибо... Чуток умнее сделана функция, хоть не додумались сюда втиснуть проверку платформы. Но все равно слишком много лишних действий перед вызовом родных функций. И еще вопрос: неужели в никсовых апи нет функции, позволяющей врапить текст? Тоесть аналог DrawText + DT_WORDBREAK? Зачем эти пляски с бубном? ![]() ![]() do { len = sizeof(line)/sizeof(line[0]); last_line = !(flags & DT_NOCLIP) && y + ((flags & DT_EDITCONTROL) ? 2*lh-1 : lh) > rect->bottom; strPtr = TEXT_NextLineW(hdc, strPtr, &count, line, &len, width, flags, &size, last_line, &p_retstr, tabwidth, &prefix_offset, &ellip); ... |
|
Сообщ.
#6124
,
|
|
|
|
Цитата Monty @ best_lamer, есть подобная программа ... в фоне делает дефрагментацию, можешь спокойно работать за ПК, а она там трудится и не создает ни каких неудобств. ps. ПО: O&O Defrag Pro/Server А домохозяйке еще надо поставить эту прогу. Ага. Удобно. Проект стартовал значительно раньше. Цитата Smike @ Фрагментацию можно уменьшить, как в пингвинупсе - огромным кешем диска, равном всему свободному объему ОЗУ, и дисковыми буфферами, или как везде - при записи файла сразу занимать нужное дисковое пространство (NTFS тоже так делает). Нет. Тут еще роль играет распределение кластеров. В этом плане винда далеко позади. Винт шуршит все время. Когда запущен линукс, я винт даже не слышу — он либо не используется, либо идет последовательная запись (которая, как известно, тише за счет меньшего числа перемещений головки). Дык! Есть выбор, понимаешь. А в венде — глючная и ненадежная фат или тормозная ntfs. Напрямую. Только не будут доступны все фичи юниксовых ФС. А можно поставить umsdos. А винда понимает фат с более, чем двумя таблицами? Добавлено Цитата Smike @ неужели в никсовых апи нет функции Что значит «никсовые апи»? позикс? Там этого вообще нету. x11? Не знаю, я протокол особо не разбирал. FreeType/Pango/прочая? Тоже не знаю. |
|
Сообщ.
#6125
,
|
|
|
|
ха-ха ха! ну и ацтой! хорошо что в win32 (NT) вся это бодяга прорисовываеться в Ring0, + используя аппаратные средства драйверов видяхи такие как:
![]() ![]() < Video Driver Text Capabilities > Supports Stroke Clip Precision: Yes Supports Stroke Output Precision: Yes Supports Character Output Precision: Yes Supports 90° Character Rotation: Yes Can Draw Strikeouts: Yes Can Draw Raster Fonts: Yes Can Draw Vector Fonts: Yes |
|
Сообщ.
#6126
,
|
|
|
|
Цитата mo3r @ А винда понимает фат с более, чем двумя таблицами? FAT32 всегда имела 2 копии FAT (той что File Allocation Table). |
|
Сообщ.
#6127
,
|
|
|
|
Цитата mICRo @ хорошо что в win32 (NT) вся это бодяга прорисовываеться в Ring0, Интересно, а нельзя свалить винду специально сформатированным текстом? Добавлено Цитата Smike @ FAT32 всегда имела 2 копии FAT (той что File Allocation Table).А более? С 4 таблицами надежнее будет |
|
Сообщ.
#6128
,
|
|
|
|
и чего в лине ждать от эмуляции апаратуры, с выводом через FB? кроме как тормозов - НИЧЕГО!
Добавлено Цитата Интересно, а нельзя свалить винду специально сформатированным текстом? Ну если перед этим разогнать GPU под 450MHZ то.. легко.. даже не форматированым. Добавлено Цитата А в венде — глючная и ненадежная фат или тормозная ntfs. Лично у меня такого ощущения НЕТ, как и глюков FAT! Хотя это можно созерцать на как их нить убитых винтах... но это блины.. блины.. сыпающаяся магнитная основа.. |
|
Сообщ.
#6129
,
|
|
|
|
Цитата mICRo @ Лично у меня такого ощущения НЕТ, как и глюков FAT! Никогда не было не удаляющихся файлов? Или имен с символами, которые самому создать нельзя, а искплореру можно? Цитата mICRo @ эмуляции апаратуры А это как? Просвети! Или это:![]() ![]() CPU not found. Press any key to emulate... ? |
|
Сообщ.
#6130
,
|
|
|
|
mo3r в Win32/64-NT на нормальных драйверах Nvidia (ati-суксь) не то что шрифты! там даже иконки прорисовываються исключительно аппаратурой! да тоже копирование -BitBlt там всё GPU делает за проц! особенно хороший GPU. на 50-250 миллионах транзисторов и нескольких конвеерах. Которые в лине-просто отдыхают, ничего не делая!
Добавлено Цитата Никогда не было не удаляющихся файлов? Или имен с символами, которые самому создать нельзя, а искплореру можно? ну есть че-то там в темп-е. и пофик. в лом скандировать. Добавлено линь - не мой выбор. поскольку эта система насквозь пропитана любительством и дилетантизмом! винды в этом плане - внушают куда большее доверие, так как основные модули сделаны очень качественно. А ненужные лично мне, надстройки (типа MsTask -ака планеровщека заданий) - легко выкинуть! Добавлено тажа проприетарная всуновская соляра! может оно и на спарках рулез. на х86 - это угрёбищная суксь, за несколько тысяч баксов! UNIXвей - это не для X86 платформ! гоу хоум на факинг PDP! |
|
Сообщ.
#6131
,
|
|
|
|
Цитата mICRo @ на х86 - это угрёбищная суксь, за несколько тысяч баксов! Да? А я думал они бесплатно разрешают юзать... Цитата mICRo @ UNIXвей - это не для X86 платформ! гоу хоум на факинг PDP! Как всегда одни обдолбаные эмоции? На ломах сидишь, Сеня, чтоль?.. |
|
Сообщ.
#6132
,
|
|
|
|
ломы - это обдолбаные сорцы, шизанутого линя, из которых нехрена не ясно как оно че фунциклирует!
В отличии от ВСЕПОЗВОЛЯЕШЕГО WINDOWS, благодаря которому (путем перехвата портов) картина становиться боле-мене понятной. |
|
Сообщ.
#6133
,
|
|
|
|
Цитата linuxfan @ Если смотрелка картинок отправляет ОС в ребут из-за криво сформированного жпега, то такая система идет в биореактор, не медля ни секунды. Я уже устал повторять что ОС тут не причем. |
|
Сообщ.
#6134
,
|
|
|
|
Цитата mICRo @ ломы - это обдолбаные сорцы, шизанутого линя, из которых нехрена не ясно как оно че фунциклирует! Абсолютно согласен. Именно поэтому я и предпочитаю FreeBSD |
|
Сообщ.
#6135
,
|
|
|
|
Цитата Monty @ Я уже устал повторять что ОС тут не причем. Да-да. Совсем не при чем. То, что из юзер-моде можно сделать БСОД, ось тоже не при чем. Она так, в сторонке стояла, не виноватая значит, ага. Добавлено Цитата e-yes @ FreeBSD ![]() BSD R.I.P.? |