//------------------------------------------------- // get_scaled_bitmap_and_bounds - return a // scaled bitmap and bounding rect for a char //------------------------------------------------- public void get_scaled_bitmap_and_bounds(bitmap_argb32 dest, float height, float aspect, char32_t chnum, out rectangle bounds) { bounds = default; glyph gl = get_char(chnum); // on entry, assume x0,y0 are the top,left coordinate of the cell and add // the character bounding box to that position float scale = m_scale * height; bounds.min_x = (int)((float)(gl.xoffs) * scale * aspect); bounds.min_y = 0; // compute x1,y1 from there based on the bitmap size bounds.set_width((int)((float)(gl.bmwidth) * scale * aspect)); bounds.set_height((int)((float)(m_height) * scale)); // if the bitmap isn't big enough, bail if (dest.width() < bounds.width() || dest.height() < bounds.height()) { return; } // if no texture, fill the target if (gl.texture == null) { dest.fill(0); return; } throw new emu_unimplemented(); #if false // scale the font bitmap_argb32 tempbitmap = new bitmap_argb32(&dest.pix(0), bounds.width(), bounds.height(), dest.rowpixels()); render_texture.hq_scale(tempbitmap, gl.bitmap, gl.bitmap.cliprect(), null); #endif }