Exemplo n.º 1
0
void ShapeView::updateShapeList()
{
	clear();
	setWordWrap(true);
	for (QHash<QString, shapeData>::Iterator it = m_Shapes.begin(); it != m_Shapes.end(); ++it)
	{
		int w = it.value().width + 4;
		int h = it.value().height + 4;
		QImage Ico(w, h, QImage::Format_ARGB32_Premultiplied);
		Ico.fill(0);
		ScPainter *painter = new ScPainter(&Ico, w, h);
		painter->setBrush(qRgb(0, 0, 0));
		painter->setPen(qRgb(0, 0, 0), 1.0, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin);
		painter->setFillMode(ScPainter::Solid);
		painter->setStrokeMode(ScPainter::Solid);
		painter->translate(2.0, 2.0);
		painter->setupPolygon(&it.value().path);
		painter->drawPolygon();
		painter->end();
		delete painter;
		QPixmap pm;
		if (w >= h)
			pm = QPixmap::fromImage(Ico.scaledToWidth(48, Qt::SmoothTransformation));
		else
			pm = QPixmap::fromImage(Ico.scaledToHeight(48, Qt::SmoothTransformation));
		QPixmap pm2(48, 48);
		pm2.fill(palette().color(QPalette::Base));
		QPainter p;
		p.begin(&pm2);
		p.drawPixmap(24 - pm.width() / 2, 24 - pm.height() / 2, pm);
		p.end();
		QListWidgetItem *item = new QListWidgetItem(pm2, it.value().name, this);
		item->setData(Qt::UserRole, it.key());
		item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled);
	}
}
Exemplo n.º 2
0
// Leanify the file
// and move the file ahead size_leanified bytes
// the new location of the file will be file_pointer - size_leanified
// it's designed this way to avoid extra memmove or memcpy
// return new size
size_t LeanifyFile(void *file_pointer, size_t file_size, size_t size_leanified /*= 0*/)
{
    if (!memcmp(file_pointer, Png::header_magic, sizeof(Png::header_magic)))
    {
        if (is_verbose)
        {
            std::cout << "PNG detected." << std::endl;
        }
        return Png(file_pointer, file_size).Leanify(size_leanified);
    }
    else if (!memcmp(file_pointer, Jpeg::header_magic, sizeof(Jpeg::header_magic)))
    {
        if (is_verbose)
        {
            std::cout << "JPEG detected." << std::endl;
        }
        return Jpeg(file_pointer, file_size).Leanify(size_leanified);
    }
    else if (!memcmp(file_pointer, Lua::header_magic, sizeof(Lua::header_magic)))
    {
        if (is_verbose)
        {
            std::cout << "Lua detected." << std::endl;
        }
        return Lua(file_pointer, file_size).Leanify(size_leanified);
    }
    else if (!memcmp(file_pointer, Zip::header_magic, sizeof(Zip::header_magic)))
    {
        if (is_verbose)
        {
            std::cout << "ZIP detected." << std::endl;
        }
        return Zip(file_pointer, file_size).Leanify(size_leanified);
    }
    else if (!memcmp(file_pointer, Pe::header_magic, sizeof(Pe::header_magic)))
    {
        if (is_verbose)
        {
            std::cout << "PE detected." << std::endl;
        }
        return Pe(file_pointer, file_size).Leanify(size_leanified);
    }
    else if (!memcmp(file_pointer, Gz::header_magic, sizeof(Gz::header_magic)))
    {
        if (is_verbose)
        {
            std::cout << "GZ detected." << std::endl;
        }
        return Gz(file_pointer, file_size).Leanify(size_leanified);
    }
    else if (!memcmp(file_pointer, Ico::header_magic, sizeof(Ico::header_magic)))
    {
        if (is_verbose)
        {
            std::cout << "ICO detected." << std::endl;
        }
        return Ico(file_pointer, file_size).Leanify(size_leanified);
    }
    else if (!memcmp(file_pointer, Gft::header_magic, sizeof(Gft::header_magic)))
    {
        if (is_verbose)
        {
            std::cout << "GFT detected." << std::endl;
        }
        return Gft(file_pointer, file_size).Leanify(size_leanified);
    }
    else if (!memcmp(file_pointer, Rdb::header_magic, sizeof(Rdb::header_magic)))
    {
        if (is_verbose)
        {
            std::cout << "RDB detected." << std::endl;
        }
        return Rdb(file_pointer, file_size).Leanify(size_leanified);
    }
    else if (!memcmp(file_pointer, Swf::header_magic, sizeof(Swf::header_magic)) ||
             !memcmp(file_pointer, Swf::header_magic_deflate, sizeof(Swf::header_magic_deflate)) ||
             !memcmp(file_pointer, Swf::header_magic_lzma, sizeof(Swf::header_magic_lzma)))
    {
        if (is_verbose)
        {
            std::cout << "SWF detected." << std::endl;
        }
        return Swf(file_pointer, file_size).Leanify(size_leanified);
    }
    else
    {
        // tar file does not have header magic
        // ustar is optional
        {
            Tar t(file_pointer, file_size);
            // checking first record checksum
            if (t.IsValid())
            {
                if (is_verbose)
                {
                    std::cout << "tar detected." << std::endl;
                }
                return t.Leanify(size_leanified);
            }
        }

        // XML file does not have header magic
        // have to parse and see if there are any errors.
        {
            Xml x(file_pointer, file_size);
            if (x.IsValid())
            {
                if (is_verbose)
                {
                    std::cout << "XML detected." << std::endl;
                }
                return x.Leanify(size_leanified);
            }
        }
    }

    if (is_verbose)
    {
        std::cout << "Format not supported!" << std::endl;
    }
    // for unsupported format, just memmove it.
    return Format(file_pointer, file_size).Leanify(size_leanified);
}