| 
							- // Copyright 2021 Jean Pierre Cimalando
 - //
 - // Licensed under the Apache License, Version 2.0 (the "License");
 - // you may not use this file except in compliance with the License.
 - // You may obtain a copy of the License at
 - //
 - //     http://www.apache.org/licenses/LICENSE-2.0
 - //
 - // Unless required by applicable law or agreed to in writing, software
 - // distributed under the License is distributed on an "AS IS" BASIS,
 - // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 - // See the License for the specific language governing permissions and
 - // limitations under the License.
 - //
 - // SPDX-License-Identifier: Apache-2.0
 - //
 - 
 - #define STB_IMAGE_IMPLEMENTATION
 - #define STB_IMAGE_STATIC
 - #define STBI_WINDOWS_UTF8
 - 
 - #if defined(__GNUC__)
 - #   pragma GCC diagnostic push
 - #   pragma GCC diagnostic ignored "-Wunused-function"
 - #endif
 - #include "stb_image.h"
 - #if defined(__GNUC__)
 - #   pragma GCC diagnostic pop
 - #endif
 - 
 - //------------------------------------------------------------------------------
 - #include "WDL/lice/lice.h"
 - #include "WDL/wdltypes.h"
 - 
 - static LICE_IBitmap *LICE_LoadSTB(const char *filename, LICE_IBitmap *bmp)
 - {
 -     LICE_IBitmap *delbmp = nullptr;
 -     stbi_uc *srcpx = nullptr;
 -     LICE_pixel *dstpx = nullptr;
 -     bool dstflip = false;
 -     unsigned dstspan = 0;
 -     unsigned w = 0;
 -     unsigned h = 0;
 -     unsigned ch = 0;
 - 
 -     srcpx = stbi_load(filename, (int *)&w, (int *)&h, (int *)&ch, 4);
 -     if (!srcpx)
 -         goto fail;
 - 
 -     if (bmp)
 -         bmp->resize(w, h);
 -     else
 -         bmp = delbmp = new WDL_NEW LICE_MemBitmap(w, h);
 - 
 -     if (!bmp || (unsigned)bmp->getWidth() != w || (unsigned)bmp->getHeight() != h)
 -         goto fail;
 - 
 -     dstpx = bmp->getBits();
 -     dstflip = bmp->isFlipped();
 -     dstspan = bmp->getRowSpan();
 - 
 -     for (unsigned row = 0; row < h; ++row) {
 -         const stbi_uc *src = srcpx + row * (4 * w);
 -         LICE_pixel *dst = dstpx + dstspan * (dstflip ? (h - 1 - row) : row);
 -         for (unsigned col = 0; col < w; ++col, src += 4, ++dst)
 -             *dst = LICE_RGBA(src[0], src[1], src[2], src[3]);
 -     }
 - 
 -     stbi_image_free(srcpx);
 -     return bmp;
 - 
 - fail:
 -     delete delbmp;
 -     stbi_image_free(srcpx);
 -     return nullptr;
 - }
 
 
  |