示例#1
0
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);
}
示例#2
0
	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
	}
示例#3
0
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");
}
示例#4
0
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;
}
示例#5
0
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());
}