TBImage TBImageManager::GetImage(const char *filename) { uint32 hash_key = TBGetHash(filename); TBImageRep *image_rep = m_image_rep_hash.Get(hash_key); if (!image_rep) { // Load a fragment. Load a destination DPI bitmap if available. TBBitmapFragment *fragment = nullptr; if (g_tb_skin->GetDimensionConverter()->NeedConversion()) { TBTempBuffer filename_dst_DPI; g_tb_skin->GetDimensionConverter()->GetDstDPIFilename(filename, &filename_dst_DPI); fragment = m_frag_manager.GetFragmentFromFile(filename_dst_DPI.GetData(), false); } if (!fragment) fragment = m_frag_manager.GetFragmentFromFile(filename, false); image_rep = new TBImageRep(this, fragment, hash_key); if (!image_rep || !fragment || !m_image_rep_hash.Add(hash_key, image_rep)) { delete image_rep; m_frag_manager.FreeFragment(fragment); image_rep = nullptr; } TBDebugOut(image_rep ? "TBImageManager - Loaded new image.\n" : "TBImageManager - Loading image failed.\n"); } return TBImage(image_rep); }
virtual void OnError(int line_nr, const char *error) { #ifdef TB_RUNTIME_DEBUG_INFO TBStr err; err.SetFormatted("%s(%d):Parse error: %s\n", m_filename, line_nr, error); TBDebugOut(err); #endif // TB_RUNTIME_DEBUG_INFO }
void TBImageManager::RemoveImageRep(TBImageRep *image_rep) { assert(image_rep->ref_count == 0); if (image_rep->fragment) { m_frag_manager.FreeFragment(image_rep->fragment); image_rep->fragment = nullptr; } m_image_rep_hash.Remove(image_rep->hash_key); image_rep->image_manager = nullptr; TBDebugOut("TBImageManager - Removed image.\n"); }
bool TBInitAddons() { TBAddonFactory *f = g_registered_addon_factories; while (f) { TBAddon *addon = f->Create(); if (!addon || !addon->Init()) { delete addon; TBDebugOut("Failed initiating addon\n"); return false; } m_addons.AddLast(addon); f = f->next; } return true; }
void TBHashTable::Debug() { TBTempBuffer line; line.AppendString("Hash table: "); int total_count = 0; for (uint32 i = 0; i < m_num_buckets; i++) { int count = 0; ITEM *item = m_buckets[i]; while (item) { count++; item = item->next; } TBStr tmp; tmp.SetFormatted("%d ", count); line.AppendString(tmp); total_count += count; } TBStr tmp; tmp.SetFormatted(" (total: %d of %d buckets)\n", total_count, m_num_buckets); line.AppendString(tmp); TBDebugOut(line.GetData()); }