На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Закрыто kanes 17-02-2009: Введите причину закрытия темы здесь

Страницы: (1182) « Первая ... 407 408 [409] 410 411 ...  1181 1182  ( Перейти к последнему сообщению )  
> Windows vs Linux - Как десктоп , и игровая станция.
    linuxfan - такой кодек (со всеми аппаратными фичами), можешь откопать в nVidia DVD плеере =) Он использует аппаратнуя распаковку mpeg средствами видяхи. для перемножения матриц используються NV_XXX расширения. покопайся в них, мальчек. :yes:

    Добавлено
    а ну да! а shader-assembler те.. гм.. в руки. Наскоко мне известно - релиз такой тулзы есть у M$явок в DX SDK.
      Цитата Smike @
      Хотя дайте еще глянуть на DrawText, это наверно самая используемая функция, посмотрим как она организована ;)

      Да пожалуйста...
      Цитата dlls/user/text.c

      ExpandedWrap disabled
        /***********************************************************************
         *           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;
        }

      Сообщение отредактировано: mo3r -
        Цитата mo3r @
        Да пожалуйста...

        Спасибо... Чуток умнее сделана функция, хоть не додумались сюда втиснуть проверку платформы. Но все равно слишком много лишних действий перед вызовом родных функций. И еще вопрос: неужели в никсовых апи нет функции, позволяющей врапить текст? Тоесть аналог DrawText + DT_WORDBREAK? Зачем эти пляски с бубном?
        ExpandedWrap disabled
              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);
          ...
          Цитата Monty @
          best_lamer, есть подобная программа ... в фоне делает дефрагментацию, можешь
          спокойно работать за ПК, а она там трудится и не создает ни каких неудобств.

          ps. ПО: O&O Defrag Pro/Server

          А домохозяйке еще надо поставить эту прогу.
          Цитата best_lamer @
          А есть такие файловые системы... где дефрагментация не нужна впринципе :whistle:

          Ага. Удобно.
          Цитата mICRo @
          wine (проект как я понял стартовал с 1997г)

          Проект стартовал значительно раньше.
          Цитата Smike @
          Фрагментацию можно уменьшить, как в пингвинупсе - огромным кешем диска, равном всему свободному объему ОЗУ, и дисковыми буфферами, или как везде - при записи файла сразу занимать нужное дисковое пространство (NTFS тоже так делает).

          Нет. Тут еще роль играет распределение кластеров. В этом плане винда далеко позади. Винт шуршит все время. Когда запущен линукс, я винт даже не слышу — он либо не используется, либо идет последовательная запись (которая, как известно, тише за счет меньшего числа перемещений головки).
          Цитата Smike @
          Странный народ линуксоиды. У одних рейзер - отстой, у других - наоборот.

          Дык! Есть выбор, понимаешь. А в венде — глючная и ненадежная фат или тормозная ntfs.
          Цитата mICRo @
          кстати я вот, не в курсе, можно как нить линь заставить пахать на том же FAT32?

          Напрямую. Только не будут доступны все фичи юниксовых ФС. А можно поставить umsdos.
          Цитата mICRo @
          так что надо отдать должное двойной надежности системы FAT :) :yes:

          А винда понимает фат с более, чем двумя таблицами?

          Добавлено
          Цитата Smike @
          неужели в никсовых апи нет функции

          Что значит «никсовые апи»? позикс? Там этого вообще нету. x11? Не знаю, я протокол особо не разбирал. FreeType/Pango/прочая? Тоже не знаю.
            ха-ха ха! ну и ацтой! хорошо что в win32 (NT) вся это бодяга прорисовываеться в Ring0, + используя аппаратные средства драйверов видяхи такие как:
            ExpandedWrap disabled
              < 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
              Цитата mo3r @
              А винда понимает фат с более, чем двумя таблицами?

              :lool: FAT32 всегда имела 2 копии FAT (той что File Allocation Table).
                Цитата mICRo @
                хорошо что в win32 (NT) вся это бодяга прорисовываеться в Ring0,

                Интересно, а нельзя свалить винду специально сформатированным текстом? :lol: :lol:

                Добавлено
                Цитата Smike @
                :lool: FAT32 всегда имела 2 копии FAT (той что File Allocation Table).

                А более? С 4 таблицами надежнее будет :yes:
                  и чего в лине ждать от эмуляции апаратуры, с выводом через FB? кроме как тормозов - НИЧЕГО! :angry:

                  Добавлено
                  Цитата
                  Интересно, а нельзя свалить винду специально сформатированным текстом?

                  Ну если перед этим разогнать GPU под 450MHZ :) то.. легко.. даже не форматированым.

                  Добавлено
                  Цитата
                  А в венде — глючная и ненадежная фат или тормозная ntfs.

                  Лично у меня такого ощущения НЕТ, как и глюков FAT! Хотя это можно созерцать на как их нить убитых винтах... но это блины.. блины.. сыпающаяся магнитная основа..
                    Цитата mICRo @
                    Лично у меня такого ощущения НЕТ, как и глюков FAT!

                    Никогда не было не удаляющихся файлов? Или имен с символами, которые самому создать нельзя, а искплореру можно?
                    Цитата mICRo @
                    эмуляции апаратуры

                    А это как? :lol: Просвети! Или это:
                    ExpandedWrap disabled
                      CPU not found. Press any key to emulate...

                    ?
                      mo3r в Win32/64-NT на нормальных драйверах Nvidia (ati-суксь) не то что шрифты! там даже иконки прорисовываються исключительно аппаратурой! да тоже копирование -BitBlt там всё GPU делает за проц! особенно хороший GPU. на 50-250 миллионах транзисторов и нескольких конвеерах. Которые в лине-просто отдыхают, ничего не делая! >:(

                      Добавлено
                      Цитата
                      Никогда не было не удаляющихся файлов? Или имен с символами, которые самому создать нельзя, а искплореру можно?

                      ну есть че-то там в темп-е. и пофик. в лом скандировать.

                      Добавлено
                      линь - не мой выбор. поскольку эта система насквозь пропитана любительством и дилетантизмом!
                      винды в этом плане - внушают куда большее доверие, так как основные модули сделаны очень качественно. А ненужные лично мне, надстройки (типа MsTask -ака планеровщека заданий) - легко выкинуть!

                      Добавлено
                      тажа проприетарная всуновская соляра! может оно и на спарках рулез. на х86 - это угрёбищная суксь, за несколько тысяч баксов!

                      UNIXвей - это не для X86 платформ!
                      гоу хоум на факинг PDP!
                        Цитата mICRo @
                        на х86 - это угрёбищная суксь, за несколько тысяч баксов!

                        Да? А я думал они бесплатно разрешают юзать...

                        Цитата mICRo @
                        UNIXвей - это не для X86 платформ!
                        гоу хоум на факинг PDP!

                        Как всегда одни обдолбаные эмоции? На ломах сидишь, Сеня, чтоль?..
                          ломы - это обдолбаные сорцы, шизанутого линя, из которых нехрена не ясно как оно че фунциклирует! :angry:
                          В отличии от ВСЕПОЗВОЛЯЕШЕГО WINDOWS, благодаря которому (путем перехвата портов) картина становиться боле-мене понятной. :yes:
                            Цитата linuxfan @
                            Если смотрелка картинок отправляет ОС в ребут из-за криво сформированного жпега, то такая система идет в биореактор, не медля ни секунды.

                            Я уже устал повторять что ОС тут не причем.
                              Цитата mICRo @
                              ломы - это обдолбаные сорцы, шизанутого линя, из которых нехрена не ясно как оно че фунциклирует! :angry:

                              Абсолютно согласен. Именно поэтому я и предпочитаю FreeBSD :D
                                Цитата Monty @
                                Я уже устал повторять что ОС тут не причем.

                                Да-да. Совсем не при чем. То, что из юзер-моде можно сделать БСОД, ось тоже не при чем. Она так, в сторонке стояла, не виноватая значит, ага.

                                Добавлено
                                Цитата e-yes @
                                FreeBSD :D

                                BSD R.I.P.? :unsure:
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (1182) « Первая ... 407 408 [409] 410 411 ...  1181 1182
                                Закрыто kanes 17-02-2009: Введите причину закрытия темы здесь



                                Рейтинг@Mail.ru
                                [ Script execution time: 0.7268 ]   [ 15 queries used ]   [ Generated: 5.11.26, 12:15 GMT ]