mkico.lpr

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

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

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

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

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

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

program mkico;

    {$MODE DELPHI}

    {%region} uses
        graphics,
        pascalx.lang,
        platform.independent.osservices;
    {%endregion}

    {$R *.res}

    function main(const arguments: UnicodeString_Array1d): int;
    var
        index: int;
        length: int;
        icon: TIcon;
        image: TPortableNetworkGraphic;
    begin
        length := system.length(arguments);
        if length < 3 then begin
            writeln('Usage: mkico <destination icon file name> <png 1 file name> <png 2 file name> ... <png N file name>');
            result := 1;
            exit;
        end;
        icon := TIcon.create();
        try
            for index := 2 to length - 1 do begin
                image := TPortableNetworkGraphic.create();
                try
                    image.loadFromFile(arguments[index].toUTF8());
                    icon.add(TPixelFormat.pf32bit, image.height, image.width);
                    icon.current := index - 2;
                    icon.assignImage(image);
                finally
                    image.free();
                end;
            end;
            icon.saveToFile(arguments[1].toUTF8());
        finally
            icon.free();
        end;
        result := 0;
    end;

begin
    exitCode := main(Process.current().commandLine);
end.