/************************************************************************* Draw the list box item in its current state. *************************************************************************/ void ListboxTextItem::draw(std::vector<GeometryBuffer*>& geometry_buffers, const Rectf& targetRect, float alpha, const Rectf* clipper) const { if (d_selected && d_selectBrush != 0) { d_selectBrush->render(geometry_buffers, targetRect, clipper, true, d_selectCols, alpha); } const Font* font = getFont(); if (!font) return; glm::vec2 draw_pos(targetRect.getPositionGLM()); draw_pos.y += CoordConverter::alignToPixels( (font->getLineSpacing() - font->getFontHeight()) * 0.5f); if (!d_renderedStringValid) parseTextString(); const ColourRect final_colours(ColourRect(0xFFFFFFFF)); for (size_t i = 0; i < d_renderedString.getLineCount(); ++i) { d_renderedString.draw(d_owner, i, geometry_buffers, draw_pos, &final_colours, clipper, 0.0f); draw_pos.y += d_renderedString.getPixelSize(d_owner, i).d_height; } }
/************************************************************************* Draw the list box item in its current state. *************************************************************************/ void ListboxTextItem::draw(GeometryBuffer& buffer, const Rect& targetRect, float alpha, const Rect* clipper) const { if (d_selected && d_selectBrush != 0) d_selectBrush->draw(buffer, targetRect, clipper, getModulateAlphaColourRect(d_selectCols, alpha)); Font* font = getFont(); if (!font) return; Vector2 draw_pos(targetRect.getPosition()); draw_pos.d_y += PixelAligned( (font->getLineSpacing() - font->getFontHeight()) * 0.5f); if (!d_renderedStringValid) parseTextString(); const ColourRect final_colours( getModulateAlphaColourRect(ColourRect(0xFFFFFFFF), alpha)); for (size_t i = 0; i < d_renderedString.getLineCount(); ++i) { d_renderedString.draw(i, buffer, draw_pos, &final_colours, clipper, 0.0f); draw_pos.d_y += d_renderedString.getPixelSize(i).d_height; } }
//----------------------------------------------------------------------------// void LeftAlignedRenderedString::draw(GeometryBuffer& buffer, const Vector2& position, const ColourRect* mod_colours, const Rect* clip_rect) const { Vector2 draw_pos(position); for (size_t i = 0; i < d_renderedString->getLineCount(); ++i) { d_renderedString->draw(i, buffer, draw_pos, mod_colours, clip_rect, 0.0f); draw_pos.d_y += d_renderedString->getPixelSize(i).d_height; } }
//----------------------------------------------------------------------------// void JustifiedRenderedString::draw(const Window* ref_wnd, GeometryBuffer& buffer, const Vector2f& position, const ColourRect* mod_colours, const Rectf* clip_rect) const { Vector2f draw_pos(position); for (size_t i = 0; i < d_renderedString->getLineCount(); ++i) { d_renderedString->draw(ref_wnd, i, buffer, draw_pos, mod_colours, clip_rect, d_spaceExtras[i]); draw_pos.d_y += d_renderedString->getPixelSize(ref_wnd, i).d_height; } }
//----------------------------------------------------------------------------// void JustifiedRenderedString::draw(const Window* ref_wnd, std::vector<GeometryBuffer*>& geometry_buffers, const glm::vec2& position, const ColourRect* mod_colours, const Rectf* clip_rect) const { glm::vec2 draw_pos(position); for (size_t i = 0; i < d_renderedString->getLineCount(); ++i) { d_renderedString->draw(ref_wnd, i, geometry_buffers, draw_pos, mod_colours, clip_rect, d_spaceExtras[i]); draw_pos.y += d_renderedString->getPixelSize(ref_wnd, i).d_height; } }
/************************************************************************* Draw the tree item in its current state. *************************************************************************/ void TreeItem::draw(GeometryBuffer& buffer, const Rect &targetRect, float alpha, const Rect *clipper) const { Rect finalRect(targetRect); if (d_iconImage != 0) { Rect finalPos(finalRect); finalPos.setWidth(targetRect.getHeight()); finalPos.setHeight(targetRect.getHeight()); d_iconImage->draw(buffer, finalPos, clipper, ColourRect(colour(1,1,1,alpha))); finalRect.d_left += targetRect.getHeight(); } if (d_selected && d_selectBrush != 0) d_selectBrush->draw(buffer, finalRect, clipper, getModulateAlphaColourRect(d_selectCols, alpha)); Font* font = getFont(); if (!font) return; Vector2 draw_pos(finalRect.getPosition()); draw_pos.d_y -= (font->getLineSpacing() - font->getBaseline()) * 0.5f; if (!d_renderedStringValid) parseTextString(); const ColourRect final_colours( getModulateAlphaColourRect(ColourRect(0xFFFFFFFF), alpha)); for (size_t i = 0; i < d_renderedString.getLineCount(); ++i) { d_renderedString.draw(i, buffer, draw_pos, &final_colours, clipper, 0.0f); draw_pos.d_y += d_renderedString.getPixelSize(i).d_height; } }
static SimpleSpiceUpdate *test_spice_create_update_draw(uint32_t surface_id, int t) { int top, left; uint8_t *dst; uint8_t *bitmap; int bw, bh; int i; QXLRect bbox; draw_pos(t, &left, &top); if ((t % angle_parts) == 0) { c_i++; } if (surface_id != 0) { color = (color + 1) % 2; } else { color = surface_id; } unique++; bw = g_primary_width/SINGLE_PART; bh = 48; bitmap = dst = malloc(bw * bh * 4); //printf("allocated %p\n", dst); for (i = 0 ; i < bh * bw ; ++i, dst+=4) { *dst = (color+i % 255); *(dst+((1+c_i)%3)) = 255 - color; *(dst+((2+c_i)%3)) = (color * (color + i)) & 0xff; *(dst+((3+c_i)%3)) = 0; } bbox.left = left; bbox.top = top; bbox.right = left + bw; bbox.bottom = top + bh; return test_spice_create_update_from_bitmap(surface_id, bbox, bitmap, 0, NULL); }
void SampleViewer::draw(const Point& p_pos,const Size& p_size,const Rect& p_exposed) { Painter *p=get_painter(); if (!sm->check(sample) || sm->get_size(sample)==0) { p->draw_fill_rect(Point(),p_size,color(COLOR_SAMPLE_EDITOR_NOSAMPLE)); return; } AudioLock::begin(); if (sm->lock_data(sample)) { AudioLock::end(); ERR_PRINT("Can't lock sample!"); return; } int sample_len=sm->get_size(sample); bool is_16=sm->is_16bits( sample ); bool is_stereo=sm->is_stereo( sample ); int loop_begin=sm->get_loop_begin( sample ); int loop_end=sm->get_loop_end( sample ); void *data_ptr=sm->get_data(sample); if (data_ptr==0) { AudioLock::end(); ERR_PRINT("data_ptr==NULL , serious bug!"); return; } int chans=is_stereo?2:1; int from=offset; int len=(int)(sample_len*zoom); for (int c=0; c<chans; c++) { Sint16 pre=0; Sint16 prev_max_peak=0; Sint16 prev_min_peak=0; Sint16 max_peak=-32768; Sint16 min_peak=32767; //pretty difficult values.. int prev_screen_pos=0; bool has_loop_pos=false; for (int i=0; i<len; i++) { int pos=offset+i; if (pos>=sample_len) break; //abort just in case Sint16 val=0; if (is_16) { val=((Sint16*)data_ptr)[(chans)*pos+c]; } else { val=((Sint8*)data_ptr)[(chans)*pos+c]; val<<=8; } if (pos==loop_begin || pos==loop_end) has_loop_pos=true; if (val<min_peak) min_peak=val; if (val>max_peak) max_peak=val; int screen_pos=i*p_size.width/len; if (i==len-1) screen_pos=p_size.width; if (prev_screen_pos!=screen_pos || (i==len-1)) { bool is_selected=selection && selection->is_active() && pos>=selection->get_begin() && pos<=selection->get_end(); for (int sp=(prev_screen_pos+1); sp<=screen_pos; sp++) draw_pos(prev_min_peak,prev_max_peak,min_peak,max_peak,sp,has_loop_pos,is_selected,c); has_loop_pos=false; prev_min_peak=min_peak; prev_max_peak=max_peak; max_peak=-32768; min_peak=32767; //pretty difficult values.. prev_screen_pos=screen_pos; } } } sm->unlock_data(sample); AudioLock::end(); }