packimages -- the image library of the demonstration
====================================================

WHAT THIS IS
    Every icon and picture the demonstration shows lives in ONE file,
    ..\img\packimages.dll, a resource DLL. This folder is what produces it,
    and it is here so the file is not a black box : you can see what goes in,
    and put your own images in the same way.

    It holds exactly what the demonstration shows -- nothing kept "just in
    case". So ..\img\packimages.dll is reproducible from here, to the byte :
    build_packimages.bat gives you back the very file you received.

WHY A RESOURCE DLL
    A component asks for an image by name :

        uo_button.is_image = "mono:img\packimages.dll:SVG/SAMPLES/SAVE"

    One file to deploy instead of hundreds, no path to get wrong at a customer
    site, and nothing for a user to delete by accident.

THE LAYOUT IS THE NAMING
    The FIRST folder level is the resource TYPE. Everything after it is the
    NAME, subfolders included, and it is matched case-insensitively :

        png\logo.png              ->  packimages.dll:PNG/LOGO
        svg\samples\save.svg      ->  packimages.dll:SVG/SAMPLES/SAVE
        svg\toolbar\next.svg      ->  packimages.dll:SVG/TOOLBAR/NEXT
        ico\listbar.ico           ->  packimages.dll:LISTBAR   (icon group)

    Types : ico, png, svg, jpg, bmp, gif.
    The short form packimages.dll:NAME probes the types in a fixed order ; give
    the type -- packimages.dll:PNG/LOGO -- when the same name exists under
    several of them.
    Spaces are not allowed in a resource name : such a file is skipped, with a
    warning.
    Files sitting at the ROOT of this folder are tooling, never resources.

TO REBUILD
    Double-click build_packimages.bat, then copy the packimages.dll it makes
    over ..\img\packimages.dll.

    It needs rc.exe (Windows SDK) and link.exe (Visual Studio Build Tools),
    both free from Microsoft. The build is always FULL : the DLL ends up
    holding exactly what this folder holds, no more and no less -- so removing
    an image here removes it from the DLL.

    The DLL is built 64-bit by default and that is fine either way : it is
    loaded as a DATA FILE, never executed, so its bitness does not have to
    match your application. -Machine X86 exists on the script if you want it.

ABOUT empty.dll
    A resource-free DLL, kept for the older ResHacker-based tooling that
    UPDATES an existing file instead of rebuilding one. The script above does
    not use it.

    https://pbtoolboxai.net
