mkico.lpr

Переключить прокрутку окна
Загрузить этот исходный код

{
    Исходный код генератора значков формата Windows Icon
    из изображений формата PNG.

    Copyright © 2021 Малик Разработчик

    Это свободная программа: вы можете перераспространять её и/или
    изменять её на условиях Стандартной общественной лицензии GNU в том виде,
    в каком она была опубликована Фондом свободного программного обеспечения;
    либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.

    Эта программа распространяется в надежде, что она может быть полезна,
    но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА
    или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННЫХ ЦЕЛЕЙ. Подробнее см. в Стандартной
    общественной лицензии GNU.

    Вы должны были получить копию Стандартной общественной лицензии GNU
    вместе с этой программой. Если это не так, см.
    <http://www.gnu.org/licenses/>.
}

program mkico;

{$MODE DELPHI}

uses
    {$IF DEFINED(UNIX) AND DEFINED(USECTHREADS)} cthreads, {$ENDIF}
    graphics,
    pascalx.lang;

var
    i: int;
    len: int;
    icon: TIcon;
    args: UnicodeString_Array1d;
    image: TPortableNetworkGraphic;

{$R *.res}

begin
    args := systemGetCommandLine();
    len := length(args);
    if len < 3 then begin
        writeln('Usage: mkico <destination icon file name> <png 1 file name> <png 2 file name> ... <png N file name>');
    end else begin
        icon := TIcon.create();
        try
            for i := 2 to len - 1 do begin
                image := TPortableNetworkGraphic.create();
                try
                    image.loadFromFile(stringToUTF8(args[i]));
                    icon.add(TPixelFormat.pf32bit, image.height, image.width);
                    icon.current := i - 2;
                    icon.assignImage(image);
                finally
                    image.free();
                end;
            end;
            icon.saveToFile(stringToUTF8(args[1]));
        finally
            icon.free();
        end;
    end;
end.