upd
This commit is contained in:
parent
3f6d43ec7b
commit
0583acb7aa
140
TextureSheetMaker/TextureSheet.cpp
Normal file
140
TextureSheetMaker/TextureSheet.cpp
Normal file
@ -0,0 +1,140 @@
|
||||
#include "TextureSheet.h"
|
||||
|
||||
|
||||
bool pixmapSortFunc(const std::pair<QString, boost::shared_ptr<QPixmap>>& pixmap1, const std::pair<QString, boost::shared_ptr<QPixmap>>& pixmap2)
|
||||
{
|
||||
return pixmap1.second->width() * pixmap1.second->height() > pixmap2.second->width() * pixmap2.second->height();
|
||||
}
|
||||
|
||||
|
||||
bool resultTexturePositionsSortFunc(const std::pair<QString, TexCoordRect>& result1, const std::pair<QString, TexCoordRect>& result2)
|
||||
{
|
||||
return result1.first < result2.first;
|
||||
}
|
||||
|
||||
void TextureSheet::Calculate(int width, int height)
|
||||
{
|
||||
spaceAreaArr.clear();
|
||||
resultTexturePositions.clear();
|
||||
|
||||
std::sort(pixmapArray.begin(), pixmapArray.end(), &pixmapSortFunc);
|
||||
|
||||
resultPixmap = boost::shared_ptr<QPixmap>(new QPixmap(width, height));
|
||||
|
||||
QColor transparentColor(0,0,0,0);
|
||||
|
||||
resultPixmap->fill(transparentColor);
|
||||
|
||||
|
||||
spaceAreaArr.push_back(SpaceArea(0,0,width,height));
|
||||
|
||||
QPainter p;
|
||||
|
||||
|
||||
p.begin(&(*resultPixmap));
|
||||
|
||||
for (std::vector<std::pair<QString, boost::shared_ptr<QPixmap>>>::iterator pixmapItr = pixmapArray.begin(); pixmapItr != pixmapArray.end(); pixmapItr++)
|
||||
{
|
||||
|
||||
boost::shared_ptr<QPixmap> selectedPixmap = pixmapItr->second;
|
||||
|
||||
|
||||
|
||||
int foundIndex = -1;
|
||||
|
||||
for (size_t i = 0; i < spaceAreaArr.size(); i++)
|
||||
{
|
||||
if (spaceAreaArr[i].Width >= selectedPixmap->width()
|
||||
&& spaceAreaArr[i].Height >= selectedPixmap->height()
|
||||
&& (foundIndex == -1 ||
|
||||
spaceAreaArr[i].Width*spaceAreaArr[i].Height < spaceAreaArr[foundIndex].Width*spaceAreaArr[foundIndex].Height))
|
||||
{
|
||||
foundIndex = i;
|
||||
}
|
||||
}
|
||||
|
||||
if (foundIndex != -1)
|
||||
{
|
||||
//split space
|
||||
|
||||
SpaceArea rightSpaceArea(spaceAreaArr[foundIndex].posX + selectedPixmap->width(),
|
||||
spaceAreaArr[foundIndex].posY,
|
||||
spaceAreaArr[foundIndex].Width - selectedPixmap->width(),
|
||||
selectedPixmap->height());
|
||||
|
||||
SpaceArea topSpaceArea(spaceAreaArr[foundIndex].posX,
|
||||
spaceAreaArr[foundIndex].posY + selectedPixmap->height(),
|
||||
spaceAreaArr[foundIndex].Width,
|
||||
spaceAreaArr[foundIndex].Height - selectedPixmap->height());
|
||||
|
||||
|
||||
p.drawPixmap(spaceAreaArr[foundIndex].posX, spaceAreaArr[foundIndex].posY, *selectedPixmap);
|
||||
|
||||
TexCoordRect texCoordRect(spaceAreaArr[foundIndex].posX / static_cast<float>(width),
|
||||
spaceAreaArr[foundIndex].posY / static_cast<float>(height),
|
||||
(spaceAreaArr[foundIndex].posX + selectedPixmap->width()) / static_cast<float>(width),
|
||||
(spaceAreaArr[foundIndex].posY + selectedPixmap->height()) / static_cast<float>(height));
|
||||
|
||||
texCoordRect.texCoordFromY = 1.f - texCoordRect.texCoordFromY;
|
||||
texCoordRect.texCoordToY = 1.f - texCoordRect.texCoordToY;
|
||||
|
||||
float temp = texCoordRect.texCoordFromY;
|
||||
texCoordRect.texCoordFromY = texCoordRect.texCoordToY;
|
||||
texCoordRect.texCoordToY = temp;
|
||||
|
||||
resultTexturePositions.push_back(std::pair<QString, TexCoordRect>(pixmapItr->first, texCoordRect));
|
||||
|
||||
spaceAreaArr.erase(spaceAreaArr.begin() + foundIndex);
|
||||
spaceAreaArr.push_back(rightSpaceArea);
|
||||
spaceAreaArr.push_back(topSpaceArea);
|
||||
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
throw std::runtime_error("Not enough space");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
QString TextureSheet::GetCalculatedXml()
|
||||
{
|
||||
QString result;
|
||||
|
||||
result = "<TextureSheet>\n\t<TextureElements>\n";
|
||||
|
||||
std::sort(imageNamesArray.begin(), imageNamesArray.end());
|
||||
|
||||
std::sort(resultTexturePositions.begin(), resultTexturePositions.end(), &resultTexturePositionsSortFunc);
|
||||
|
||||
for (size_t i = 0; i < imageNamesArray.size(); i++)
|
||||
{
|
||||
result += QString("\t\t<Texture><Name>%1</Name><TexCoordFrom x='%2' y='%3'/><TexCoordTo x='%4' y='%5'/></Texture>\n")
|
||||
.arg(imageNamesArray[i])
|
||||
.arg(QString::number(resultTexturePositions[i].second.texCoordFromX))
|
||||
.arg(QString::number(resultTexturePositions[i].second.texCoordFromY))
|
||||
.arg(QString::number(resultTexturePositions[i].second.texCoordToX))
|
||||
.arg(QString::number(resultTexturePositions[i].second.texCoordToY));
|
||||
}
|
||||
|
||||
result += "\t</TextureElements>\n</TextureSheet>";
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void TextureSheet::Clear()
|
||||
{
|
||||
spaceAreaArr.clear();
|
||||
resultTexturePositions.clear();
|
||||
pixmapArray.clear();
|
||||
imageNamesArray.clear();
|
||||
|
||||
resultPixmap = boost::shared_ptr<QPixmap>(new QPixmap(4,4));
|
||||
|
||||
QColor transparentColor(0,0,0,0);
|
||||
|
||||
resultPixmap->fill(transparentColor);
|
||||
}
|
88
TextureSheetMaker/TextureSheet.h
Normal file
88
TextureSheetMaker/TextureSheet.h
Normal file
@ -0,0 +1,88 @@
|
||||
#ifndef TEXTURESHEET_H
|
||||
#define TEXTURESHEET_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QGraphicsScene>
|
||||
#include <QPicture>
|
||||
#include <QPainter>
|
||||
#include <QMainWindow>
|
||||
#include <QFileDialog>
|
||||
#include <QMessageBox>
|
||||
#include "boost/shared_ptr.hpp"
|
||||
#include <map>
|
||||
|
||||
struct TexCoordRect
|
||||
{
|
||||
float texCoordFromX;
|
||||
float texCoordFromY;
|
||||
float texCoordToX;
|
||||
float texCoordToY;
|
||||
|
||||
TexCoordRect()
|
||||
: texCoordFromX(0)
|
||||
, texCoordFromY(0)
|
||||
, texCoordToX(0)
|
||||
, texCoordToY(0)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
TexCoordRect(float itexCoordFromX, float itexCoordFromY, float itexCoordToX, float itexCoordToY)
|
||||
: texCoordFromX(itexCoordFromX)
|
||||
, texCoordFromY(itexCoordFromY)
|
||||
, texCoordToX(itexCoordToX)
|
||||
, texCoordToY(itexCoordToY)
|
||||
{
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
struct SpaceArea
|
||||
{
|
||||
int posX;
|
||||
int posY;
|
||||
int Width;
|
||||
int Height;
|
||||
|
||||
SpaceArea()
|
||||
: posX(0)
|
||||
, posY(0)
|
||||
, Width(0)
|
||||
, Height(0)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
SpaceArea(int iposX, int iposY, int iWidth, int iHeight)
|
||||
: posX(iposX)
|
||||
, posY(iposY)
|
||||
, Width(iWidth)
|
||||
, Height(iHeight)
|
||||
{
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
class TextureSheet
|
||||
{
|
||||
protected:
|
||||
|
||||
public:
|
||||
std::vector<std::pair<QString, boost::shared_ptr<QPixmap>>> pixmapArray;
|
||||
std::vector<QString> imageNamesArray;
|
||||
|
||||
boost::shared_ptr<QPixmap> resultPixmap;
|
||||
std::vector<std::pair<QString, TexCoordRect>> resultTexturePositions;
|
||||
|
||||
std::vector<SpaceArea> spaceAreaArr;
|
||||
|
||||
void Calculate(int width, int height);
|
||||
QString GetCalculatedXml();
|
||||
|
||||
void Clear();
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif // TEXTURESHEET_H
|
24
TextureSheetMaker/TextureSheetMaker.pro
Normal file
24
TextureSheetMaker/TextureSheetMaker.pro
Normal file
@ -0,0 +1,24 @@
|
||||
#-------------------------------------------------
|
||||
#
|
||||
# Project created by QtCreator 2013-06-20T22:38:10
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
QT += core gui
|
||||
|
||||
TARGET = TextureSheetMaker
|
||||
TEMPLATE = app
|
||||
|
||||
|
||||
SOURCES += main.cpp\
|
||||
mainwindow.cpp \
|
||||
TextureSheet.cpp
|
||||
|
||||
HEADERS += mainwindow.h \
|
||||
TextureSheet.h
|
||||
|
||||
|
||||
INCLUDEPATH += $$(LibsPath)/boost_1_52_0
|
||||
DEPENDPATH += $$(LibsPath)/boost_1_52_0
|
||||
|
||||
FORMS += mainwindow.ui
|
16
TextureSheetMaker/main.cpp
Normal file
16
TextureSheetMaker/main.cpp
Normal file
@ -0,0 +1,16 @@
|
||||
#include <QtGui/QApplication>
|
||||
#include "mainwindow.h"
|
||||
#include "ui_mainwindow.h"
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication a(argc, argv);
|
||||
MainWindow w;
|
||||
|
||||
w.show();
|
||||
|
||||
w.RegisterSignals();
|
||||
|
||||
return a.exec();
|
||||
}
|
144
TextureSheetMaker/mainwindow.cpp
Normal file
144
TextureSheetMaker/mainwindow.cpp
Normal file
@ -0,0 +1,144 @@
|
||||
#include "mainwindow.h"
|
||||
#include "ui_mainwindow.h"
|
||||
#include <QTextStream.h>
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent) :
|
||||
QMainWindow(parent),
|
||||
ui(new Ui::MainWindow)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
Ui::MainWindow* MainWindow::GetUi()
|
||||
{
|
||||
return ui;
|
||||
}
|
||||
|
||||
void MainWindow::RegisterSignals()
|
||||
{
|
||||
QObject::connect(ui->AddTexturesButton, SIGNAL(pressed()), this, SLOT(OnAddTexturesPressed()));
|
||||
QObject::connect(ui->GenerateButton, SIGNAL(pressed()), this, SLOT(OnGeneratePressed()));
|
||||
QObject::connect(ui->ClearButton, SIGNAL(pressed()), this, SLOT(OnClearPressed()));
|
||||
QObject::connect(ui->SaveTextureButton, SIGNAL(pressed()), this, SLOT(OnSaveTexturePressed()));
|
||||
QObject::connect(ui->SaveParamsButton, SIGNAL(pressed()), this, SLOT(OnSaveSheetParamsPressed()));
|
||||
}
|
||||
|
||||
|
||||
|
||||
void MainWindow::OnAddTexturesPressed()
|
||||
{
|
||||
QFileDialog dialog(this);
|
||||
|
||||
dialog.setFileMode(QFileDialog::ExistingFiles);
|
||||
|
||||
dialog.setNameFilter("PNG images (*.png)");
|
||||
|
||||
if (dialog.exec())
|
||||
{
|
||||
|
||||
QStringList fileNames = dialog.selectedFiles();
|
||||
|
||||
for (int i = 0; i < fileNames.count(); i++)
|
||||
{
|
||||
boost::shared_ptr<QPixmap> pixmap(new QPixmap(fileNames[i], "PNG"));
|
||||
|
||||
QFileInfo q;
|
||||
q.setFile(fileNames[i]);
|
||||
|
||||
QString fn = q.fileName();
|
||||
|
||||
//std::string fileName = fn.toUtf8().constData();
|
||||
|
||||
ui->textureList->addItem(fn);
|
||||
|
||||
textureSheet.pixmapArray.push_back(std::pair<QString, boost::shared_ptr<QPixmap>>(fn, pixmap));
|
||||
textureSheet.imageNamesArray.push_back(fn);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::OnGeneratePressed()
|
||||
{
|
||||
int width = ui->widthSpinBox->value();
|
||||
int height = ui->heightSpinBox->value();
|
||||
|
||||
try
|
||||
{
|
||||
textureSheet.Calculate(width, height);
|
||||
QString xml = textureSheet.GetCalculatedXml();
|
||||
ui->textureParamsEdit->clear();
|
||||
|
||||
ui->textureParamsEdit->appendPlainText(xml);
|
||||
|
||||
}
|
||||
catch (std::runtime_error& error)
|
||||
{
|
||||
QMessageBox msgBox;
|
||||
msgBox.setText("Not enough space");
|
||||
msgBox.exec();
|
||||
}
|
||||
|
||||
|
||||
ui->PixmapSheet->setPixmap(*(textureSheet.resultPixmap));
|
||||
}
|
||||
|
||||
void MainWindow::OnClearPressed()
|
||||
{
|
||||
textureSheet.Clear();
|
||||
ui->PixmapSheet->setPixmap(*(textureSheet.resultPixmap));
|
||||
|
||||
ui->textureList->clear();
|
||||
}
|
||||
|
||||
void MainWindow::OnSaveTexturePressed()
|
||||
{
|
||||
QFileDialog dialog(this);
|
||||
|
||||
dialog.setAcceptMode(QFileDialog::AcceptSave);
|
||||
|
||||
dialog.setFileMode(QFileDialog::AnyFile);
|
||||
|
||||
dialog.setNameFilter("PNG images (*.png)");
|
||||
|
||||
dialog.setDefaultSuffix("png");
|
||||
|
||||
if (dialog.exec())
|
||||
{
|
||||
QString fileName = *(dialog.selectedFiles().begin());
|
||||
|
||||
textureSheet.resultPixmap->save(fileName, "PNG");
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::OnSaveSheetParamsPressed()
|
||||
{
|
||||
QFileDialog dialog(this);
|
||||
|
||||
dialog.setAcceptMode(QFileDialog::AcceptSave);
|
||||
|
||||
dialog.setFileMode(QFileDialog::AnyFile);
|
||||
|
||||
dialog.setNameFilter("XML files (*.xml)");
|
||||
|
||||
dialog.setDefaultSuffix("xml");
|
||||
|
||||
if (dialog.exec())
|
||||
{
|
||||
QString fileName = *(dialog.selectedFiles().begin());
|
||||
|
||||
QFile file(fileName);
|
||||
if (file.open(QIODevice::WriteOnly | QIODevice::Text))
|
||||
{
|
||||
QTextStream outStream(&file);
|
||||
outStream << ui->textureParamsEdit->toPlainText();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
40
TextureSheetMaker/mainwindow.h
Normal file
40
TextureSheetMaker/mainwindow.h
Normal file
@ -0,0 +1,40 @@
|
||||
#ifndef MAINWINDOW_H
|
||||
#define MAINWINDOW_H
|
||||
|
||||
#include <QMainWindow>
|
||||
#include <vector>
|
||||
#include "boost/shared_ptr.hpp"
|
||||
|
||||
#include "TextureSheet.h"
|
||||
|
||||
namespace Ui {
|
||||
class MainWindow;
|
||||
}
|
||||
|
||||
|
||||
class MainWindow : public QMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
TextureSheet textureSheet;
|
||||
public:
|
||||
explicit MainWindow(QWidget *parent = 0);
|
||||
~MainWindow();
|
||||
|
||||
Ui::MainWindow* GetUi();
|
||||
|
||||
void RegisterSignals();
|
||||
public slots:
|
||||
void OnAddTexturesPressed();
|
||||
void OnGeneratePressed();
|
||||
void OnClearPressed();
|
||||
void OnSaveTexturePressed();
|
||||
|
||||
void OnSaveSheetParamsPressed();
|
||||
|
||||
|
||||
private:
|
||||
Ui::MainWindow *ui;
|
||||
};
|
||||
|
||||
#endif // MAINWINDOW_H
|
234
TextureSheetMaker/mainwindow.ui
Normal file
234
TextureSheetMaker/mainwindow.ui
Normal file
@ -0,0 +1,234 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>MainWindow</class>
|
||||
<widget class="QMainWindow" name="MainWindow">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>844</width>
|
||||
<height>688</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>MainWindow</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralWidget">
|
||||
<widget class="QListWidget" name="textureList">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>50</y>
|
||||
<width>191</width>
|
||||
<height>251</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="AddTexturesButton">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>20</y>
|
||||
<width>91</width>
|
||||
<height>23</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Add textures...</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="ClearButton">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>110</x>
|
||||
<y>20</y>
|
||||
<width>91</width>
|
||||
<height>23</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Clear</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QSpinBox" name="widthSpinBox">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>310</x>
|
||||
<y>40</y>
|
||||
<width>61</width>
|
||||
<height>22</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>4</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>4096</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>512</number>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QSpinBox" name="heightSpinBox">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>311</x>
|
||||
<y>70</y>
|
||||
<width>61</width>
|
||||
<height>22</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>4</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>4096</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>512</number>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>260</x>
|
||||
<y>50</y>
|
||||
<width>46</width>
|
||||
<height>13</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Width:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>260</x>
|
||||
<y>70</y>
|
||||
<width>46</width>
|
||||
<height>13</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Height:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPlainTextEdit" name="textureParamsEdit">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>340</y>
|
||||
<width>191</width>
|
||||
<height>131</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="verticalScrollBarPolicy">
|
||||
<enum>Qt::ScrollBarAlwaysOn</enum>
|
||||
</property>
|
||||
<property name="horizontalScrollBarPolicy">
|
||||
<enum>Qt::ScrollBarAlwaysOn</enum>
|
||||
</property>
|
||||
<property name="lineWrapMode">
|
||||
<enum>QPlainTextEdit::NoWrap</enum>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="GenerateButton">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>310</y>
|
||||
<width>121</width>
|
||||
<height>23</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Generate</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="SaveTextureButton">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>480</y>
|
||||
<width>121</width>
|
||||
<height>23</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Save texture...</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="SaveParamsButton">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>510</y>
|
||||
<width>121</width>
|
||||
<height>23</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Save params...</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QFrame" name="frame">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>220</x>
|
||||
<y>110</y>
|
||||
<width>512</width>
|
||||
<height>512</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::Box</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
<widget class="QLabel" name="PixmapSheet">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>512</width>
|
||||
<height>512</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QMenuBar" name="menuBar">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>844</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QToolBar" name="mainToolBar">
|
||||
<attribute name="toolBarArea">
|
||||
<enum>TopToolBarArea</enum>
|
||||
</attribute>
|
||||
<attribute name="toolBarBreak">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
</widget>
|
||||
<widget class="QStatusBar" name="statusBar"/>
|
||||
</widget>
|
||||
<layoutdefault spacing="6" margin="11"/>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
Loading…
Reference in New Issue
Block a user