Многокадровый GIF, 16 цветов v.s. GUI, и все-все-все

Тема в разделе "WASM.BEGINNERS", создана пользователем DEEP, 15 июл 2008.

  1. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    Здравствуйте ещё раз! Наконец-то закончил в своей проге основную логику, и принялся за интерфейс. И сразу наткнулся на проблемы. Перечисляю:

    1) Необходима мне поддержка многокадровых GIF-ов. Только вот беда - писать свой расшифровщик зело влом, а OLELoadPicture извлекает только первый кадр. Вот придумалось компромиссное решение, только вот не знаю, браться ли за реализацию - а вдруг это чушь? Прошу совета. Идея такова: после того как OLE записало мне первый кадр, а прога создала DIB на его основе, нужно тупо сдвинуть в памяти GIF-заголовок на [размер_извлечённого_кадра] вперёд, и прокрутить LoadPicture ещё раз! Только опять же, ещё одна проблема - как доподлинно определить, где заканчивается область заголовка, и начинаются собственно кадры? Судя по документации, количество цветов в конкретной GIF-палитре нигде в файле не прописано, указана лишь разрядность цвета (и то приблизительно!!! причём величины количества цветов воще невменяемые - 4, 8, 64, итп). А уникальных цветов может быть, скажем, и не 16, а всего, скажем, 12... как быть?

    2) Для обеспечения совместимости, необходимо добавить в прогу поддержку 16- и 256-цветного графических режимов. А как в них выглядит большинство картинок со "своей", не-системной палитрой, вы представление имеете... Страшнее ядерной войны, короче. Однако такие "смотрелки" как IView или ACDSee умеют подбирать цвета так, чтобы потери качества были минимальны. Вопрос - как они это делают? Я тут почитал про палитры, всякие Select- и RealizePalette, и задумался: а к чему их вообще применять? К DC конкретного рисунка или к DC окна, где рисуем? И кстати, откуда их брать? Как получить системную палитру?

    3) Ну и вдогонку: если размещать в ресурсах проги звуковые файлы, это повысит её размер аж на 100 кб, что недопустимо. Тем более звуки примитивны - банальное "ку-ку" из ICQ и прочая дребедень. Тем более вывод планируется через PC Speaker, ибо на "целевых" компах колонок может и не быть... У кого-нибудь есть на примете приличный генератор импульсных тонов? Желательно, с исходниками. А ещё более желательно к тому же с документацией.

    [+]: Кстати да, выкладываю эскиз картинок, из-за которых весь сыр-бор. QIP-овские и ICQ-шные не подходят - они-то и были в 16-цв. режиме "страшнее ядерной войны". Пришлось искать компромиссы. В связи с чем ещё вопрос: не может ли кто-нибудь нарисовать получше, (естессно, используя только 16 системных цветов)?

    И заодно, скажите, понятно ли будет вам назначение каждой из кнопок с картинками из ctl.bmp, если к ним не будет подписей (всё думаю, нужны ли они, или можно оставить так)?
     
  2. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    Сопстно ctl.bmp:
     
  3. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    я извеняюсь конечно, но иконки отстой, я бы icq клиента с такими иконками не стал бы использовать
     
  4. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    2FED
    ну дык я же и спрашивал,
    А вообще, на порабощение мира продукт и не рассчитан.
     
  5. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    up.
    неужели никто не знает? =(
     
  6. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    DEEP
    Про gif и ещё хорошая колекция исходников про gif на wasm куда то делась, поэтому пристёгиваю те что когда-то скачивал.

    Для преобразования глубины цвета есть бесплатные библиотеки функций - когда-то попадались (на англоязычных сайтах) но уже не помню где - гугл в помощь ;)
     
  7. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    Хм... недавно тему заметил. А что, спасибо Y_Mur! Найденный Вами код подтверждает мою догадку о возможности "скрещивания" многостраничных GIF и OLELoadPicture!
    Только вот тормознутый он слишком. В точности как мой =)
    Только по разным причинам. Там - оттого что в памяти пересылается несколько десятков КБ, из которых на каждый кадр собирается отдельный однокадровый гиф со своим заголовком, а у меня - оттого что OLELoadPicture вызывает чтение не только текущего кадра, но и всех остальных после него, что выливается опять же в десятки килобайт.
    Поэтому, настойчиво ищутся пути оптимизации...