// destructor Painter::~Painter() { _MakeEmpty(); delete fClippingRegion; delete fPatternHandler; delete fTextRenderer; }
// destructor PathContainer::~PathContainer() { #ifdef ICON_O_MATIC int32 count = fListeners.CountItems(); if (count > 0) { debugger("~PathContainer() - there are still" "listeners attached\n"); } #endif // ICON_O_MATIC _MakeEmpty(); }
// SetColors void Gradient::SetColors(const Gradient& other) { #ifdef ICON_O_MATIC AutoNotificationSuspender _(this); #endif _MakeEmpty(); for (int32 i = 0; BGradient::ColorStop* step = other.ColorAt(i); i++) AddColor(*step, i); Notify(); }
// AttachToBuffer void Painter::AttachToBuffer(RenderingBuffer* buffer) { if (buffer && buffer->InitCheck() >= B_OK) { // clean up previous stuff _MakeEmpty(); fBuffer = new agg::rendering_buffer(); fBuffer->attach((uint8*)buffer->Bits(), buffer->Width(), buffer->Height(), buffer->BytesPerRow()); fPixelFormat = new pixfmt(*fBuffer, fPatternHandler); fPixelFormat->set_drawing_mode(DrawingModeFactory::DrawingModeFor(fDrawingMode, fAlphaSrcMode, fAlphaFncMode, false)); fBaseRenderer = new renderer_base(*fPixelFormat); // These are the AGG renderes and rasterizes which // will be used for stroking paths rgb_color color = fPatternHandler->HighColor().GetColor32(); #if ALIASED_DRAWING fOutlineRenderer = new outline_renderer_type(*fBaseRenderer); fOutlineRasterizer = new outline_rasterizer_type(*fOutlineRenderer); #else fOutlineRenderer = new outline_renderer_type(*fBaseRenderer, fLineProfile); fOutlineRasterizer = new outline_rasterizer_type(*fOutlineRenderer); // attach our line profile to the renderer, it keeps a pointer fOutlineRenderer->profile(fLineProfile); #endif // the renderer used for filling paths fRenderer = new renderer_type(*fBaseRenderer); fRasterizer = new rasterizer_type(); fScanline = new scanline_type(); #if ALIASED_DRAWING fRasterizer->gamma(agg::gamma_threshold(0.5)); #endif // These are renderers needed for drawing text fFontRendererSolid = new font_renderer_solid_type(*fBaseRenderer); fFontRendererBin = new font_renderer_bin_type(*fBaseRenderer); _SetRendererColor(fPatternHandler->HighColor().GetColor32()); _RebuildClipping(); } }
// destructor Gradient::~Gradient() { _MakeEmpty(); }
// DetachedFromWindow void SimpleListView::DetachedFromWindow() { DragSortableListView::DetachedFromWindow(); _MakeEmpty(); }
// DetachFromBuffer void Painter::DetachFromBuffer() { _MakeEmpty(); }
// MakeEmpty void PathContainer::MakeEmpty() { _MakeEmpty(); }
// SetTo void PropertyListView::SetTo(PropertyObject* object) { // try to do without rebuilding the list // it should in fact be pretty unlikely that this does not // work, but we keep being defensive if (fPropertyObject && object && fPropertyObject->ContainsSameProperties(*object)) { // iterate over view items and update their value views bool error = false; for (int32 i = 0; PropertyItemView* item = _ItemAt(i); i++) { Property* property = object->PropertyAt(i); if (!item->AdoptProperty(property)) { // the reason for this can be that the property is // unkown to the PropertyEditorFactory and therefor // there is no editor view at this item fprintf(stderr, "PropertyListView::_SetTo() - " "property mismatch at %ld\n", i); error = true; break; } if (property) item->SetEnabled(property->IsEditable()); } // we didn't need to make empty, but transfer ownership // of the object if (!error) { // if the "adopt" process went only halfway, // some properties of the original object // are still referenced, so we can only // delete the original object if the process // was successful and leak Properties otherwise, // but this case is only theoretical anyways... delete fPropertyObject; } fPropertyObject = object; } else { // remember scroll pos, selection and focused item BPoint scrollOffset = ScrollOffset(); BList selection(20); int32 focused = -1; for (int32 i = 0; PropertyItemView* item = _ItemAt(i); i++) { if (item->IsSelected()) selection.AddItem((void*)i); if (item->IsFocused()) focused = i; } if (Window()) Window()->BeginViewTransaction(); fSuspendUpdates = true; // rebuild list _MakeEmpty(); fPropertyObject = object; if (fPropertyObject) { // fill with content for (int32 i = 0; Property* property = fPropertyObject->PropertyAt(i); i++) { PropertyItemView* item = new PropertyItemView(property); item->SetEnabled(property->IsEditable()); _AddItem(item); } _LayoutItems(); // restore scroll pos, selection and focus SetScrollOffset(scrollOffset); for (int32 i = 0; PropertyItemView* item = _ItemAt(i); i++) { if (selection.HasItem((void*)i)) item->SetSelected(true); if (i == focused) item->MakeFocus(true); } } if (Window()) Window()->EndViewTransaction(); fSuspendUpdates = false; SetDataRect(_ItemsRect()); } _UpdateSavedProperties(); _CheckMenuStatus(); Invalidate(); }