Remove alpha-blending framebuffer functions
This commit is contained in:
parent
3d911ab191
commit
c958b9ffcc
@ -131,70 +131,6 @@ struct Fb
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Draw a character.
|
|
||||||
*
|
|
||||||
* @param x X coordinate of left side of character.
|
|
||||||
* @param y Y coordinate of bottom side of character.
|
|
||||||
* @param ch Character to draw.
|
|
||||||
* @param color Color of character.
|
|
||||||
*/
|
|
||||||
static void character(int x, int y, char ch, uint color)
|
|
||||||
{
|
|
||||||
const(CharInfo) * ci = &Kfont.chars[ch];
|
|
||||||
blend_alpha_bitmap(x + ci.left, y + Kfont.baseline_offset + ci.top - ci.height, ci.bitmap, ci.width, ci.height, color);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Blend an 8-bit alpha bitmap to the framebuffer.
|
|
||||||
*
|
|
||||||
* @param x X coordinate of left side of target location.
|
|
||||||
* @param y Y coordinate of bottom side of target location.
|
|
||||||
* @param alpha_bitmap 8-bit alpha-channel bitmap.
|
|
||||||
* @param width Bitmap width.
|
|
||||||
* @param height Bitmap height.
|
|
||||||
* @param color Color to blend with alpha value.
|
|
||||||
*/
|
|
||||||
static void blend_alpha_bitmap(size_t x, size_t y, const(ubyte) * alpha_bitmap,
|
|
||||||
size_t width, size_t height, uint color)
|
|
||||||
{
|
|
||||||
y += height - 1u;
|
|
||||||
size_t bitmap_index;
|
|
||||||
for (size_t iy = 0u; iy < height; iy++)
|
|
||||||
{
|
|
||||||
size_t row_buffer_index = buffer_index(x, y);
|
|
||||||
for (size_t ix = 0u; ix < width; ix++)
|
|
||||||
{
|
|
||||||
size_t buffer_index = row_buffer_index + ix;
|
|
||||||
ubyte alpha = alpha_bitmap[bitmap_index];
|
|
||||||
uint current_color = m_buffer1[buffer_index];
|
|
||||||
uint in_color_scaled = scale_color(color, alpha);
|
|
||||||
uint old_color_scaled = scale_color(current_color, 255u - alpha);
|
|
||||||
uint new_color = old_color_scaled + in_color_scaled;
|
|
||||||
m_buffer1[buffer_index] = new_color;
|
|
||||||
bitmap_index++;
|
|
||||||
}
|
|
||||||
memcpy32(&m_device_buffer[row_buffer_index], &m_buffer1[row_buffer_index], width);
|
|
||||||
y--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Blend an 8-bit alpha bitmap to the framebuffer.
|
|
||||||
*
|
|
||||||
* @param x X coordinate of left side of target location.
|
|
||||||
* @param y Y coordinate of bottom side of target location.
|
|
||||||
* @param alpha_bitmap 8-bit alpha-channel bitmap.
|
|
||||||
* @param width Bitmap width.
|
|
||||||
* @param height Bitmap height.
|
|
||||||
* @param color Color to blend with alpha value.
|
|
||||||
*/
|
|
||||||
static void blend_alpha_bitmap(size_t x, size_t y, const(ubyte)[] alpha_bitmap,
|
|
||||||
size_t width, size_t height, uint color)
|
|
||||||
{
|
|
||||||
blend_alpha_bitmap(x, y, alpha_bitmap.ptr, width, height, color);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Blit an 8-bit alpha bitmap to the framebuffer.
|
* Blit an 8-bit alpha bitmap to the framebuffer.
|
||||||
* The foreground will be white (based on the alpha value), and the
|
* The foreground will be white (based on the alpha value), and the
|
||||||
@ -262,21 +198,6 @@ struct Fb
|
|||||||
(m_stride * height));
|
(m_stride * height));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Scale a color value by an alpha amount.
|
|
||||||
*
|
|
||||||
* @param color Color value.
|
|
||||||
* @param alpha Alpha amount.
|
|
||||||
*
|
|
||||||
* @return Scaled color value.
|
|
||||||
*/
|
|
||||||
private static uint scale_color(uint color, ubyte alpha)
|
|
||||||
{
|
|
||||||
return ((((color & 0xFFu) * alpha) >> 8u) & 0xFFu) |
|
|
||||||
((((color & 0xFF00u) * alpha) >> 8u) & 0xFF00u) |
|
|
||||||
((((color & 0xFF0000u) * alpha) >> 8u) & 0xFF0000u);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the buffer index for the given X and Y coordinates.
|
* Return the buffer index for the given X and Y coordinates.
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user