Example #1
0
        /**
         * @fn  void bitmap_t::fill(UINT32 color, const rectangle &cliprect)
         *
         * @brief   -------------------------------------------------
         *            fill -- fill a bitmap with a solid color
         *          -------------------------------------------------.
         *
         * @param   color       The color.
         * @param   bounds      The bounds.
         */
        public void fill(uint64_t color, rectangle bounds)
        {
            // if we have a cliprect, intersect with that
            rectangle fill = bounds;

            fill &= m_cliprect;
            if (!fill.empty())
            {
                // based on the bpp go from there
                switch (m_bpp)
                {
                case 8:
                    for (int32_t y = fill.top(); y <= fill.bottom(); y++)
                    {
                        std.fill_n(pixt <uint8_t, PixelType_operators_u8>(y, fill.left()), (size_t)fill.width(), (uint8_t)color);  //std::fill_n(&pixt<uint8_t>(y, fill.left()), fill.width(), uint8_t(color));
                    }
                    break;

                case 16:
                    for (int32_t y = fill.top(); y <= fill.bottom(); ++y)
                    {
                        std.fill_n((PointerU16)pixt <uint16_t, PixelType_operators_u16>(y, fill.left()), (size_t)fill.width(), (uint16_t)color);  //std::fill_n(&pixt<uint16_t>(y, fill.left()), fill.width(), uint16_t(color));
                    }
                    break;

                case 32:
                    for (int32_t y = fill.top(); y <= fill.bottom(); ++y)
                    {
                        std.fill_n((PointerU32)pixt <uint32_t, PixelType_operators_u32>(y, fill.left()), (size_t)fill.width(), (uint32_t)color);  //std::fill_n(&pixt<uint32_t>(y, fill.left()), fill.width(), uint32_t(color));
                    }
                    break;

                case 64:
                    for (int32_t y = fill.top(); y <= fill.bottom(); ++y)
                    {
                        std.fill_n((PointerU64)pixt <uint64_t, PixelType_operators_u64>(y, fill.left()), (size_t)fill.width(), (uint64_t)color);  //std::fill_n(&pixt<uint64_t>(y, fill.left()), fill.width(), uint64_t(color));
                    }
                    break;
                }
            }
        }