QLabel
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 248 KiB After Width: | Height: | Size: 248 KiB |
Before Width: | Height: | Size: 413 KiB After Width: | Height: | Size: 413 KiB |
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 97 KiB After Width: | Height: | Size: 97 KiB |
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.4 KiB |
|
@ -44,7 +44,7 @@ class Window(QWidget):
|
|||
40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum))
|
||||
|
||||
# 原始图片
|
||||
self.srcImage = QImage('images/fg.png')
|
||||
self.srcImage = QImage('Data/fg.png')
|
||||
self.imageLabel.setPixmap(QPixmap.fromImage(self.srcImage))
|
||||
|
||||
def doHorFilp(self):
|
|
@ -6,7 +6,7 @@ Created on 2018年10月18日
|
|||
@author: Irony
|
||||
@site: https://pyqt5.com https://github.com/892768447
|
||||
@email: 892768447@qq.com
|
||||
@file: SlippedImgWidget
|
||||
@file: ImageSlipped
|
||||
@description:
|
||||
"""
|
||||
from PyQt5.QtGui import QPixmap, QPainter
|
||||
|
@ -75,6 +75,6 @@ if __name__ == '__main__':
|
|||
import sys
|
||||
from PyQt5.QtWidgets import QApplication
|
||||
app = QApplication(sys.argv)
|
||||
w = SlippedImgWidget('images/bg1.jpg', 'images/fg1.png')
|
||||
w = SlippedImgWidget('Data/bg1.jpg', 'Data/fg1.png')
|
||||
w.show()
|
||||
sys.exit(app.exec_())
|
|
@ -6,7 +6,7 @@ Created on 2018年10月25日
|
|||
@author: Irony
|
||||
@site: https://pyqt5.com https://github.com/892768447
|
||||
@email: 892768447@qq.com
|
||||
@file: testNinePatch
|
||||
@file: NinePatch
|
||||
@description:
|
||||
"""
|
||||
|
||||
|
@ -22,7 +22,7 @@ import sys
|
|||
from PyQt5.QtGui import QImage, QPainter
|
||||
from PyQt5.QtWidgets import QApplication, QLabel, QWidget
|
||||
|
||||
from NinePatch import NinePatch
|
||||
from Lib.NinePatch import NinePatch
|
||||
|
||||
|
||||
class Label(QWidget):
|
||||
|
@ -30,7 +30,7 @@ class Label(QWidget):
|
|||
def __init__(self, *args, **kwargs):
|
||||
super(Label, self).__init__(*args, **kwargs)
|
||||
#.9 格式的图片
|
||||
self.image = NinePatch('skin_aio_friend_bubble_pressed.9.png')
|
||||
self.image = NinePatch('Data/skin_aio_friend_bubble_pressed.9.png')
|
||||
|
||||
def paintEvent(self, event):
|
||||
super(Label, self).paintEvent(event)
|
|
@ -19,10 +19,13 @@ __Version__ = "Version 1.0"
|
|||
|
||||
import sys
|
||||
|
||||
from ctypes import CDLL
|
||||
from PyQt5.QtGui import QImage
|
||||
from PyQt5.QtWidgets import QApplication, QLabel
|
||||
|
||||
from QtNinePatch import QtNinePatch
|
||||
CDLL('Lib/QtNinePatch/sip/QtNinePatch.dll')
|
||||
|
||||
from Lib.QtNinePatch.sip.QtNinePatch import QtNinePatch
|
||||
|
||||
|
||||
class Label(QLabel):
|
||||
|
@ -30,7 +33,7 @@ class Label(QLabel):
|
|||
def __init__(self, *args, **kwargs):
|
||||
super(Label, self).__init__(*args, **kwargs)
|
||||
#.9 格式的图片
|
||||
self.image = QImage('skin_aio_friend_bubble_pressed.9.png')
|
||||
self.image = QImage('Data/skin_aio_friend_bubble_pressed.9.png')
|
||||
|
||||
def showEvent(self, event):
|
||||
super(Label, self).showEvent(event)
|
|
@ -6,7 +6,7 @@ Created on 2018年10月25日
|
|||
@author: Irony
|
||||
@site: https://pyqt5.com https://github.com/892768447
|
||||
@email: 892768447@qq.com
|
||||
@file: testQtNinePatch
|
||||
@file: QtNinePatch2
|
||||
@description:
|
||||
"""
|
||||
|
||||
|
@ -22,7 +22,7 @@ import sys
|
|||
from PyQt5.QtGui import QImage
|
||||
from PyQt5.QtWidgets import QApplication, QLabel
|
||||
|
||||
import QtNinePatch
|
||||
from Lib import QtNinePatch2
|
||||
|
||||
|
||||
class Label(QLabel):
|
||||
|
@ -30,17 +30,17 @@ class Label(QLabel):
|
|||
def __init__(self, *args, **kwargs):
|
||||
super(Label, self).__init__(*args, **kwargs)
|
||||
#.9 格式的图片
|
||||
self.image = QImage('skin_aio_friend_bubble_pressed.9.png')
|
||||
self.image = QImage('Data/skin_aio_friend_bubble_pressed.9.png')
|
||||
|
||||
def showEvent(self, event):
|
||||
super(Label, self).showEvent(event)
|
||||
pixmap = QtNinePatch.createPixmapFromNinePatchImage(
|
||||
pixmap = QtNinePatch2.createPixmapFromNinePatchImage(
|
||||
self.image, self.width(), self.height())
|
||||
self.setPixmap(pixmap)
|
||||
|
||||
def resizeEvent(self, event):
|
||||
super(Label, self).resizeEvent(event)
|
||||
pixmap = QtNinePatch.createPixmapFromNinePatchImage(
|
||||
pixmap = QtNinePatch2.createPixmapFromNinePatchImage(
|
||||
self.image, self.width(), self.height())
|
||||
self.setPixmap(pixmap)
|
||||
|
|
@ -0,0 +1,96 @@
|
|||
# QLabel
|
||||
|
||||
## 1、图片加载显示
|
||||
[运行 ShowImage.py](ShowImage.py)
|
||||
|
||||
通过3种方式加载图片文件和显示gif图片
|
||||
|
||||
1. 通过`QPixmap("xxx.jpg")`加载
|
||||
2. 通过`pyrcc5`转换res.qrc为res_rc.py文件,可以直接import加载
|
||||
1. 转换命令`pyrcc5 res.qrc -o res_rc.py`
|
||||
2. `import res_rc`
|
||||
3. 此时可以通过`QPixmap(":/images/head.jpg")`来加载
|
||||
3. 通过rcc命令转成为二进制文件res.rcc
|
||||
1. 转换命令`Tools/rcc.exe -binary res2.qrc -o res.rcc`
|
||||
2. 这里把资源前缀修改下(/myfile),见res2.qrc文件
|
||||
3. 通过`QResource.registerResource("res.rcc")`注册
|
||||
4. 此时可以通过`QPixmap(":/myfile/images/head.jpg")`来加载
|
||||
4. 通过xpm数组加载
|
||||
1. 通过工具`Tools/Image2XPM.exe`来转换
|
||||
2. 这里把转换的xpm数组直接放到py文件中当做一个变量
|
||||
3. 见xpmres.py中的image_head
|
||||
4. 此时可以通过`QPixmap(image_head)`来加载
|
||||
5. 通过`QMovie`加载gif图片
|
||||
|
||||
![ShowImage](ScreenShot/ShowImage.gif)
|
||||
|
||||
## 2、图片旋转
|
||||
[运行 ImageRotate.py](ImageRotate.py)
|
||||
|
||||
1. 水平翻转 `QImage.mirrored(True, False)`
|
||||
2. 垂直翻转 `QImage.mirrored(False, True)`
|
||||
3. 旋转90的整数倍使用`QTransform`比较友好
|
||||
4. 任意角度采用`QPainter.rotate`
|
||||
|
||||
![ImageRotate](ScreenShot/ImageRotate.gif)
|
||||
|
||||
## 3、仿网页图片错位显示
|
||||
[运行 ImageSlipped.py](ImageSlipped.py)
|
||||
|
||||
1. 设置`setMouseTracking(True)`开启鼠标跟踪
|
||||
2. 重写`mouseMoveEvent`鼠标移动事件获取偏移量
|
||||
3. 重写`paintEvent`事件绘制图片
|
||||
|
||||
![ImageSlipped](ScreenShot/ImageSlipped.gif)
|
||||
|
||||
## 4、显示.9格式图片(气泡)
|
||||
[运行 NinePatch.py](NinePatch.py) | [运行 QtNinePatch.py](QtNinePatch.py) | [运行 QtNinePatch2.py](QtNinePatch2.py)
|
||||
|
||||
什么叫.9.PNG呢,这是安卓开发里面的一种特殊的图片
|
||||
这种格式的图片在android 环境下具有自适应调节大小的能力。
|
||||
|
||||
(1)允许开发人员定义可扩展区域,当需要延伸图片以填充比图片本身更大区域时,可扩展区的内容被延展。
|
||||
|
||||
(2)允许开发人员定义内容显示区,用于显示文字或其他内容
|
||||
|
||||
目前手机QQ中很多漂亮的的聊天气泡就是.9格式的png图片
|
||||
|
||||
在Github开源库中搜索到两个C++版本的
|
||||
|
||||
1.一个是NinePatchQt https://github.com/Roninsc2/NinePatchQt
|
||||
|
||||
2.一个是QtNinePatch https://github.com/soramimi/QtNinePatch
|
||||
|
||||
### For PyQt
|
||||
1、目前针对第一个库在2年前用Python参考源码重新写一个见 `Lib/NinePatch.py`
|
||||
|
||||
2、这次针对第二个库用Python编写的见`Lib/QtNinePatch2.py`。用C++编写的pyd版本见`Lib/QtNinePatch`目录
|
||||
|
||||
### 说明
|
||||
1、建议优先使用pyd版本的(后续提供Python3.4 3.5 3.6 3.7 编译好的32为库文件),也可以自行编译,编译步骤见下文。
|
||||
|
||||
2、其次可以使用Python写的第二个版本`Lib/QtNinePatch2.py`(个人觉得方便调用)
|
||||
|
||||
3、最后再考虑第一个版本吧
|
||||
|
||||
4、以上为个人意见,两个C++版本的写法不一样,但是核心算法应该是类似的。
|
||||
|
||||
### 自行编译
|
||||
|
||||
1、首先要安装好Qt、PyQt5、编译安装对应的sip、对应的VC++编译工具
|
||||
|
||||
2、用Qt Creator 打开pro文件进行编译
|
||||
|
||||
3、进入源码中的sip文件夹
|
||||
|
||||
4、修改`configure.py`文件
|
||||
|
||||
```python
|
||||
# 这里是你的VC版本和对应的Qt目录中的文件夹
|
||||
config.platform = "win32-msvc2010"
|
||||
qt_path = 'D:/soft/Qt/Qt5.5.1/5.5/msvc2010'
|
||||
```
|
||||
|
||||
5、`python configure.py`
|
||||
|
||||
![NinePatchImage](ScreenShot/NinePatchImage.gif)
|
Before Width: | Height: | Size: 937 KiB After Width: | Height: | Size: 937 KiB |
Before Width: | Height: | Size: 3.1 MiB After Width: | Height: | Size: 3.1 MiB |
Before Width: | Height: | Size: 2.3 MiB After Width: | Height: | Size: 2.3 MiB |
Before Width: | Height: | Size: 290 KiB After Width: | Height: | Size: 290 KiB |
Before Width: | Height: | Size: 217 KiB After Width: | Height: | Size: 217 KiB |
|
@ -1,72 +1,72 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
'''
|
||||
Created on 2017年12月23日
|
||||
@author: Irony."[讽刺]
|
||||
@site: http://alyl.vip, http://orzorz.vip, https://coding.net/u/892768447, https://github.com/892768447
|
||||
@email: 892768447@qq.com
|
||||
@file: LoadImage
|
||||
@description:
|
||||
'''
|
||||
import sys
|
||||
|
||||
from PyQt5.QtCore import QResource
|
||||
from PyQt5.QtGui import QPixmap, QMovie
|
||||
from PyQt5.QtWidgets import QWidget, QApplication, QHBoxLayout, QLabel
|
||||
|
||||
import res_rc # @UnresolvedImport @UnusedImport
|
||||
from xpmres import image_head # @UnresolvedImport
|
||||
|
||||
|
||||
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
|
||||
__Copyright__ = "Copyright (c) 2017 Irony.\"[讽刺]"
|
||||
__Version__ = "Version 1.0"
|
||||
|
||||
|
||||
class ImageView(QWidget):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(ImageView, self).__init__(*args, **kwargs)
|
||||
self.resize(800, 600)
|
||||
layout = QHBoxLayout(self)
|
||||
|
||||
# 从文件加载图片
|
||||
layout.addWidget(QLabel(self, pixmap=QPixmap("images/head.jpg")))
|
||||
|
||||
# QResource 参考 http://doc.qt.io/qt-5/resources.html
|
||||
|
||||
# 从资源文件中加载1 from py file
|
||||
# 转换命令pyrcc5 res.qrc -o res_rc.py
|
||||
# 这种方式是从通过pyrcc5转换res.qrc为res_rc.py文件,可以直接import加载
|
||||
# 此时可以通过路径:/images/head.jpg来访问
|
||||
layout.addWidget(QLabel(self, pixmap=QPixmap(":/images/head.jpg")))
|
||||
|
||||
# 从二进制资源文件res.rcc中加载
|
||||
# 转换命令tools/rcc.exe -binary res2.qrc -o res.rcc
|
||||
# 这里把资源前缀修改下(/myfile),见res2.qrc文件
|
||||
# 此时需要注册
|
||||
QResource.registerResource("res.rcc")
|
||||
# 注意前缀
|
||||
layout.addWidget(
|
||||
QLabel(self, pixmap=QPixmap(":/myfile/images/head.jpg")))
|
||||
|
||||
# 从xpm数组中加载
|
||||
# 通过工具tools/Image2XPM.exe来转换
|
||||
# 这里把转换的xpm数组直接放到py文件中当做一个变量
|
||||
# 见xpmres.py中的image_head
|
||||
layout.addWidget(QLabel(self, pixmap=QPixmap(image_head)))
|
||||
|
||||
# 加载gif图片
|
||||
movie = QMovie("images/loading.gif")
|
||||
label = QLabel(self)
|
||||
label.setMovie(movie)
|
||||
layout.addWidget(label)
|
||||
movie.start()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = QApplication(sys.argv)
|
||||
w = ImageView()
|
||||
w.show()
|
||||
sys.exit(app.exec_())
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
'''
|
||||
Created on 2017年12月23日
|
||||
@author: Irony."[讽刺]
|
||||
@site: http://alyl.vip, http://orzorz.vip, https://coding.net/u/892768447, https://github.com/892768447
|
||||
@email: 892768447@qq.com
|
||||
@file: ShowImage
|
||||
@description:
|
||||
'''
|
||||
import sys
|
||||
|
||||
from PyQt5.QtCore import QResource
|
||||
from PyQt5.QtGui import QPixmap, QMovie
|
||||
from PyQt5.QtWidgets import QWidget, QApplication, QHBoxLayout, QLabel
|
||||
|
||||
from Lib import res_rc # @UnresolvedImport @UnusedImport
|
||||
from Lib.xpmres import image_head # @UnresolvedImport
|
||||
|
||||
|
||||
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
|
||||
__Copyright__ = "Copyright (c) 2017 Irony.\"[讽刺]"
|
||||
__Version__ = "Version 1.0"
|
||||
|
||||
|
||||
class ImageView(QWidget):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(ImageView, self).__init__(*args, **kwargs)
|
||||
self.resize(800, 600)
|
||||
layout = QHBoxLayout(self)
|
||||
|
||||
# 从文件加载图片
|
||||
layout.addWidget(QLabel(self, pixmap=QPixmap("Data/head.jpg")))
|
||||
|
||||
# QResource 参考 http://doc.qt.io/qt-5/resources.html
|
||||
|
||||
# 从资源文件中加载1 from py file
|
||||
# 转换命令pyrcc5 res.qrc -o res_rc.py
|
||||
# 这种方式是从通过pyrcc5转换res.qrc为res_rc.py文件,可以直接import加载
|
||||
# 此时可以通过路径:/images/head.jpg来访问
|
||||
layout.addWidget(QLabel(self, pixmap=QPixmap(":/images/head.jpg")))
|
||||
|
||||
# 从二进制资源文件res.rcc中加载
|
||||
# 转换命令tools/rcc.exe -binary res2.qrc -o res.rcc
|
||||
# 这里把资源前缀修改下(/myfile),见res2.qrc文件
|
||||
# 此时需要注册
|
||||
QResource.registerResource("Data/res.rcc")
|
||||
# 注意前缀
|
||||
layout.addWidget(
|
||||
QLabel(self, pixmap=QPixmap(":/myfile/images/head.jpg")))
|
||||
|
||||
# 从xpm数组中加载
|
||||
# 通过工具tools/Image2XPM.exe来转换
|
||||
# 这里把转换的xpm数组直接放到py文件中当做一个变量
|
||||
# 见xpmres.py中的image_head
|
||||
layout.addWidget(QLabel(self, pixmap=QPixmap(image_head)))
|
||||
|
||||
# 加载gif图片
|
||||
movie = QMovie("Data/loading.gif")
|
||||
label = QLabel(self)
|
||||
label.setMovie(movie)
|
||||
layout.addWidget(label)
|
||||
movie.start()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = QApplication(sys.argv)
|
||||
w = ImageView()
|
||||
w.show()
|
||||
sys.exit(app.exec_())
|
35
列表/README.md
|
@ -1,35 +0,0 @@
|
|||
# 列表
|
||||
|
||||
## [1、QListView](QListView/)
|
||||
|
||||
### 1. [显示自定义Widget](QListView/显示自定义Widget.py)
|
||||
|
||||
![截图](QListView/ScreenShot/显示自定义Widget.png)
|
||||
|
||||
### 2. [显示自定义Widget并排序](QListView/显示自定义Widget并排序.py)
|
||||
|
||||
![截图](QListView/ScreenShot/显示自定义Widget并排序.gif)
|
||||
|
||||
## [2、QListWidget](QListWidget/)
|
||||
|
||||
### 1. [自定义可拖拽Item](QListWidget/自定义可拖拽Item.py)
|
||||
|
||||
![截图](QListWidget/ScreenShot/自定义可拖拽Item.gif)
|
||||
|
||||
### 2. [腾讯视频热播列表](QListWidget/腾讯视频热播列表)
|
||||
1. 使用`flowlayout`布局
|
||||
2. 使用`QGridLayout`布局
|
||||
3. 使用`QListWidget`,设置`self.setFlow(self.LeftToRight)`和`self.setWrapping(True)`达到横向自动排列
|
||||
4. 其它知识点:
|
||||
1. 使用`QNetworkAccessManager`进行异步下载数据和图片
|
||||
2. 滚动条滑动到底部加载更多
|
||||
|
||||
![截图](QListWidget/腾讯视频热播列表/ScreenShot/1.gif)
|
||||
|
||||
### 3. [删除自定义Item](QListWidget/删除自定义Item.py)
|
||||
1. 删除item时先要通过`QListWidget.indexFromItem(item).row()`得到它的行数
|
||||
2. 通过`takeItem`函数取出该Item并删除掉,`item = self.listWidget.takeItem(row)`
|
||||
3. 移除item对应的自定义控件`self.listWidget.removeItemWidget(item)`
|
||||
4. 如果是清空所有Item,可以通过循环删除,但是删除的时候行号一直是0即可,原因和删除list数组一样。
|
||||
|
||||
![截图](QListWidget/ScreenShot/删除自定义Item.gif)
|
36
图片/README.md
|
@ -1,36 +0,0 @@
|
|||
# 图片
|
||||
|
||||
## [1、图片加载](图片加载/)
|
||||
通过3种方式加载图片文件和显示gif图片
|
||||
|
||||
1. 通过QPixmap("xxx.jpg")加载
|
||||
2. 通过pyrcc5转换res.qrc为res_rc.py文件,可以直接import加载
|
||||
1. 转换命令pyrcc5 res.qrc -o res_rc.py
|
||||
2. import res_rc
|
||||
3. 此时可以通过QPixmap(":/images/head.jpg")来加载
|
||||
3. 通过rcc命令转成为二进制文件res.rcc
|
||||
1. 转换命令tools/rcc.exe -binary res2.qrc -o res.rcc
|
||||
2. 这里把资源前缀修改下(/myfile),见res2.qrc文件
|
||||
3. 通过QResource.registerResource("res.rcc")注册
|
||||
4. 此时可以通过QPixmap(":/myfile/images/head.jpg")来加载
|
||||
4. 通过xpm数组加载
|
||||
1. 通过工具tools/Image2XPM.exe来转换
|
||||
2. 这里把转换的xpm数组直接放到py文件中当做一个变量
|
||||
3. 见xpmres.py中的image_head
|
||||
4. 此时可以通过QPixmap(image_head)来加载
|
||||
5. 通过QMovie加载gif图片
|
||||
|
||||
![截图](图片加载/ScreenShot/图片加载.gif)
|
||||
|
||||
## [2、仿网页图片错位特效](仿网页图片错位特效.py)
|
||||
![截图](ScreenShot/仿网页图片错位特效.gif)![截图](ScreenShot/仿网页图片错位特效2.gif)
|
||||
|
||||
## [3、显示.9格式图片](显示.9格式图片/)
|
||||
详情见子目录[显示.9格式图片](显示.9格式图片/)里
|
||||
|
||||
![截图](显示.9格式图片/ScreenShot/显示.9格式图片.gif)
|
||||
|
||||
## [4、图片旋转](图片旋转.py)
|
||||
这里需要注意QTransform旋转的方式对90度的整数倍数比较友好, 由于这里测试旋转任意角度, 故采用`QPainter.rotate`来实现
|
||||
|
||||
![截图](ScreenShot/图片旋转.gif)
|
|
@ -1,25 +0,0 @@
|
|||
# 图片加载测试
|
||||
|
||||
### [Python3.4.4 or Python3.5][PyQt5]
|
||||
|
||||
### 一、通过3种方式加载图片文件和显示gif图片
|
||||
|
||||
1. 通过QPixmap("xxx.jpg")加载
|
||||
2. 通过pyrcc5转换res.qrc为res_rc.py文件,可以直接import加载
|
||||
- 转换命令pyrcc5 res.qrc -o res_rc.py
|
||||
- import res_rc
|
||||
- 此时可以通过QPixmap(":/images/head.jpg")来加载
|
||||
3. 通过rcc命令转成为二进制文件res.rcc
|
||||
- 转换命令tools/rcc.exe -binary res2.qrc -o res.rcc
|
||||
- 这里把资源前缀修改下(/myfile),见res2.qrc文件
|
||||
- 通过QResource.registerResource("res.rcc")注册
|
||||
- 此时可以通过QPixmap(":/myfile/images/head.jpg")来加载
|
||||
4. 通过xpm数组加载
|
||||
- 通过工具tools/Image2XPM.exe来转换
|
||||
- 这里把转换的xpm数组直接放到py文件中当做一个变量
|
||||
- 见xpmres.py中的image_head
|
||||
- 此时可以通过QPixmap(image_head)来加载
|
||||
5. 通过QMovie加载gif图片
|
||||
|
||||
# 截图
|
||||
![截图](ScreenShot/1.gif)
|
|
@ -1,471 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Resource object code
|
||||
#
|
||||
# Created by: The Resource Compiler for PyQt5 (Qt v5.9.3)
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
|
||||
from PyQt5 import QtCore
|
||||
|
||||
qt_resource_data = b"\
|
||||
\x00\x00\x19\xf0\
|
||||
\xff\
|
||||
\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x78\x00\
|
||||
\x78\x00\x00\xff\xe1\x00\x3a\x45\x78\x69\x66\x00\x00\x4d\x4d\x00\
|
||||
\x2a\x00\x00\x00\x08\x00\x03\x51\x10\x00\x01\x00\x00\x00\x01\x01\
|
||||
\x00\x00\x00\x51\x11\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x51\
|
||||
\x12\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xff\
|
||||
\xdb\x00\x43\x00\x02\x01\x01\x02\x01\x01\x02\x02\x02\x02\x02\x02\
|
||||
\x02\x02\x03\x05\x03\x03\x03\x03\x03\x06\x04\x04\x03\x05\x07\x06\
|
||||
\x07\x07\x07\x06\x07\x07\x08\x09\x0b\x09\x08\x08\x0a\x08\x07\x07\
|
||||
\x0a\x0d\x0a\x0a\x0b\x0c\x0c\x0c\x0c\x07\x09\x0e\x0f\x0d\x0c\x0e\
|
||||
\x0b\x0c\x0c\x0c\xff\xdb\x00\x43\x01\x02\x02\x02\x03\x03\x03\x06\
|
||||
\x03\x03\x06\x0c\x08\x07\x08\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\
|
||||
\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\
|
||||
\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\
|
||||
\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\xff\xc0\x00\x11\x08\x00\x78\
|
||||
\x00\x78\x03\x01\x22\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1f\
|
||||
\x00\x00\x01\x05\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\
|
||||
\x00\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\xff\xc4\x00\
|
||||
\xb5\x10\x00\x02\x01\x03\x03\x02\x04\x03\x05\x05\x04\x04\x00\x00\
|
||||
\x01\x7d\x01\x02\x03\x00\x04\x11\x05\x12\x21\x31\x41\x06\x13\x51\
|
||||
\x61\x07\x22\x71\x14\x32\x81\x91\xa1\x08\x23\x42\xb1\xc1\x15\x52\
|
||||
\xd1\xf0\x24\x33\x62\x72\x82\x09\x0a\x16\x17\x18\x19\x1a\x25\x26\
|
||||
\x27\x28\x29\x2a\x34\x35\x36\x37\x38\x39\x3a\x43\x44\x45\x46\x47\
|
||||
\x48\x49\x4a\x53\x54\x55\x56\x57\x58\x59\x5a\x63\x64\x65\x66\x67\
|
||||
\x68\x69\x6a\x73\x74\x75\x76\x77\x78\x79\x7a\x83\x84\x85\x86\x87\
|
||||
\x88\x89\x8a\x92\x93\x94\x95\x96\x97\x98\x99\x9a\xa2\xa3\xa4\xa5\
|
||||
\xa6\xa7\xa8\xa9\xaa\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xc2\xc3\
|
||||
\xc4\xc5\xc6\xc7\xc8\xc9\xca\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\
|
||||
\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xf1\xf2\xf3\xf4\xf5\xf6\
|
||||
\xf7\xf8\xf9\xfa\xff\xc4\x00\x1f\x01\x00\x03\x01\x01\x01\x01\x01\
|
||||
\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\
|
||||
\x07\x08\x09\x0a\x0b\xff\xc4\x00\xb5\x11\x00\x02\x01\x02\x04\x04\
|
||||
\x03\x04\x07\x05\x04\x04\x00\x01\x02\x77\x00\x01\x02\x03\x11\x04\
|
||||
\x05\x21\x31\x06\x12\x41\x51\x07\x61\x71\x13\x22\x32\x81\x08\x14\
|
||||
\x42\x91\xa1\xb1\xc1\x09\x23\x33\x52\xf0\x15\x62\x72\xd1\x0a\x16\
|
||||
\x24\x34\xe1\x25\xf1\x17\x18\x19\x1a\x26\x27\x28\x29\x2a\x35\x36\
|
||||
\x37\x38\x39\x3a\x43\x44\x45\x46\x47\x48\x49\x4a\x53\x54\x55\x56\
|
||||
\x57\x58\x59\x5a\x63\x64\x65\x66\x67\x68\x69\x6a\x73\x74\x75\x76\
|
||||
\x77\x78\x79\x7a\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x92\x93\x94\
|
||||
\x95\x96\x97\x98\x99\x9a\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xb2\
|
||||
\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\
|
||||
\xca\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xe2\xe3\xe4\xe5\xe6\xe7\
|
||||
\xe8\xe9\xea\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xff\xda\x00\x0c\
|
||||
\x03\x01\x00\x02\x11\x03\x11\x00\x3f\x00\xfd\xfc\xa2\xbc\x87\xf6\
|
||||
\xf5\xf8\xc3\xe2\xef\x80\x1f\xb1\xff\x00\x8f\x3c\x65\xe0\x5d\x36\
|
||||
\xcf\x53\xf1\x3f\x87\xb4\xef\xb5\xda\xa5\xdd\xb4\xb7\x50\x5b\xa0\
|
||||
\x74\x13\x5c\xc9\x0c\x4c\xb2\x4c\xb0\x42\x64\x98\xc6\x8c\x19\xc4\
|
||||
\x5b\x41\x04\x8a\xf0\x6f\x1f\x7f\xc1\x4c\xbe\x20\x7e\xc7\xdf\x04\
|
||||
\x34\xef\x88\x9f\x1a\x3e\x1e\x68\x3e\x22\xf8\x67\x34\x30\xdd\x5c\
|
||||
\xf8\xf7\xe1\xae\xb0\x6f\xb4\xf8\x2d\xa7\x09\xe4\x5d\x49\x63\x74\
|
||||
\xb1\xcf\x1c\x72\x17\x5e\x52\x49\x80\x2c\xa3\x71\xc8\xc8\x07\xda\
|
||||
\xf4\x57\x8e\x7e\xca\xdf\xf0\x50\x4f\x82\xff\x00\xb6\xbf\x83\xe1\
|
||||
\xd6\xbe\x18\xfc\x47\xf0\xb7\x8a\xad\xe4\x00\xbd\xbd\xbd\xea\xa5\
|
||||
\xed\xa9\x3f\xc3\x2d\xbb\xe2\x58\xdb\xd9\x94\x67\xb6\x6b\xd8\xe8\
|
||||
\x00\xa2\xbe\x49\xff\x00\x82\x80\x7f\xc1\x6e\xff\x00\x67\x5f\xf8\
|
||||
\x26\xfc\x37\x16\x7e\x3c\xf1\xc5\xad\xf7\x8a\xa1\x52\x57\xc3\x1a\
|
||||
\x16\xdd\x43\x56\x27\x9e\x1e\x35\x60\xb0\xfd\x66\x64\xf6\xcd\x7c\
|
||||
\x51\xf1\x37\xfe\x0f\x47\xfd\x9f\x7c\x3a\x92\x7f\xc2\x2b\xf0\xff\
|
||||
\x00\xe2\x47\x89\xda\x34\x8d\x81\xb8\x5b\x6d\x35\x19\x9b\xef\x28\
|
||||
\xcc\x8e\xdf\x2f\xae\xdc\x1e\xd4\x01\xfb\x1b\x45\x7f\x3b\x7f\x19\
|
||||
\xff\x00\xe0\xf7\x3f\x19\x5d\xeb\x93\x2f\xc3\xef\x82\xde\x18\xd3\
|
||||
\xb4\xd5\x38\x8a\x4d\x7b\x52\x9e\xf6\x77\x1e\xac\xb0\xf9\x2a\xa7\
|
||||
\xd8\x16\xfa\xd7\x07\xa3\xff\x00\xc1\xec\x3f\x1f\x6d\x2e\xc3\x5e\
|
||||
\xfc\x2e\xf8\x4b\x79\x06\x79\x48\xe3\xbf\x85\xb1\xec\xdf\x68\x61\
|
||||
\xfa\x50\x07\xf4\xc1\x58\x3f\x14\x7c\x7f\x67\xf0\xab\xe1\xbe\xbd\
|
||||
\xe2\x6b\xf0\xcd\x67\xa0\xd8\x4d\x7f\x2a\xa9\xf9\xa4\x11\xa1\x6d\
|
||||
\xa3\xfd\xa6\xc6\x07\xb9\x15\xf8\x63\xf0\x37\xfe\x0f\x74\xd3\xef\
|
||||
\xee\xa3\x87\xe2\x27\xc0\xd9\xac\xe3\x66\x02\x4b\x9d\x03\x5f\x12\
|
||||
\x32\x8e\xe4\x45\x3c\x4a\x0f\xd0\xca\x2b\xf4\x53\xe1\xc7\xfc\x15\
|
||||
\x07\xe0\xbf\xfc\x15\x1b\xe0\x8f\x86\xed\x7e\x18\xf8\x9a\x3b\xfb\
|
||||
\x8f\x11\x78\x97\x4a\xb4\xd5\x34\x0b\xf4\xfb\x26\xaf\x61\x6e\x97\
|
||||
\x2b\x73\x2f\x9b\x6e\xc7\x26\x36\x8e\xdd\xd7\xcc\x42\xf1\x90\xd8\
|
||||
\x0c\x7a\x50\x07\x5d\xf0\x87\xf6\xd1\xf1\x27\xc2\xcf\xda\x83\x41\
|
||||
\xf8\x33\xf1\xc3\xfb\x3a\xc7\xc4\x5f\x11\x34\x81\xae\xf8\x27\x5c\
|
||||
\xb6\x87\xec\xd6\x3a\xbc\xca\xa1\xaf\xb4\x56\x19\x21\x6e\xed\x09\
|
||||
\x0c\x87\x3f\xbe\x85\x95\xb8\x75\x60\x7e\xaa\xaf\x8b\x3f\xe0\xe0\
|
||||
\x0f\xd9\xbe\xf3\xf6\x82\xff\x00\x82\x63\xf8\xea\xff\x00\x41\x4b\
|
||||
\x98\xfc\x69\xf0\xc7\xc9\xf1\xdf\x86\xef\x2c\xdc\xc5\x79\x65\x75\
|
||||
\xa7\x38\x9d\xde\x09\x17\xe6\x49\x0c\x02\x65\x05\x79\xc9\x15\xc3\
|
||||
\x7f\xc1\xbd\xff\x00\xf0\x59\xbb\x5f\xf8\x2a\x7f\xec\xfb\x7d\xa3\
|
||||
\x78\x9a\xea\xc9\x7e\x2d\x7c\x3d\x58\xa0\xd6\x96\x30\x21\xfe\xdc\
|
||||
\xb5\x60\x04\x5a\x94\x71\x7f\x06\xe3\x94\x95\x57\x2a\x92\x0c\x8c\
|
||||
\x2c\x88\x28\x03\xf4\x32\x8a\x28\xa0\x02\x8a\x28\xa0\x06\x5c\x5b\
|
||||
\xc7\x79\x6f\x24\x33\x46\xb2\x45\x2a\x94\x74\x61\x95\x75\x3c\x10\
|
||||
\x47\xa1\xaf\x92\x7f\xe0\x99\x1f\x0f\x74\x2f\x8c\x5f\xf0\x4b\xcd\
|
||||
\x33\xe1\xbf\x8b\xf4\xcb\x4d\x7f\x41\xd3\x64\xd7\x7c\x0d\xaa\x69\
|
||||
\x97\xa9\xe6\x45\x2d\xb5\x9e\xa9\x79\x64\x20\x60\x7b\x08\x62\x40\
|
||||
\x31\xd3\x00\x8c\x60\x57\xd7\x35\xf2\x7f\xc0\x2b\xc9\x3f\x63\xcf\
|
||||
\xdb\x87\xc7\x9f\x0c\xf5\x80\x6d\xfc\x23\xf1\xa3\x55\xb8\xf1\xd7\
|
||||
\x81\x6f\xdb\x88\x4e\xa5\x24\x6a\x75\x7d\x24\xb7\x41\x2f\x98\x9f\
|
||||
\x6c\x8d\x7f\x8d\x27\x9f\x19\xf2\x9a\x80\x3f\x9f\xcf\xf8\x2c\xe7\
|
||||
\xfc\x10\x8b\xe2\x67\xfc\x11\xe7\xe2\x95\xd7\xc5\x4f\x84\x7a\x86\
|
||||
\xbd\xa9\x7c\x20\x6b\x8f\x36\xcf\x59\xb3\x99\x86\xa1\xe1\x62\xef\
|
||||
\x81\x6d\x78\x57\xac\x7b\x88\x55\x9b\xee\xb8\x20\x30\x0d\xc1\xf2\
|
||||
\x0f\x08\x7f\xc1\xc3\xdf\xb4\xce\x91\xfb\x3d\x6b\x1f\x0e\xb5\x2f\
|
||||
\x88\xfe\x20\xbc\xd1\xef\x97\x6d\xb4\xb6\xaf\x1d\x9d\xf4\x00\xae\
|
||||
\xd6\x8b\xed\x4a\xbe\x6a\xc2\x7a\x94\x8c\xa9\x27\x20\x32\x82\x6b\
|
||||
\xee\x6f\xf8\x3b\x97\xfe\x0b\x01\x75\xe3\x7f\x88\xb2\x7e\xcb\xfe\
|
||||
\x03\xd4\xb6\x68\x3e\x1d\x68\xee\x7c\x6d\x73\x03\x7f\xc7\xf5\xef\
|
||||
\x0f\x15\x96\x7f\xbb\x08\xda\xee\x3f\xe7\xa1\x00\xf2\x95\xf8\x5f\
|
||||
\x40\x16\x35\x6d\x5a\xe7\x5d\xd4\xa7\xbc\xbc\x9a\x5b\x8b\xab\xa9\
|
||||
\x1a\x59\x65\x91\x8b\x34\x8e\xc7\x25\x89\x3c\x92\x7d\x4d\x57\xa2\
|
||||
\x8a\x00\x28\xa2\x8a\x00\x2b\xf4\x47\xfe\x0d\x7e\xf8\xdd\xa4\x7c\
|
||||
\x2d\xff\x00\x82\xbe\xfc\x35\xb7\xf1\x46\xa8\x2c\xf4\x8d\x59\x2f\
|
||||
\xb4\xeb\x2f\xb4\x49\x88\x63\xbe\x9a\xd6\x44\x83\xaf\x00\xb3\x31\
|
||||
\x41\xd0\x65\xc7\xb5\x7e\x77\x55\xef\x0d\x78\x8e\xf7\xc1\xfe\x22\
|
||||
\xb0\xd5\xb4\xdb\x89\x2d\x35\x0d\x2e\xe2\x3b\xbb\x59\xe3\x38\x68\
|
||||
\x65\x46\x0c\xac\x3d\xc3\x00\x68\x03\xfb\xe1\xd5\x34\xdb\x1f\x18\
|
||||
\x78\x72\xe2\xce\xe1\x61\xbd\xd3\x75\x4b\x66\x86\x55\xc8\x68\xe7\
|
||||
\x8a\x45\x20\x8f\x42\xac\xa7\xf1\x06\xbf\x8c\x4f\xd9\xe7\xf6\x8f\
|
||||
\xf1\x37\xfc\x11\x8f\xfe\x0a\xc7\x79\xe2\x2d\x0d\x6e\x1b\xfe\x15\
|
||||
\xaf\x8b\x2f\xf4\x4d\x4f\x4f\x0f\xb4\x6a\xda\x62\xdc\x3c\x33\xdb\
|
||||
\xb7\x6f\x9e\x21\x95\x27\x21\x5d\x51\xba\xa8\xaf\x70\xfd\x85\x3f\
|
||||
\xe0\xe5\xef\x8f\x5f\xb2\xcc\x27\x45\xd4\xf5\xcb\x7d\x5f\x43\x68\
|
||||
\xed\x2d\x2d\x5e\xea\xd4\xdc\x7f\x64\xda\xc1\x34\x92\x0b\x78\x60\
|
||||
\xde\x23\x58\xd9\x65\x74\x24\x28\x90\x05\x8f\x0d\x84\xda\x7c\x5f\
|
||||
\xfe\x0a\x91\xf1\xf3\xc0\x9f\xb7\x4f\xc6\xe3\xf1\x5f\xc2\xf7\xba\
|
||||
\x7e\x9f\xe2\x2f\x14\x41\x68\x3c\x41\x65\x24\x0b\x61\xe6\x5e\x6c\
|
||||
\x21\xa6\x75\xc0\x8f\xcc\x2a\x14\x4b\x24\x78\x8d\x99\x77\xe1\x0c\
|
||||
\x8c\x8a\x01\xfd\x8e\x7c\x1e\xf8\xb5\xa0\x7c\x7a\xf8\x53\xe1\xcf\
|
||||
\x1b\x78\x57\x50\x87\x56\xf0\xdf\x8a\xf4\xe8\x35\x5d\x36\xee\x23\
|
||||
\x95\x9e\x09\x90\x3a\x37\xb1\xc3\x0c\x83\xc8\x39\x07\x91\x5d\x25\
|
||||
\x7e\x1b\xff\x00\xc1\xa6\xdf\xf0\x54\x4d\x23\x48\xf8\x67\xa4\x7e\
|
||||
\xcb\x7e\x32\x76\xd2\xf5\xfb\x67\xbc\xbe\xf0\xb4\xb7\x53\xb3\x7d\
|
||||
\xb4\x3b\xb5\xc4\x96\xca\x49\xda\x32\xa5\xe4\x8c\x2e\x01\x0b\x20\
|
||||
\xe4\xed\x2d\xfb\x91\x40\x05\x14\x51\x40\x05\x7c\xc7\xff\x00\x05\
|
||||
\x87\xf8\xe7\xe0\xcf\xd9\x9b\xfe\x09\xe9\xf1\x03\xc7\xfe\x34\xd3\
|
||||
\xe1\xd4\xa1\xf0\xa5\xb4\x77\xda\x24\x26\x53\x0c\xeb\xac\x07\x0b\
|
||||
\x60\xf0\x4a\xa4\x3c\x72\xac\xec\x84\x3a\x10\xc1\x43\x76\xc8\x3f\
|
||||
\x4e\x57\xe1\xbf\xfc\x1e\xbb\xfb\x55\x2f\x86\xbe\x03\xfc\x2c\xf8\
|
||||
\x37\x6b\x20\x37\x1e\x28\xd4\xa5\xf1\x2e\xa0\x81\xb0\x52\x1b\x51\
|
||||
\xe5\x41\x9f\x50\xcf\x2c\xbf\x8c\x7e\xd4\x01\xfc\xf0\xf8\xfb\xc7\
|
||||
\x5a\xb7\xc5\x0f\x1c\x6b\x1e\x24\xd7\xaf\xae\x35\x4d\x73\x5e\xbd\
|
||||
\x9b\x50\xbf\xbc\x9d\xb7\x49\x73\x3c\xae\x5e\x47\x63\xea\x59\x89\
|
||||
\xfc\x6b\x26\x8a\xfd\x0c\xff\x00\x82\x00\x7f\xc1\x1c\x97\xfe\x0a\
|
||||
\x5f\xf1\xa7\x56\xf1\x67\x8e\x05\xc5\x8f\xc1\x5f\x86\x2a\x2f\xbc\
|
||||
\x45\x32\x13\x1b\xeb\x12\xaa\x99\x12\xc2\x37\xfe\x1d\xca\xa5\xa4\
|
||||
\x61\xca\xa0\xc0\xc3\x32\x9a\x00\xfc\xf3\xa2\xba\x2f\x8b\xbe\x28\
|
||||
\xb7\xf1\xb7\xc5\x4f\x11\xea\xf6\x76\x96\xba\x7d\x96\xa5\xa9\x5c\
|
||||
\x5c\x5b\x5a\xdb\x46\x23\x86\xda\x26\x91\x8a\x46\x8a\x38\x0a\xab\
|
||||
\x85\x03\xd0\x57\x3b\x40\x16\x34\xbd\x22\xef\x5b\xba\x30\x59\xda\
|
||||
\xdc\x5e\x4c\xb1\xbc\xc6\x38\x63\x32\x30\x44\x42\xee\xd8\x1c\xed\
|
||||
\x54\x56\x62\x7a\x00\xa4\x9e\x05\x57\xaf\xbb\xbf\xe0\xda\xbf\x87\
|
||||
\x31\xfc\x51\xff\x00\x82\xc8\xfc\x2a\xd2\xee\x6c\xe1\xbe\xd3\x5e\
|
||||
\x3d\x55\xb5\x0b\x79\xa3\xf3\x22\x9e\xd8\xe9\x97\x4b\x2a\x38\xe8\
|
||||
\x55\x95\x8a\x9c\xff\x00\x7a\xb8\x6f\xf8\x2d\x1f\xfc\x13\xff\x00\
|
||||
\x4b\xff\x00\x82\x79\xfe\xdc\x7e\x28\xf0\x9f\x85\x75\x9b\x3f\x10\
|
||||
\x78\x1a\xf2\xe5\xee\xf4\x3b\xab\x69\xbc\xef\xb1\xc6\xcc\x77\x59\
|
||||
\x4c\xc3\x8f\x3a\x06\xca\x11\xd4\x80\xad\xc6\x71\x40\x1f\x25\x51\
|
||||
\x45\x14\x00\x51\x45\x14\x01\xd5\x7c\x1d\xf8\xc7\xe2\x0f\x81\xff\
|
||||
\x00\x14\x3c\x37\xe2\xef\x0d\xea\x37\x1a\x7e\xbd\xe1\x3d\x46\x0d\
|
||||
\x53\x4c\xb9\x47\x39\xb6\x9e\x19\x04\x88\x47\xb6\xe0\x32\x3b\x8c\
|
||||
\x8e\xf5\xfd\xc1\x7e\xc5\x5f\xb4\xde\x97\xfb\x66\x7e\xc9\xbf\x0f\
|
||||
\xbe\x29\x68\xfb\x56\xcb\xc6\xda\x25\xbe\xa4\x62\x5f\xf9\x76\x99\
|
||||
\x97\x13\x43\xf5\x8e\x51\x22\x1f\x74\xaf\xe1\x51\x4e\x18\x57\xf5\
|
||||
\x01\xff\x00\x06\x71\x7e\xd2\x8f\xf1\x27\xf6\x06\xf1\x77\xc3\x9b\
|
||||
\xb9\xcc\x97\x5f\x0e\x3c\x42\x2e\x2d\x15\x9f\x25\x2c\xb5\x08\xfc\
|
||||
\xe5\x00\x7a\x0b\x88\xee\xbf\x3a\x00\xfd\x7b\xa2\x8a\x28\x00\xaf\
|
||||
\xe4\x5b\xfe\x0e\x87\xfd\xab\x47\xed\x37\xff\x00\x05\x65\xf1\xa5\
|
||||
\x9d\xac\x8d\x26\x97\xf0\xee\x38\xbc\x2f\x6a\x77\xee\x52\x61\x5d\
|
||||
\xd3\x15\xf6\xf3\x9e\x4a\xfe\xb2\xfe\x28\xf8\xc5\x7e\x1d\xfc\x33\
|
||||
\xf1\x17\x88\x1b\x69\x5d\x0f\x4c\xb9\xbf\x20\xf4\x3e\x54\x4c\xf8\
|
||||
\xff\x00\xc7\x6b\xf8\x79\xfd\xbb\x3c\x49\xff\x00\x09\x6f\xed\x8d\
|
||||
\xf1\x2b\x50\xf3\x1a\x66\xb9\xf1\x05\xdb\x33\xb1\xcb\x3b\x07\x20\
|
||||
\x93\xf5\x20\x9a\x00\xf3\x5f\x0c\x78\x6e\xfb\xc6\x5e\x24\xd3\xf4\
|
||||
\x8d\x36\xde\x5b\xcd\x47\x54\xb9\x8e\xd2\xd6\x08\xd7\x73\xcd\x2c\
|
||||
\x8c\x15\x14\x0e\xe4\xb1\x03\xf1\xaf\xeb\xeb\xf6\x64\xff\x00\x82\
|
||||
\x5b\x78\x4f\xf6\x15\xff\x00\x82\x5a\x58\xf8\x5e\xdf\x4f\x92\xf3\
|
||||
\xc7\x9e\x0b\xf0\x4e\xad\x79\x73\x3c\x37\xb3\x2a\x4b\xac\x5d\xd8\
|
||||
\xcb\xf6\x99\x0c\x48\xe2\x39\x1b\x27\xca\x47\x75\x2c\x12\x35\x00\
|
||||
\x8a\xfe\x57\x3f\x61\x4f\x88\xf6\x1f\x02\x3e\x3f\xe9\x7f\x11\xb5\
|
||||
\x38\x74\x8b\x9b\x7f\x01\x93\xaa\xdb\xc1\xa9\x43\x24\xf0\xdd\x5d\
|
||||
\xaf\x16\xf1\x88\xa3\x64\x69\x1b\xcc\x2a\xc1\x77\xa2\xfc\x84\xb3\
|
||||
\x00\x39\xf7\xfb\x0f\xf8\x38\x6b\xf6\x94\xf0\xb7\xc4\x4d\x67\x5e\
|
||||
\xf0\xe6\xbd\xe1\x3f\x0f\x7f\x6e\x42\xf6\x77\x50\x59\x78\x47\x4d\
|
||||
\x8d\x2e\x2d\x98\x9c\xc7\x21\xf2\x77\x37\xd4\xb6\x73\xde\x80\x3e\
|
||||
\x1e\xb9\x84\xdb\xdc\x49\x19\xeb\x1b\x15\x3f\x85\x32\xa6\xd4\x2e\
|
||||
\xda\xfe\xfe\x69\xdf\x6e\xf9\xa4\x69\x1b\x68\xc0\xc9\x39\xe0\x54\
|
||||
\x34\x01\xfb\x29\xff\x00\x06\x5e\xfe\xcf\x32\x78\xdb\xf6\xec\xf1\
|
||||
\xe7\xc4\x8b\x88\x5b\xfb\x3b\xe1\xff\x00\x85\xda\xd5\x27\x23\xe5\
|
||||
\x4b\xab\xd9\x02\x28\xcf\x6f\xdc\xc5\x71\x5f\xae\xdf\xf0\x56\xe9\
|
||||
\xff\x00\x66\x7f\xdb\x6b\xf6\x67\xd4\xbe\x15\xfc\x46\xd7\x22\x5b\
|
||||
\x5b\xe9\xc7\xf6\x57\x88\xac\x6d\xc3\x43\xe1\xdb\xf0\x76\xa5\xd4\
|
||||
\x77\x2e\x56\x16\x08\x49\x12\x22\x39\xca\x6f\x07\x1d\x47\x85\x7f\
|
||||
\xc1\x0d\x3f\xe0\x98\x7e\x3c\xfd\x9d\xbf\xe0\x91\xbe\x1d\xf0\xf6\
|
||||
\x9c\xf6\x3e\x11\xf1\x57\xc7\x8b\xa3\xe2\x4f\x18\x6b\x57\x96\xcb\
|
||||
\x71\x75\xa1\x69\x4f\x12\x8b\x6b\x78\x2d\xdf\xe5\x7b\x86\x80\x29\
|
||||
\x1e\x68\x29\x13\x4f\x29\x65\x72\xa1\x1b\xf0\x03\xfe\x0a\x81\xfb\
|
||||
\x4c\x69\xbf\x1b\xff\x00\x6b\x1f\x19\x47\xe1\x3f\xed\x01\xe1\x3d\
|
||||
\x1f\x50\x9b\x48\xd2\xee\x75\x0b\xd9\x2f\xaf\xf5\x0b\x68\x1c\xc6\
|
||||
\x2e\x26\x9e\x42\x58\xb4\xc5\x4c\x85\x53\x6a\x28\x65\x55\x55\x55\
|
||||
\x02\x80\x3c\xbb\xf6\xab\xfd\x9b\x75\x4f\xd9\x3b\xe3\x96\xb9\xe0\
|
||||
\x9d\x53\x54\xf0\xff\x00\x88\x1b\x49\x9c\xad\xb6\xad\xa1\x6a\x31\
|
||||
\x6a\x1a\x6e\xab\x01\xe6\x39\xe1\x9a\x36\x2a\x55\x97\x07\x07\x0c\
|
||||
\xa7\x20\x80\x41\x15\xe7\x55\x7d\x3c\x43\x33\x68\xc3\x4f\x99\x63\
|
||||
\x9a\xd5\x18\xbc\x41\x94\x6f\x85\x8f\x52\xad\xd4\x03\x8e\x47\x43\
|
||||
\xe9\x9e\x6b\xd1\xfe\x32\xfe\xc5\x3f\x12\xfe\x05\xfc\x27\xf0\x4f\
|
||||
\x8f\xb5\xff\x00\x09\xea\xf6\xbe\x07\xf8\x89\xa7\xae\xa5\xa0\x6b\
|
||||
\x62\x02\xf6\x77\x88\x49\x05\x0c\x83\x84\x91\x4a\x9c\xa3\x60\x91\
|
||||
\x86\x00\xa9\x06\x80\x3c\xa6\x8a\x28\xa0\x02\xbf\x6c\xff\x00\xe0\
|
||||
\xcb\x5f\x89\xb3\x69\x3f\xb6\x5f\xc4\x0f\x0c\x33\xb0\xb7\xd7\xbc\
|
||||
\x12\x6e\x0a\xe7\xe5\x69\x2d\x2f\xa3\xd8\x71\xea\x12\xe6\x41\xf8\
|
||||
\xd7\xe2\x65\x7e\xb7\x7f\xc1\xa0\x1e\x26\xb5\xd0\x7f\xe0\xa5\x9a\
|
||||
\x7c\x12\x17\xfb\x56\xb5\xa1\x6b\x5a\x6c\x63\xf8\x71\xe5\x5a\xdc\
|
||||
\x8f\xfd\x27\x7f\xce\x80\x3f\xa8\xea\x28\xa2\x80\x3c\xbf\xf6\xcf\
|
||||
\x2f\x27\xec\xc3\xe2\xeb\x78\xdb\x6b\x5f\xdb\x25\x89\x27\xd2\x79\
|
||||
\xa3\x84\xfe\x8e\x6b\xf8\x9c\xfd\xb2\x34\x1b\x8f\x0c\x7e\xd6\xff\
|
||||
\x00\x14\x34\xeb\xa4\x68\xe7\xb1\xf1\x66\xab\x6e\xea\x47\x2a\x52\
|
||||
\xf2\x55\x23\xf4\xaf\xee\x27\xe3\x6f\x80\x24\xf8\xa3\xf0\xab\x5a\
|
||||
\xd0\xa1\x99\x60\xb8\xbe\x80\x79\x12\x30\xf9\x52\x54\x61\x22\x13\
|
||||
\xed\xb9\x57\x3e\xd5\xfc\x93\xff\x00\xc1\xc5\xbf\xb2\x56\xa5\xfb\
|
||||
\x3e\xff\x00\xc1\x4f\xfe\x32\x6a\x1f\x63\x92\x2d\x1f\x5c\xf1\x02\
|
||||
\x6b\xd0\x36\xcc\x2f\x97\xa9\xc6\xd7\x4a\x47\xb7\x9c\xb7\x49\xec\
|
||||
\x63\x22\x80\x3e\x78\x87\xf6\x5b\xd6\x13\xfe\x09\xd9\x2f\xc6\x2f\
|
||||
\x29\xbf\xb1\x24\xf1\xbf\xfc\x23\x3e\x66\x38\xf3\x56\xd1\x66\xc7\
|
||||
\xe2\x1b\xff\x00\x1d\x35\x3f\xed\x57\xe0\xef\x80\xfe\x1f\xfd\x9e\
|
||||
\x7e\x06\x6a\x1f\x0a\x7c\x4d\xe2\x0d\x63\xe2\x06\xb1\xa1\x5c\xc9\
|
||||
\xf1\x27\x4f\xd4\x22\x65\x83\x48\xd4\x16\x65\x11\x2c\x04\xc6\xa0\
|
||||
\xab\x29\x93\x85\x67\x1b\x52\x32\x48\x66\x22\xbf\x63\x3f\xe0\xdd\
|
||||
\xff\x00\xd9\xb3\xc1\x5f\xf0\x54\x7f\xf8\x22\x57\xc6\x2f\xd9\xaf\
|
||||
\xc6\x30\xff\x00\x67\x9d\x1f\xc5\x11\xea\x76\xfa\x9d\xaa\x06\xb9\
|
||||
\xd3\xee\x2e\xad\xa3\x9a\xd6\xed\x73\xc1\x64\x78\x64\x52\x38\xdd\
|
||||
\x1e\xe5\x38\xc9\x35\xf2\xb7\x89\xff\x00\xe0\xce\x8f\xda\xc7\x4b\
|
||||
\xf8\x91\x75\xa4\xe9\xb7\x5f\x0d\x75\x5d\x0e\x36\xcc\x1a\xe9\xd7\
|
||||
\x1a\xde\x09\x97\x23\xac\x2d\x11\x99\x58\x0e\x48\xda\x47\x1c\x31\
|
||||
\xe3\x20\x1f\x9e\xfa\xbf\xec\xbb\xab\x69\x1f\x03\x5b\xc7\x53\xc7\
|
||||
\x71\x0e\x9a\xda\x55\x86\xa5\x13\x3a\x61\x66\xfb\x55\xed\xdd\xa2\
|
||||
\x80\x7b\xf3\x67\x31\xff\x00\x80\x9a\xfb\xcf\xfe\x0d\xc3\xff\x00\
|
||||
\x82\x20\x6a\x1f\xf0\x50\x5f\xda\x07\x4c\xf8\x8d\xe3\xad\x26\x64\
|
||||
\xf8\x3b\xe0\x3b\xe4\xbb\xbd\xfb\x44\x65\x62\xf1\x15\xe4\x78\x78\
|
||||
\xb4\xf4\xcf\xdf\x4c\xed\x79\x88\xe1\x50\x04\xce\xe9\x3e\x5f\xde\
|
||||
\xef\x86\x9f\xf0\x44\x4f\x82\x5a\x7f\xec\x65\xf0\xd3\xe1\x0f\x8e\
|
||||
\x3c\x37\x6b\xe3\x0b\x3f\x02\xe9\xba\x75\xad\xe5\xcb\x49\x2d\xb0\
|
||||
\xd6\xe6\xb4\x69\xe6\xcc\xc1\x18\x16\x84\xdc\x5d\x5c\xc8\x22\x62\
|
||||
\x47\xef\x30\x73\x8a\xfa\xbb\xe1\xf7\xc3\xcd\x07\xe1\x3f\x83\x34\
|
||||
\xff\x00\x0e\xf8\x67\x47\xd3\x7c\x3f\xa0\xe9\x30\x88\x2c\xb4\xfb\
|
||||
\x0b\x75\xb7\xb7\xb6\x41\xfc\x28\x8a\x00\x1d\xcf\xb9\x24\xf5\x34\
|
||||
\x01\x37\x8a\x74\x99\xb5\x5f\x08\xea\x56\x36\x6e\xb6\xd3\xdc\xd9\
|
||||
\xcb\x04\x0e\x38\x11\x33\x21\x55\x3f\x81\x23\xf2\xaf\xe1\x87\xe1\
|
||||
\x77\x8a\xee\xff\x00\x64\x0f\xda\xfb\xc3\xfa\xdf\x88\x34\x1b\x5d\
|
||||
\x77\x50\xf8\x65\xe2\xe8\x2e\xf5\x3d\x16\xf7\xfd\x4d\xec\xb6\x37\
|
||||
\x81\xa5\xb6\x90\x90\x78\x66\x89\x94\x92\x0f\x5e\x87\xa5\x7f\x76\
|
||||
\x15\xf8\xef\xff\x00\x05\x75\xff\x00\x83\x4e\xfc\x3d\xfb\x73\xfc\
|
||||
\x7b\xd6\xbe\x2a\x7c\x29\xf1\xb5\xa7\xc3\xbf\x15\x78\xaa\xe0\xde\
|
||||
\x6b\xba\x4e\xa5\x62\xd7\x1a\x55\xfd\xd3\x7f\xac\xb9\x8d\xa3\x22\
|
||||
\x48\x1d\xcf\xcc\xe3\x6b\xab\x31\x66\x1b\x49\x39\x00\xfe\x7b\x3f\
|
||||
\x6f\xff\x00\xda\x8a\xc7\xf6\xd4\xfd\xb2\xbe\x21\x7c\x54\xd3\x3c\
|
||||
\x2b\x67\xe0\x8b\x1f\x1b\x6a\x87\x50\x87\x45\xb6\x90\x4a\x96\x43\
|
||||
\x62\x21\xcb\xaa\x20\x67\x62\xa5\xd9\x82\x8c\xb3\xb1\xc5\x7e\xec\
|
||||
\xfc\x7b\xf8\x13\xac\x37\xfc\x19\x93\xe1\x7b\x3d\x69\x6e\xad\x75\
|
||||
\x6d\x07\xc3\x9a\x77\x89\xa1\x07\x2a\xe9\x0b\x6a\xa2\xe2\x1c\xf7\
|
||||
\xc1\xb7\x9d\x7e\x99\xaf\x31\xf8\x2b\xff\x00\x06\xa1\xfc\x25\xfd\
|
||||
\x91\x3e\x2a\x78\x27\x50\xfd\xa6\x7e\x3a\x59\xeb\x50\xea\xd7\x8e\
|
||||
\xd6\xbe\x15\xd0\xf4\x99\x6d\xe1\xd5\x3e\xce\xbe\x6c\xa6\x6b\x92\
|
||||
\xcd\x22\xda\x46\x83\x74\xd2\x18\xe2\x54\x53\xcc\x89\x90\x4f\xe9\
|
||||
\x77\xfc\x16\x2f\xc7\x3e\x0c\xf8\xb1\xff\x00\x04\x3e\xf8\xf1\x75\
|
||||
\xe0\xbd\x57\x43\xd6\x3c\x33\x67\xe1\x79\xac\xe0\x9b\x4a\x95\x24\
|
||||
\xb3\x88\xdb\xcb\x1a\x98\x90\xa7\xcb\x84\x2a\x17\x03\x81\x8c\x76\
|
||||
\xa0\x0f\xe3\xa6\xea\xe9\xef\x27\x69\x24\x21\xa4\x73\x96\x20\x01\
|
||||
\x93\xf8\x54\x74\x51\x40\x05\x7e\xc4\x7f\xc1\xaa\xbf\x09\x5b\x4d\
|
||||
\xfd\xaa\xfe\x10\xf8\xf3\xec\xf2\x08\xf5\x0f\x13\x78\x97\x42\x69\
|
||||
\x73\xf2\xb3\x27\x87\xfc\xe5\x1f\x80\x2f\x5f\x8e\xf5\xfd\x49\x7f\
|
||||
\xc1\xae\xdf\xb1\x43\x78\x63\xfe\x09\xbd\xf0\xc3\xc5\x1a\xe6\x9f\
|
||||
\x2d\x8e\xb1\x63\xe3\xad\x73\xc5\x10\x09\x17\x6c\x83\x7d\x9c\x9a\
|
||||
\x56\xd3\xe9\xc6\xf3\x8f\xf6\x45\x00\x7e\xb5\x51\x45\x14\x00\x57\
|
||||
\xc7\xdf\xf0\x57\x2f\xf8\x25\x0f\x87\x7f\xe0\xa5\xdf\x06\xf5\x6b\
|
||||
\x36\xfb\x35\x8f\x8b\x7f\xb0\x6e\xb4\xbb\x1b\xb9\x23\x1b\x64\x62\
|
||||
\xc9\x3d\xb6\xf6\xea\x3c\xab\x88\x94\x83\xd9\x65\x9c\x63\xe7\x35\
|
||||
\xf6\x0d\x14\x01\xf8\x37\xff\x00\x06\x65\x49\x6f\xf0\xaf\xe2\xc7\
|
||||
\xed\x49\xf0\xd3\x56\xba\x6b\x7f\x16\xe8\xf7\x9a\x52\xc9\x61\x32\
|
||||
\xf9\x72\xb2\x59\xc9\x7b\x6b\x3b\x6c\xc9\xff\x00\x57\x2b\x22\xb7\
|
||||
\x27\x05\xd7\xd6\xbf\x79\x2b\xf9\x65\xfd\xbb\x3e\x2a\xf8\xeb\xfe\
|
||||
\x08\x8f\xff\x00\x07\x0d\xfc\x50\xf8\x9f\xe0\xdb\x1b\x7b\xff\x00\
|
||||
\x33\x56\x3e\x23\x96\xc2\xf0\xed\xb7\xd6\x74\x8d\x5c\x09\x2e\x21\
|
||||
\x2c\x06\x55\x44\xec\xc8\x24\x19\xd8\xe8\x84\x86\xc1\x07\xf6\x23\
|
||||
\xe0\xd7\xfc\x1c\x4f\xf0\x9f\xf6\xd6\xf8\x0c\x63\xf8\x23\x71\x0d\
|
||||
\xf7\xc7\x8d\x68\xc1\xa6\x68\x9f\x0f\x7c\x46\x4d\x8d\xd7\xf6\x84\
|
||||
\xec\xa9\xe6\x3b\x80\x52\x6b\x58\x01\x79\xa5\x92\x16\x27\xca\x85\
|
||||
\xb8\x56\x20\x50\x07\xd2\x3f\xb6\x4f\xed\xdf\x6b\xfb\x3a\x6b\x9a\
|
||||
\x47\x80\xfc\x1b\xe1\xfb\xaf\x89\x5f\x1b\x3c\x61\x13\x3f\x87\x7c\
|
||||
\x19\xa7\xcc\x23\x73\x10\x3b\x5a\xfe\xfa\x63\x95\xb3\xb0\x8c\x9f\
|
||||
\x9e\x79\x3a\x9f\x95\x03\xb7\x03\xc9\x3e\x14\xfe\xc4\x1f\xb5\x9f\
|
||||
\x83\x34\x8b\xdd\x62\xe3\xf6\xaa\xd3\x63\xf1\x37\x89\xb5\x3b\xad\
|
||||
\x63\x55\xd1\xe6\xf0\x34\x5a\xa6\x81\xa5\x49\x75\xb3\x75\xbd\x89\
|
||||
\x92\x74\xb9\x11\x5b\x88\xd4\x45\xba\x40\xa4\xf9\x8c\xc8\x7c\xc2\
|
||||
\x07\xb6\xfe\xc5\x9f\xb1\x56\x9b\xfb\x2a\x68\x1a\xa6\xad\xaa\x6a\
|
||||
\x52\x78\xcb\xe2\xa7\x8d\xa4\x5b\xef\x1a\x78\xce\xf6\x31\xf6\xcd\
|
||||
\x76\xeb\x1f\x71\x3f\xe7\x8d\xa4\x5f\x72\x0b\x74\xc2\x44\x80\x70\
|
||||
\x58\xb3\x37\xb7\xd0\x07\xc6\x5e\x0a\xf8\x55\xfb\x44\x7e\xc1\x1e\
|
||||
\x23\xd7\xbc\x49\x71\xe3\xad\x73\xf6\x9e\xf0\x16\xb4\xd1\xdf\xeb\
|
||||
\x5a\x6e\xa7\x04\x56\x7e\x2a\xd0\xa4\x8e\x20\x92\xc9\xa5\x47\x0a\
|
||||
\xad\xb5\xcc\x2c\x15\x58\xda\x30\x89\xc6\xcf\x91\xdd\xd8\x87\xfa\
|
||||
\x7b\xe0\x4f\xc7\xaf\x08\xfe\xd2\xff\x00\x0c\x74\xef\x18\xf8\x1f\
|
||||
\x5b\xb4\xd7\xfc\x3f\xaa\x06\xf2\xae\x20\xc8\x68\xdd\x4e\xd9\x22\
|
||||
\x95\x18\x07\x8a\x54\x60\x55\xe3\x70\x1d\x18\x10\xc0\x11\x8a\xeb\
|
||||
\xeb\xe2\xbf\xdb\x0b\xc0\x3a\x9f\xfc\x13\xc7\xe2\x86\xab\xfb\x4c\
|
||||
\x7c\x37\xb2\xba\x9f\xc1\xf7\x8e\xb3\xfc\x63\xf0\x75\x92\x6e\x8b\
|
||||
\x55\xb2\x5c\x2b\xf8\x82\xd2\x21\xc2\xea\x16\xa9\xf3\xca\x17\x1f\
|
||||
\x69\x81\x18\x37\xce\x88\xc4\x03\xec\x6d\x53\xc3\x5a\x6e\xb8\xec\
|
||||
\xd7\xda\x7d\x8d\xe3\x34\x0f\x6a\x4c\xf0\x2c\x84\xc4\xfb\x4b\xc7\
|
||||
\xc8\x3f\x23\x6d\x5c\xaf\x43\xb4\x67\xa0\xaf\x89\xff\x00\xe0\xe2\
|
||||
\x2d\x7b\x4d\xf8\x41\xff\x00\x04\x44\xf8\xe5\x1d\xad\xbd\xae\x9d\
|
||||
\x6b\x3e\x91\x6f\xa5\xdb\xdb\xc1\x12\xc5\x1a\xb5\xcd\xfd\xbc\x58\
|
||||
\x55\x50\x00\xcf\x98\xc7\x8f\x7a\xfb\x5f\xc2\xbe\x29\xd3\xbc\x73\
|
||||
\xe1\x7d\x37\x5a\xd1\xef\x2d\xf5\x2d\x27\x58\xb5\x8a\xf6\xca\xee\
|
||||
\x07\xdf\x15\xd4\x12\x20\x78\xe4\x46\xee\xac\xac\x08\x3d\xc1\xaf\
|
||||
\xc9\xef\xf8\x3b\xfb\xe3\xee\x97\x61\xff\x00\x04\xfd\xd0\x7e\x12\
|
||||
\xe9\xba\x95\xad\xe7\x8c\xfe\x20\x78\xc3\x4b\x8c\x68\x96\xf2\xac\
|
||||
\x97\xcf\x68\x9e\x7c\xa2\x4f\x24\x1d\xfb\x5a\x68\xa2\x55\x38\xc1\
|
||||
\x6e\x07\x34\x01\xfc\xba\x30\xda\x68\x55\xdd\x9f\x61\x9a\xbb\xe2\
|
||||
\x4d\x3a\x4d\x1f\x5a\xb8\xb3\x9a\x36\x86\x7b\x57\x68\x65\x8d\xbe\
|
||||
\xf4\x6e\xa4\xab\x29\xf7\x04\x11\x56\x3c\x2f\xe0\xdb\xcf\x16\xcd\
|
||||
\x75\x15\xa7\x93\xbe\xde\x23\x21\x12\x48\x13\x79\x1d\x11\x73\xd5\
|
||||
\xce\x0e\x14\x72\x48\xc0\xe7\x02\x80\x13\xc0\xba\x1d\xd7\x89\xfc\
|
||||
\x6d\xa3\xe9\xb6\x36\xf2\x5e\x5f\x6a\x17\xb0\xdb\x5b\xdb\xa2\xee\
|
||||
\x69\xe4\x77\x0a\x88\x07\x72\xcc\x40\xfc\x6b\xfb\x98\xfd\x8b\x3e\
|
||||
\x01\xa7\xec\xb9\xfb\x26\xfc\x3d\xf8\x7e\x36\x99\xbc\x2f\xa2\x5b\
|
||||
\xda\x5d\xba\xf4\x96\xeb\x6e\xeb\x89\x3f\xe0\x53\x34\x8d\xff\x00\
|
||||
\x02\xaf\xe5\xe3\xfe\x08\x93\xff\x00\x04\xee\xf1\x17\x87\xff\x00\
|
||||
\xe0\xbe\x5f\x0d\x7e\x1b\xfc\x42\xd0\x66\xd3\x75\x2f\x87\xb7\x2d\
|
||||
\xe2\x7d\x5a\xc6\xe9\x39\x85\xed\x6c\xbe\xd7\x06\x47\x71\xe7\xb5\
|
||||
\xbf\xb5\x7f\x5a\xd4\x00\x51\x45\x14\x00\x51\x45\x14\x01\xf2\x07\
|
||||
\xfc\x14\xa3\xfe\x09\x07\xe0\xbf\xf8\x28\x4f\x8e\x3c\x27\xe3\x0b\
|
||||
\xa9\x21\xd2\xfc\x5d\xe1\xdb\x79\x74\x3b\xc9\xe5\x8b\xcd\xb7\xd6\
|
||||
\xf4\x3b\x9c\xad\xd5\x8c\xe8\x30\x72\x15\xdd\xe1\x90\x10\x63\x93\
|
||||
\x9e\x87\x8f\xcd\x8f\xf8\x20\xbf\xec\x79\xe0\x9f\xf8\x24\x07\xfc\
|
||||
\x14\x97\xe2\xc6\x87\xf1\xc3\xc4\xd3\x78\x37\xc7\x92\x33\x78\x63\
|
||||
\xc0\x57\x3a\xd5\xa7\xd8\x74\x3f\x15\xe9\x8e\xeb\x37\xda\xed\xaf\
|
||||
\xe4\x1e\x53\xdd\x48\x12\x20\x60\x0e\xac\xbf\x30\xc3\x92\x42\x7e\
|
||||
\xf3\x57\xc8\x5f\xf0\x5c\xed\x02\x1f\x19\xff\x00\xc1\x39\xfc\x4f\
|
||||
\xe1\xd9\x74\x3d\x3f\x58\xff\x00\x84\xb7\x56\xd1\xfc\x3a\x67\xbe\
|
||||
\xb1\x4b\xa8\x74\x48\xef\xb5\x1b\x7b\x59\xb5\x03\xbd\x48\x8b\xc8\
|
||||
\x86\x59\x5c\x4b\xc7\x96\x40\x6c\x8c\x66\x80\x3e\xbb\x8e\x45\x9a\
|
||||
\x35\x65\x65\x65\x61\x90\x41\xc8\x22\x9d\x5c\xef\xc2\x6b\xaf\x0c\
|
||||
\x4d\xf0\xe7\x48\x83\xc1\xb7\x9a\x4d\xf7\x86\x74\xdb\x64\xd3\xf4\
|
||||
\xf7\xd3\x2e\x52\xe2\xd6\x38\xa0\x1e\x50\x8d\x1d\x09\x5f\x93\x66\
|
||||
\xdc\x03\xc1\x5c\x57\x45\x40\x05\x56\xd6\x34\x8b\x5f\x10\x69\x17\
|
||||
\x5a\x7d\xf4\x11\xdd\x59\xdf\x42\xf6\xf3\xc3\x22\xee\x49\x63\x75\
|
||||
\x2a\xca\xc0\xf5\x04\x12\x08\xf7\xab\x35\xf9\x1f\xff\x00\x07\x3a\
|
||||
\xfe\xdf\xbe\x32\xfd\x89\x6e\x7c\x0f\xa7\xe8\xfe\x32\xf1\xff\x00\
|
||||
\x87\x34\x3f\x1e\xe8\x5a\x85\xaa\xa7\x85\xef\x21\xd3\x5e\xdb\x50\
|
||||
\x82\xea\xcc\xa4\xf3\x5d\x18\x24\x95\x63\x68\x26\x99\x36\xc6\x54\
|
||||
\xe4\x2b\x73\x82\x08\x07\x3b\xfb\x01\x2f\xc6\x4b\x5f\xda\x0a\x1f\
|
||||
\xd8\xf4\xfc\x66\xf1\x86\x9b\xe1\x3f\x84\xba\x87\x89\x74\x7d\x46\
|
||||
\x1f\x0e\xe9\xf6\x36\x7a\xd6\x99\xa1\x59\x8b\x19\x74\x3b\x96\xbd\
|
||||
\x96\x39\x64\x54\xb9\x8e\xfc\xc2\x36\xaa\x90\x6d\xf0\xad\x85\x26\
|
||||
\xbc\x0f\xe2\x64\x3f\x0b\x7f\x65\x7f\xf8\x28\x47\xc7\x1f\x10\x7c\
|
||||
\x4c\x97\xce\xf8\x95\xfb\x33\x78\x72\x3b\xaf\x87\xfa\x25\xf4\x93\
|
||||
\xea\xba\xa7\xc4\x5d\x5e\xfd\x47\xd9\x75\xdb\xbb\x89\x9e\x57\x9a\
|
||||
\x78\xbc\xeb\x45\x16\xca\x76\xc5\x82\xe8\xaa\xaa\x45\x74\x1f\xf0\
|
||||
\x4d\x6f\xf8\x28\x17\x83\x7f\x63\x3f\xd9\xdb\x51\xd0\xff\x00\x65\
|
||||
\x3f\x82\xdf\x16\xbf\x69\xef\x8f\x5e\x3f\x75\xbf\xf1\x67\x8b\xce\
|
||||
\x87\x79\x6f\xa2\x4d\x7d\x83\xb5\x5e\xf2\xe3\x33\x9b\x58\x0b\xb0\
|
||||
\x40\xe1\x0b\xfc\xce\xce\x8c\xe7\x17\xbf\x64\x5f\xf8\x37\x47\xf6\
|
||||
\x9c\xf8\xf9\xfb\x52\xf8\x93\xf6\x9a\xf8\xff\x00\xf1\x2b\x4f\xf8\
|
||||
\x77\xf1\x63\x53\x9e\x6d\x7b\x41\xb4\xd1\x4a\x5f\x5c\xe9\xda\xbe\
|
||||
\xc1\xf6\x39\x27\x2a\x4c\x11\xdb\x40\x56\x34\xf2\x11\xa5\x2f\x1a\
|
||||
\x6c\x2c\xbc\xe4\x03\xf3\xb7\xe0\x27\xfc\x11\x7f\xe2\x89\xfd\xa8\
|
||||
\xfc\x1f\xe0\xad\x6f\xc3\x70\xeb\xdf\x17\xbc\x51\x69\x1f\x89\x21\
|
||||
\xf0\x8d\xd8\x97\xca\xd0\xad\x26\x67\xf2\xaf\xf5\xc9\x02\xec\xb6\
|
||||
\xb7\x42\x04\xaf\x0e\xe6\x96\x43\xb2\x10\xa1\x9d\xb1\xfb\x19\xfb\
|
||||
\x1a\xff\x00\xc1\xa7\xbf\x0b\xff\x00\x67\x76\xf8\x5b\xe2\x6f\x12\
|
||||
\x78\xa6\xfb\xc4\x9f\x10\x3c\x17\xe2\x2b\x1f\x12\xeb\x13\x0b\x48\
|
||||
\xdb\x4b\xd4\xa4\xb7\xf3\x9c\xda\x45\x11\x0a\x52\x26\x9e\x48\x1c\
|
||||
\xbb\xef\x62\x2d\x55\x40\x50\xc6\xbe\xc9\xff\x00\x82\x61\x7c\x4f\
|
||||
\xf0\xf7\xc6\xef\x87\xfe\x2e\xf1\x35\xc7\x85\x2c\xbc\x23\xf1\x9a\
|
||||
\x2d\x72\x4d\x13\xe2\x9d\x87\x98\xd3\xdd\x5b\xeb\x76\x8a\xa8\xca\
|
||||
\x24\x72\x5d\xad\x1a\x32\x92\xdb\x00\x76\x08\x66\x5d\xa0\x12\xd5\
|
||||
\xf4\xed\x00\x78\x3e\xb3\xff\x00\x04\xe5\xf8\x6b\xab\xfe\xdf\x9a\
|
||||
\x37\xed\x28\xb6\xba\xad\x8f\xc4\xdd\x23\x44\x97\x40\x79\xad\x6e\
|
||||
\xfc\xbb\x3d\x4a\xd9\xd1\x90\x1b\x88\xb6\x9f\x31\xd1\x5b\x0a\x77\
|
||||
\x0c\x6d\x5c\x83\xb5\x71\xe9\x5f\x18\x3e\x3e\xf8\x17\xf6\x7b\xd0\
|
||||
\x23\xd5\x7c\x7b\xe3\x2f\x0a\xf8\x2b\x4c\x99\x8a\x47\x75\xae\xea\
|
||||
\xb0\x69\xf0\xca\xc3\xaa\xab\x4a\xca\x18\xf2\x38\x1c\xf3\x5a\x9f\
|
||||
\x11\xfc\x7d\xa6\xfc\x2a\xf8\x7b\xaf\x78\xa3\x5a\x9b\xec\xda\x3f\
|
||||
\x86\xf4\xeb\x8d\x52\xfa\x6c\x7f\xaa\x82\x08\xda\x59\x1b\xf0\x55\
|
||||
\x26\xbf\x89\xdf\xf8\x29\x5f\xfc\x14\x4b\xc7\x1f\xf0\x53\x0f\xda\
|
||||
\xab\xc4\x1f\x12\x3c\x65\x7d\x70\xd6\xf7\x53\xc9\x06\x87\xa4\x97\
|
||||
\xdd\x6d\xa0\xe9\xe1\x8f\x95\x6d\x12\xf4\x18\x5c\x17\x61\xcb\xb9\
|
||||
\x66\x3c\x9a\x00\xfe\xd7\x7e\x19\xfc\x56\xf0\xbf\xc6\x8f\x09\x41\
|
||||
\xaf\xf8\x3f\xc4\x9a\x0f\x8a\xb4\x3b\xa2\x56\x1d\x47\x47\xbf\x8a\
|
||||
\xfa\xd6\x52\x3a\x81\x24\x4c\xca\x48\xc8\xc8\xcf\x14\x57\xf3\xa9\
|
||||
\xff\x00\x06\x4f\x6a\x1f\x10\x8f\xed\x77\xf1\x52\xd7\x4f\x93\x52\
|
||||
\x6f\x85\xeb\xe1\x75\x97\x5a\x8c\xbb\x7d\x8a\x3d\x50\xdc\xc4\x2c\
|
||||
\xdb\x1d\x3c\xe3\x12\xdd\x80\x47\x25\x03\x67\xa0\xa2\x80\x3f\xa4\
|
||||
\xaa\x28\xa2\x80\x0a\xf9\x17\xf6\x9f\xf8\xa7\xe1\xbf\x10\xff\x00\
|
||||
\xc1\x43\x3c\x2d\xf0\xb7\xe2\x86\xa9\xa4\x69\x7f\x0d\x57\xc0\x97\
|
||||
\x3e\x30\xb5\xb3\xd5\xae\x52\xdb\x4e\xf1\x1e\xa5\x15\xfa\x41\x24\
|
||||
\x57\x0d\x23\x04\x99\x6d\xa1\x64\x94\x40\xd9\x52\x67\xde\xc0\xf9\
|
||||
\x63\x05\x14\x00\xdf\xf8\x26\x86\xa5\xe0\xbd\x33\xf6\x80\xfd\xa7\
|
||||
\xbc\x3b\xe0\xfd\x4a\xc6\xf2\x2b\x7f\x1a\xd8\xeb\xad\x0e\x8c\x22\
|
||||
\x1a\x1d\xad\xbd\xf6\x93\x68\xd6\xe2\xd8\x44\x4a\x09\x58\x43\x23\
|
||||
\x4d\x8c\x16\x76\x57\x20\x6f\x15\xf5\xe5\x14\x50\x07\x01\xfb\x55\
|
||||
\xfc\x6d\x87\xf6\x6c\xfd\x9a\x3c\x7b\xf1\x02\x68\x5a\xe2\x3f\x06\
|
||||
\xe8\x37\x9a\xbf\x94\xab\x9f\x30\xc3\x0b\x3a\x83\xe8\x09\x03\x27\
|
||||
\xb0\xc9\xed\x5f\x9b\xdf\x1d\xbf\xe0\x84\xbf\x0f\xfc\x4d\xff\x00\
|
||||
\x04\xbf\xd6\x3c\x59\xe2\x9b\x7d\x3f\xe2\x07\xed\x01\x6f\xa3\x47\
|
||||
\xe3\xad\x53\xc6\x5a\x8e\xa9\x7b\xab\x41\xe2\x0d\x4e\xda\x3f\xb5\
|
||||
\xc9\x07\xcd\x27\x36\x13\x05\x78\x84\x51\x85\x5d\x8e\xa4\x0c\xa8\
|
||||
\x34\x51\x40\x1b\x9f\x02\x3f\xe0\xe5\x6f\x80\x7a\x4e\x81\xa3\xea\
|
||||
\xfe\x32\xb0\xf1\x47\xc1\x4f\x86\x3a\x96\x83\x6c\xbe\x0b\x8f\x50\
|
||||
\xf0\x7d\xda\xda\xeb\x8d\x11\xf2\xee\xda\xd6\x5b\x68\xde\x2f\x26\
|
||||
\xde\x41\xe4\x22\x2e\x09\x11\xbb\x1c\x02\x82\xba\xdf\x8d\xbf\xf0\
|
||||
\x75\x2f\xec\x65\xf0\x93\xc1\xd2\xea\x3a\x5f\xc4\x4d\x4b\xc7\x9a\
|
||||
\x87\x94\x64\x83\x4a\xd0\x74\x2b\xc3\x71\x33\x63\x85\x2f\x71\x1c\
|
||||
\x51\x26\x4f\xf7\x9c\x63\xde\x8a\x28\x03\xe1\xaf\xf8\x24\xb7\xfc\
|
||||
\x15\x03\xe2\xe7\xc6\x5f\xf8\x29\x27\x8c\x7f\x6a\x4f\x14\x78\x6d\
|
||||
\x7c\x33\xf0\x07\xe3\x77\x8b\x34\xdf\x85\xd7\x51\x22\x15\x83\x4e\
|
||||
\xbc\x30\xc8\x34\x99\xcc\x98\x02\x67\x89\x92\x3b\x79\xa6\x38\x1b\
|
||||
\xaf\xd4\x60\x00\xaa\xbf\xbf\x94\x51\x40\x1f\x2f\x7f\xc1\x6b\xf5\
|
||||
\x2b\xcd\x27\xfe\x09\x23\xfb\x45\x4d\x63\xe6\x0b\x81\xe0\x3d\x51\
|
||||
\x33\x1f\xde\x08\xd0\x32\xb9\xfc\x10\xb7\xe1\x5f\xc5\x34\x60\x06\
|
||||
\x56\x65\x2c\x99\x19\xf7\xa2\x8a\x00\xfe\xc0\xff\x00\xe0\xda\x2f\
|
||||
\xd9\x7f\x4e\xfd\x99\xff\x00\xe0\x8f\xdf\x0b\x64\x87\x4f\x8a\xd3\
|
||||
\x59\xf1\xfd\xb4\x9e\x2e\xd5\xe7\x09\x89\x2e\xe4\xbb\x72\xd0\x33\
|
||||
\x1e\xa7\x6d\xa8\xb7\x41\xec\xbe\xe6\x8a\x28\xa0\x0f\xff\xd9\
|
||||
"
|
||||
|
||||
qt_resource_name = b"\
|
||||
\x00\x06\
|
||||
\x07\x03\x7d\xc3\
|
||||
\x00\x69\
|
||||
\x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\
|
||||
\x00\x08\
|
||||
\x0b\x77\x5c\xa7\
|
||||
\x00\x68\
|
||||
\x00\x65\x00\x61\x00\x64\x00\x2e\x00\x6a\x00\x70\x00\x67\
|
||||
"
|
||||
|
||||
qt_resource_struct_v1 = b"\
|
||||
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
|
||||
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\
|
||||
\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
|
||||
"
|
||||
|
||||
qt_resource_struct_v2 = b"\
|
||||
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
|
||||
\x00\x00\x00\x00\x00\x00\x00\x00\
|
||||
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\
|
||||
\x00\x00\x00\x00\x00\x00\x00\x00\
|
||||
\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
|
||||
\x00\x00\x01\x60\x83\x46\x10\xc7\
|
||||
"
|
||||
|
||||
qt_version = QtCore.qVersion().split('.')
|
||||
if qt_version < ['5', '8', '0']:
|
||||
rcc_version = 1
|
||||
qt_resource_struct = qt_resource_struct_v1
|
||||
else:
|
||||
rcc_version = 2
|
||||
qt_resource_struct = qt_resource_struct_v2
|
||||
|
||||
def qInitResources():
|
||||
QtCore.qRegisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data)
|
||||
|
||||
def qCleanupResources():
|
||||
QtCore.qUnregisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data)
|
||||
|
||||
qInitResources()
|
|
@ -1,399 +0,0 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
'''
|
||||
Created on 2017年12月23日
|
||||
@author: Irony."[讽刺]
|
||||
@site: http://alyl.vip, http://orzorz.vip, https://coding.net/u/892768447, https://github.com/892768447
|
||||
@email: 892768447@qq.com
|
||||
@file: xpmres
|
||||
@description:
|
||||
'''
|
||||
|
||||
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
|
||||
__Copyright__ = "Copyright (c) 2017 Irony.\"[讽刺]"
|
||||
__Version__ = "Version 1.0"
|
||||
|
||||
# 这里把转换的xpm数组直接放到py文件中当做一个变量
|
||||
|
||||
# 这里需要把xpm文件里的内容做下修改成python的list
|
||||
image_head = [
|
||||
"120 120 256 2",
|
||||
"8 c Black",
|
||||
"u. c #CACACA",
|
||||
" . c #0F0F0F",
|
||||
"I c #D9D9D9",
|
||||
"x. c #1E1E1E",
|
||||
"@X c #E8E8E8",
|
||||
"%. c #2D2D2D",
|
||||
"l c #F7F7F7",
|
||||
"S c #3C3C3C",
|
||||
"1. c #4B4B4B",
|
||||
"XX c #5A5A5A",
|
||||
"{ c #696969",
|
||||
"U. c #787878",
|
||||
"7 c #878787",
|
||||
"wX c #969696",
|
||||
"JX c #A5A5A5",
|
||||
"SX c #B4B4B4",
|
||||
"p. c #C3C3C3",
|
||||
"| c #080808",
|
||||
"9 c #D2D2D2",
|
||||
"r. c #171717",
|
||||
"2 c #E1E1E1",
|
||||
"<. c #262626",
|
||||
"0 c #F0F0F0",
|
||||
"3. c #353535",
|
||||
" c #FFFFFF",
|
||||
"0X c #444444",
|
||||
"OX c #535353",
|
||||
"PX c #626262",
|
||||
"/ c #717171",
|
||||
"$X c #808080",
|
||||
"7X c #8F8F8F",
|
||||
"] c #9E9E9E",
|
||||
"-X c #ADADAD",
|
||||
"c c #BCBCBC",
|
||||
"O. c #010101",
|
||||
"B c #CBCBCB",
|
||||
"b c #101010",
|
||||
"@ c #DADADA",
|
||||
";. c #1F1F1F",
|
||||
"dX c #E9E9E9",
|
||||
"F c #2E2E2E",
|
||||
"j c #F8F8F8",
|
||||
"C. c #3D3D3D",
|
||||
"N. c #4C4C4C",
|
||||
"J c #5B5B5B",
|
||||
"G. c #6A6A6A",
|
||||
"HX c #797979",
|
||||
"FX c #888888",
|
||||
"/. c #979797",
|
||||
"m. c #A6A6A6",
|
||||
"uX c #B5B5B5",
|
||||
"$. c #C4C4C4",
|
||||
"t. c #090909",
|
||||
":. c #D3D3D3",
|
||||
"a. c #181818",
|
||||
"$ c #E2E2E2",
|
||||
"#X c #272727",
|
||||
"F. c #F1F1F1",
|
||||
"VX c #363636",
|
||||
"Q c #454545",
|
||||
"K. c #545454",
|
||||
"gX c #636363",
|
||||
"C c #727272",
|
||||
" X c #818181",
|
||||
"KX c #909090",
|
||||
"P c #9F9F9F",
|
||||
"e c #AEAEAE",
|
||||
"yX c #BDBDBD",
|
||||
"5. c #020202",
|
||||
"p c #CCCCCC",
|
||||
"i c #111111",
|
||||
"+X c #DBDBDB",
|
||||
"J. c #202020",
|
||||
"T c #EAEAEA",
|
||||
"b. c #2F2F2F",
|
||||
"r c #F9F9F9",
|
||||
"6. c #3E3E3E",
|
||||
"g. c #4D4D4D",
|
||||
"v. c #5C5C5C",
|
||||
",. c #6B6B6B",
|
||||
"; c #7A7A7A",
|
||||
"&X c #898989",
|
||||
"D. c #989898",
|
||||
"t c #A7A7A7",
|
||||
"k. c #B6B6B6",
|
||||
"w. c #C5C5C5",
|
||||
".. c #0A0A0A",
|
||||
"c. c #D4D4D4",
|
||||
";X c #191919",
|
||||
"6 c #E3E3E3",
|
||||
"sX c #282828",
|
||||
"{. c #F2F2F2",
|
||||
"iX c #373737",
|
||||
"-. c #464646",
|
||||
"l. c #555555",
|
||||
"~ c #646464",
|
||||
"P. c #737373",
|
||||
"a c #828282",
|
||||
"*X c #919191",
|
||||
"CX c #A0A0A0",
|
||||
"BX c #AFAFAF",
|
||||
"6X c #BEBEBE",
|
||||
"w c #030303",
|
||||
"s c #CDCDCD",
|
||||
"R. c #121212",
|
||||
"]. c #DCDCDC",
|
||||
"q. c #212121",
|
||||
"x c #EBEBEB",
|
||||
"D c #303030",
|
||||
"o c #FAFAFA",
|
||||
"f. c #3F3F3F",
|
||||
".X c #4E4E4E",
|
||||
"4 c #5D5D5D",
|
||||
"K c #6C6C6C",
|
||||
"GX c #7B7B7B",
|
||||
"jX c #8A8A8A",
|
||||
"rX c #999999",
|
||||
"8. c #A8A8A8",
|
||||
"mX c #B7B7B7",
|
||||
"4X c #C6C6C6",
|
||||
"y. c #0B0B0B",
|
||||
"|. c #D5D5D5",
|
||||
"4. c #1A1A1A",
|
||||
"B. c #E4E4E4",
|
||||
"ZX c #292929",
|
||||
", c #F3F3F3",
|
||||
"1X c #383838",
|
||||
"A c #474747",
|
||||
"^ c #565656",
|
||||
": c #656565",
|
||||
"[ c #747474",
|
||||
"W. c #838383",
|
||||
"n. c #929292",
|
||||
"V. c #A1A1A1",
|
||||
"[. c #B0B0B0",
|
||||
"tX c #BFBFBF",
|
||||
"X. c #040404",
|
||||
"IX c #CECECE",
|
||||
"H. c #131313",
|
||||
"U c #DDDDDD",
|
||||
"`. c #222222",
|
||||
">X c #ECECEC",
|
||||
"G c #313131",
|
||||
"+ c #FBFBFB",
|
||||
"xX c #404040",
|
||||
"T. c #4F4F4F",
|
||||
"lX c #5E5E5E",
|
||||
"E. c #6D6D6D",
|
||||
"z c #7C7C7C",
|
||||
"!. c #8B8B8B",
|
||||
"i. c #9A9A9A",
|
||||
"oX c #A9A9A9",
|
||||
"zX c #B8B8B8",
|
||||
"%X c #C7C7C7",
|
||||
"v c #0C0C0C",
|
||||
"*. c #D6D6D6",
|
||||
"z. c #1B1B1B",
|
||||
"= c #E5E5E5",
|
||||
"R c #2A2A2A",
|
||||
"k c #F4F4F4",
|
||||
"H c #393939",
|
||||
"_. c #484848",
|
||||
"L. c #575757",
|
||||
"d. c #666666",
|
||||
"MX c #757575",
|
||||
"Z. c #848484",
|
||||
"LX c #939393",
|
||||
"y c #A2A2A2",
|
||||
"NX c #B1B1B1",
|
||||
"UX c #C0C0C0",
|
||||
"o. c #050505",
|
||||
"'. c #CFCFCF",
|
||||
"5X c #141414",
|
||||
"h. c #DEDEDE",
|
||||
",X c #232323",
|
||||
") c #EDEDED",
|
||||
"I. c #323232",
|
||||
"O c #FCFCFC",
|
||||
"3X c #414141",
|
||||
"Q. c #505050",
|
||||
"2. c #5F5F5F",
|
||||
"bX c #6E6E6E",
|
||||
"qX c #7D7D7D",
|
||||
"# c #8C8C8C",
|
||||
"V c #9B9B9B",
|
||||
"9X c #AAAAAA",
|
||||
"fX c #B9B9B9",
|
||||
"(. c #C8C8C8",
|
||||
"3 c #0D0D0D",
|
||||
"h c #D7D7D7",
|
||||
"@. c #1C1C1C",
|
||||
"_ c #E6E6E6",
|
||||
"M. c #2B2B2B",
|
||||
"j. c #F5F5F5",
|
||||
"A. c #3A3A3A",
|
||||
":X c #494949",
|
||||
"Z c #585858",
|
||||
"8X c #676767",
|
||||
"d c #767676",
|
||||
"hX c #858585",
|
||||
"AX c #949494",
|
||||
"=. c #A3A3A3",
|
||||
"0. c #B2B2B2",
|
||||
"#. c #C1C1C1",
|
||||
"+. c #060606",
|
||||
"N c #D0D0D0",
|
||||
"u c #151515",
|
||||
"cX c #DFDFDF",
|
||||
"Y. c #242424",
|
||||
"s. c #EEEEEE",
|
||||
"q c #333333",
|
||||
". c #FDFDFD",
|
||||
"> c #424242",
|
||||
"<X c #515151",
|
||||
"DX c #606060",
|
||||
"S. c #6F6F6F",
|
||||
"Y c #7E7E7E",
|
||||
"e. c #8D8D8D",
|
||||
"^. c #9C9C9C",
|
||||
"1 c #ABABAB",
|
||||
"pX c #BABABA",
|
||||
">. c #C9C9C9",
|
||||
"} c #0E0E0E",
|
||||
"aX c #D8D8D8",
|
||||
"E c #1D1D1D",
|
||||
"( c #E7E7E7",
|
||||
"}. c #2C2C2C",
|
||||
"! c #F6F6F6",
|
||||
"n c #3B3B3B",
|
||||
"&. c #4A4A4A",
|
||||
"~. c #595959",
|
||||
"=X c #686868",
|
||||
"& c #777777",
|
||||
"L c #868686",
|
||||
"< c #959595",
|
||||
"7. c #A4A4A4",
|
||||
"). c #B3B3B3",
|
||||
"` c #C2C2C2",
|
||||
"W c #070707",
|
||||
"- c #D1D1D1",
|
||||
"eX c #161616",
|
||||
"g c #E0E0E0",
|
||||
"f c #252525",
|
||||
"5 c #EFEFEF",
|
||||
"m c #343434",
|
||||
"X c #FEFEFE",
|
||||
"2X c #434343",
|
||||
"nX c #525252",
|
||||
"* c #616161",
|
||||
"kX c #707070",
|
||||
"% c #7F7F7F",
|
||||
"M c #8E8E8E",
|
||||
"vX c #9D9D9D",
|
||||
"9. c #ACACAC",
|
||||
"' c #BBBBBB",
|
||||
|
||||
" . . X . X X X X o ",
|
||||
" . X O + O . + ",
|
||||
" . X @ # $ X ",
|
||||
" X o O % & * = ",
|
||||
" . X . X - ; . : > , O X ",
|
||||
" . . < 1 2 3 4 ",
|
||||
" X 5 ; 6 7 8 % + ",
|
||||
" X . X 9 % X O 0 q w e O ",
|
||||
" r X o X . X X . . . X O X X X . X X X X X O O . t y X X X 9 u i p X . O ",
|
||||
"+ X X + . . X X X X . X X + . O . X . O X . . . X X X X X . r . . a s . + d 8 f g O X ",
|
||||
" X h r o X + . X X X . . X X X X . X . o j 0 5 0 k j + . X O X X . X l z x X . c v b n x . X ",
|
||||
" X . X y 8 m M N . . . . . + O X . X O . X 5 B V C Z A S m D F G H A J K L P c I k X X X U Y . X X X T R E W Q ! X O ",
|
||||
" O O r Q ~ Y m F ^ / 1 ( X . X X O . X + . = ) _ ` ' ] [ { C S } | .v W ..X.w X.o.O.8 8 X.O.+.3 @.m ^ # #.r O . . $.V . . J O.%...J + . + ",
|
||||
". . + . &.% X . *.=.-.;.Q a :.+ O o O o X >.,.<.1.2.3.v E 4.8 o.+.| | X.8 8 8 O.8 8 8 5.w O.8 8 5.8 O...i 3 ..i 6.] o X 1 7. O X X 8.w b ;.8 9. . ",
|
||||
" . O . 0.q.w. j e.D u f K B O o X o X ` 2.r.W O.5.8 8 | 3 t.w 8 O.O.8 8 8 5.O.8 X.O.8 8 8 8 8 8 8 8 8 8 8 X.y.b o.8 &.u. i.p. X X 6 a.5.5.O.<.s. + ",
|
||||
"X X O d.-.l . f.5.8 5.b g.P p h.j. k.l.} 8 O.w 8 8 w 8 8 5.5.8 5.O.8 8 O.O.8 8 8 8 8 O.O.8 8 8 8 w 8 8 O.O.8 O.8 O.z.4.x.d a c.X X X . X ^ 8 5.8 5.v.. X ",
|
||||
"X X O O c.x.B . 8.+.O.8 w 8 5.b.[ n.m.:. X ' l. .8 +.O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 | @.M.H N.B.X X . . < 8 8 O.8 O.V. + X . ",
|
||||
" X . k C.# . O Z.w 8 O.8 5.5...A.: S.D.F.o - G.;.H.8 X.X.8 8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 o.8 5.W J.K.j. O O c.b 8 5.8 8 ;.s. + + O ",
|
||||
" X . L.S.X j P.o.O.8 8 O.8 8 +.@.u l.z H R 3.W O.5.8 8 X.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5.O.8 8 { o . X O + j.I.8 O.8 8 w z . + X X X ",
|
||||
". . U.&. + r + d 5.O.5.O.O.5.O.8 8 5.Y.T.l.R.5.8 O.8 5.O.8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 X.8 8 8 5.E.O X . v.O.w O.8 8 H.I . X O ",
|
||||
" X X X X 7 6.O + X X W.+.8 8 +.8 O.8 O.X.z.f 8 5.8 8 w O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5.8 Q.O O + X !.8 8 8 5.8 5.~.. o + . ",
|
||||
" + X . ^.I., O + /.J.5.8 5.8 w 8 O.5.8 8 8 o.8 8 8 8 O.5.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 X.8 5.8 3.( X o X . X 8.o.O.o.8 w O.o.(. + ",
|
||||
" O X O c ;.U O X X X ).m 5.w 8 8 8 w 8 5.w 8 8 8 8 5.O.8 8 5.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.8 5.t.V O X X B z.8 5.X.8 8 O._.X X X . ",
|
||||
" O X X - `.(.X + X X O . I b.8 O.8 w 8 O.8 8 O.8 X.O.8 5.8 8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 w 8 O.8 O.A.h '. O . . . X ].F +.8 8 O.w 8 5.[. X . ",
|
||||
" {.}.i.. . X . X |.<.W 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.8 5.5.8 8 .. X.XN ].+ X k ,...O.o.8 w 8 8 R T O X ",
|
||||
" XXZ o . O 0 * .8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.O.8 8 8 O.> d.G.oXOX+X . O . @X#X5.5.W 8 w O.8 V . . . ",
|
||||
" 7.E 2 . . X X 7 b w 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 w 8 O.8 8 8 y.}...I.Q.+X8.$X%X&X].!.8 ..8 8 5.8 w *X . ",
|
||||
" X ) <.L X c ;.8 5.O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5.8 O.5.8 w 8 O.8 w ..Y.=XF : -Xd./.I.;XX.8 w O.z.:Xt O X . ",
|
||||
" . *XJ.2 X O r >X1.8 O.8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.8 8 O.8 O.O.8 5.O.5.5.@.A ~.Z 1 { XX,X .8 8 5.8 3.<X` X ",
|
||||
" O 0 1X=Xo X X n.o.8 w 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5.5.8 8 O.8 O.5.8 8 8 5.5.b }.3 ~.; 2X3X@.3 .8 8 } > .Xs.. . ",
|
||||
" X . 4Xz.[.. r h.Y.8 X.8 8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.O.8 8 w 8 8 8 X.X.w 8 O.8 O.8 .8 ;X3Xi y.1XJ.3 i ;Xx.S. ",
|
||||
" . X i.}.h C X.O.8 8 5.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5.8 O.8 8 5.8 8 8 5.8 O.O.8 8 8 5.O.8 w 8 u H x...5X5X6X ",
|
||||
" O + W.N.s.9 z.5.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 w 8 5.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.W r. .| w > j . . X X ",
|
||||
" X X . 7X& 8X5.8 O.8 8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 +.8 8 5.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 w 5.X.W +.9X O . X ",
|
||||
" X O O oXi 8 8 w 8 8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.O.8 5.8 8 | 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5.8 8 8 W X.8 0Xk X O . . ",
|
||||
" + . . qX8 w 8 O.O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.8 8 w 8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.w 8 o.8 3 +.' . O ",
|
||||
" + . . I ,XO.5.8 8 5.O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5.8 8 5.5.5.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.5.O.: X O X ",
|
||||
" + . X X % 5.8 8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5.8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.O.8 8 8 w 8 +.E $ X X X ",
|
||||
" . x m 8 O.8 O.O.8 8 8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5.8 8 8 X.5.O.w 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 o.8 5.wXX . X ",
|
||||
" . X oX+.8 O.8 8 w 8 5.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 w 8 8 5.w K b 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.8 5.8 X.o.&.. X ",
|
||||
" X * 8 O.8 8 8 8 8 8 8 8 8 5.8 8 8 O.8 O.r.5X8 8 5.8 w 8 8 8 8 8 8 8 8 8 w 8 8 8 O. .(.G.8 O.8 8 5.5.8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.5...eXc. X ",
|
||||
" . . 0 n 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5.8 5.f a z.5.8 8 8 8 w 8 8 8 8 8 8 8 8 8 O.w 8 8 ..B c.;.8 O.8 8 8 X.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.5.t.W rXX O X ",
|
||||
" 4XY.8 5.8 8 8 8 8 8 8 8 8 5.o.8 w 8 a.tXM o.8 O.8 X.8 8 8 8 8 8 8 8 8 8 8 O.8 O.5.i yX W.W 8 w o.8 O.O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.O.t.o.^ X X ",
|
||||
" . L ;X8 O.8 8 8 8 8 8 8 8 8 O.8 w 8 b uX ~.8 O.8 8 8 O.8 8 8 8 8 8 8 8 8 5.O.8 8 8 R.c ) 0XO.8 8 +.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.O.W b <.T X ",
|
||||
" + k _.X.8 8 8 8 8 8 8 8 8 8 w 8 w 8 v wX F.iXo.8 8 5.8 O.O.8 8 8 8 8 8 8 8 8 8 O.8 8 a.:. r 4XE 8 W 8 8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.O.w u W pX O ",
|
||||
" X aX;.8 O.8 8 8 8 8 8 8 8 8 O.8 8 W ~ . O 6 ;.8 8 O.5.8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 +.`.6 X M b 8 8 8 w 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.O.u 5. X . ",
|
||||
" o P y.5.O.O.8 8 8 8 8 8 8 8 8 X.8 G ].O w.b 8 w 8 8 8 5.8 8 8 8 8 8 8 8 8 O.w 8 8 8 b.s. X _ uXsX8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.5.R.3 1.+ X ",
|
||||
" . d.X.8 8 8 8 8 8 8 8 8 8 8 5.8 3 rX X O 9XX.8 5.8 5.8 8 8 8 8 8 8 8 8 8 8 8 8 O.O.w .XX . U qX,.XX;X8 8 5.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.O.} H.J.dXX ",
|
||||
" @XA.X.8 O.8 w 8 8 O.O.8 8 8 O.w A dXk.L ( D.8 O.8 8 O.O.8 8 8 8 8 8 8 8 8 8 8 5.O.8 X.d. 5 k X pXz.8 8 8 O.8 8 O.O.8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 v 4.3 ` . ",
|
||||
" X + ' #XO.8 O.8 8 8 5.8 8 O.8 X.8 u fX6XgXhX5 W.8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.8 8 O.y.jX O + o O D.3 8 8 8 8 5.8 O.w 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 t.4.o.D.X ",
|
||||
" . jX;XO.8 O.8 8 8 8 8 8 5.8 8 o.T.k j + + hXO.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 w b k. O kX| 8 O.O.5.X.8 5.5.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5.@.t.K ",
|
||||
" k lXi O.8 O.8 O.8 8 O.8 8 O.8 5XzX . P.w 8 8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 O.w w J.h.X X X O . l XXt.8 O.8 8 5.8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 ;Xi T.X . ",
|
||||
" O s %.o.8 8 8 O.8 8 8 O.8 8 +.w A r X O C +.8 8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 O.O.5.-.o X X X X F.> 8 O.5.w 8 X.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.8 i .iXF.X ",
|
||||
" i.y.8 w 8 8 8 8 O.8 8 5.8 8 v 8.O . kX..O.8 O.8 8 O.8 8 8 8 8 8 8 8 8 8 O.8 w & X . . , c.).m.B.$ 6.8 8 5.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5.3 3 sX$ ",
|
||||
" l { 5.8 w O.8 8 8 O.8 8 w 8 8 xXF.X + 7 } O.8 O.8 8 O.8 8 8 8 8 8 8 8 8 8 8 O.i uX+ + cXV.a L V L 4Xo aXA.+.8 8 O.w 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5.3 i J.*. . ",
|
||||
" h.Q w 5.8 8 5.8 8 O.8 8 8 O.t.!. j j.s. X X 1 b 5.8 O.8 8 5.8 8 8 8 8 8 8 8 8 O.8 w Y.x ) P Z.[.pXvXbXlX&.> nXA.v o.8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.8 3 u 4.p ",
|
||||
". X X X mX1X5.8 8 O.8 8 8 8 5.8 8 X.q.9.oXjXMX{ y . tXz.8 8 w 8 8 8 5.8 8 8 8 8 8 8 8 8 8 O.: O 6 ^.e 7.* %.y.z.u w O.8 x.sXw 8 5.8 8 8 8 5.8 5.8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 y.x. .>. X ",
|
||||
" . X X rXm 8 O.O.8 8 O.5.O.8 5.o.5.Q.- cXcXN NXmX= l s J.X.8 8 8 O.8 O.8 8 8 8 8 8 8 8 8 w o.).. . B.BX^ D L.b.R ;Xw 8 8 w w sX}.v 8 O.O.8 8 8 o.8 8 5.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.8 X.`.3 w. ",
|
||||
" . X X 0 L VX8 5.5.8 O.8 8 8 5.5.8 i CXc.% <Xb.,XE J.A._.5XO.8 O.8 5.8 8 8 8 8 8 8 8 8 8 5.O.R , vXF S.:.* ;Xi 8 8 X.8 8 +.8 3 @.o.5.8 w 8 5.8 5.5.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.8 8 %.i tX ",
|
||||
" X X X |.L 3.8 O.8 8 5.8 O.8 O.8 w q.T.F ZX| 8 8 w 5.8 w w 8 O.w 8 8 8 8 8 8 8 8 8 8 8 8 8 w Z. + AXI.SXX D.i i O.w 8 8 O.O.8 O.8 8 } X.v 8 5.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.8 H @.0. X ",
|
||||
"X X X zXL ZX8 8 8 O.5.8 8 8 w 8 +.u L.~.5X8 8 8 5.8 8 | w 8 5.O.8 8 O.5.8 8 8 8 8 8 8 8 O.5XB. ` lX+X _ b.+.| 5.8 8 8 8 8 X.8 8 X.O.8 W b 8 5.O.o.w 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 1XY.rX X ",
|
||||
" X CXY z.5.w 8 8 O.8 5.O.8 X.8 2.~ t.5.5.O.8 5.8 O.8 o.O.8 8 8 O.O.8 8 8 8 8 8 8 8 8 O./ X + zXh.+ 8.w o.o.8 8 8 O.O.8 8 8 5.8 8 5.O.-.sX8 X.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.8 8 }.`.; ",
|
||||
" X X O e.P.H.5.5.8 8 O.8 8 8 8 O.x.0Xo.8 8 8 8 8 8 8 5.w O.8 8 O.O.O.8 8 8 8 8 8 8 8 8 8 R.cX. X O O d.8 O.8 5.w 8 8 8 8 O.5.5.8 X.8 8 2.*.Q.X.5.8 w 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 ,X;.DX. ",
|
||||
" O X . j XK .8 8 O.8 w 8 8 8 O.W J.i 8 w 5.8 o.8 8 w 8 8 8 O.8 8 8 8 O.O.8 8 8 8 8 8 8 8 U.. O j q w 8 8 8 8 5.O.8 8 5.8 O.8 8 8 O.# j.e.f 3 5.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5.O.J.J.K.+ ",
|
||||
" X = L kXW 5.O.8 8 5.8 8 O.8 H.4.t.5.8 8 8 O.O.8 5.O.8 X.8 8 8 5.8 w 8 8 w 8 8 8 O.8 ,Xs.X . X $ eX8 8 8 8 O.8 % B 1X8 8 5.8 8 X.X.{ + /.v eXH.W 8 8 O.8 8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 w 8 f Y.:XX ",
|
||||
" X X X +XFXC o.8 O.8 O.8 8 8 5.8 r.J.t.8 O.8 8 8 8 X.8 8 5.8 w 8 w 8 8 8 O.8 8 8 5.8 8 X.vX+ X X s 8 8 o.8 8 O.H.x . e w 8 5.8 O.8 8 T.X O vX8 O.H.y.X.w 5.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5.iXY._.X ",
|
||||
"X X X . X u.7Xd 5.8 8 O.8 8 8 8 O.O.J.%.| 8 5.w R.lXeX8 O.8 8 8 +.w 8 5.w 8 8 5.O.O.5.| 8 1. X X X ' 5.w 8 8 8 8 4.{. zX8 O.8 5.O.8 8 xXo zXX.w 5.8 8 8 8 8 8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.8 ..Z M.&. ",
|
||||
" . X pXrXGXO.8 8 8 8 8 O.8 8 o.VXxXt.8 8 8 e. [.X.8 O.8 5.v ;X8 R.a.8 8 8 5.8 5.5Xz.+X. O X X tX8 8 8 5.5.8 w -XX ; 8 O.O.8 8 O.8 S O . I a.O.8 8 O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O. .MXH g. ",
|
||||
" . [.8.W.O.5.8 8 O.8 O.O.8 | DXZ i 5.8 8 1 $ W 8 8 5.8 5XH w }.VX8 O.5.8 +.J.t.m. . X . X *.w 5.X.X.8 5.8 H.D | 8 8 O.5.O.8 O.&. . @Xm 8 8 5.5.O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.3 L _._.+ ",
|
||||
" X X 1 uXn.O.w 8 8 O.8 8 O.8 3 < z E 8 8 8 J r 9XO.w 8 w 8 eXK.8 _..X8 O.8 5.E t.; X . X . , D O.+.8 w O.8 O.O.8 5.X.O.O.8 o.8 d . O s.A O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.3 wXv.xXr ",
|
||||
" X X t ' 9.+.w O.8 8 8 8 8 8 4.4X0.<.8 8 8 o.}.} o.8 5.8 8 x. XO.C OX8 8 O.5X..=X+ . X . kX8 O.8 8 8 +.8 O.8 8 8 8 X.8 8 w mX+ ! nX8 w 5.O.O.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.u [.HXS o ",
|
||||
" X X X JXyXw.} o.X.8 8 5.8 8 8 R B.cX}.5.8 8 8 5.5.8 5.8 O.O.F mXu i.g.O.O.3 r.v.k . X X O e 8 O.8 5.5.8 8 8 8 O.5.8 8 5.8 Y.F. O X ~ 8 8 8 8 8 8 8 8 5.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 ;.(.KXn O . ",
|
||||
" X X . [.k.B.z.3 O.w 8 8 8 8 8 :Xr X 4 8 O.O.O.8 w 8 w 8 5.8 2X2 :XpX=Xy.o.%.Z.r O X s.J.8 8 O.8 8 8 8 8 O.8 5.5.8 O.LX X X X kX8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 O.;.@ SXC., ",
|
||||
" O 0.SXO }.} W 8 w 8 8 8 +.PX. B 3 8 8 8 O.8 O.O.5.O.8 : + NXaX&.q.$X(. + + O P 8 X.8 8 X.8 O.O.8 X.8 8 8 A.j X O [ W 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 w 8 b.x :.<Xj.X ",
|
||||
"X o ` m. L.+...8 8 8 O.8 8 ,.O X P.8 5.8 8 8 8 8 8 8 o.e . l p.h O o X O o [ 8 8 O.8 X.8 5.8 8 8 8 A.cX . X $X| 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 _.j _ GX. . ",
|
||||
". . X 2 CXX jX+.R.w 8 8 O.5...M._ O j.PX8 8 O.o.8 W 5.8 sX! . O + X X JX%.8 8 8 O.8 8 b D KX{.O X . hXt.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 +.* X T 0. ",
|
||||
" X r tX zXH.q.t.O.O.O.8 .R.zX 0 S.J.O.8 8 8 5.} c . . . O O O . X l NXHXv.lX% p.2 j.. . . O O jX..8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5.| qX 5 g O ",
|
||||
" . X ) r B.#X,X,X8 O.8 o.3 o.M X . dXwXDX* V =.p O X . X X + O o r X O s.. . X 7X..8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 } t X {.j . X ",
|
||||
"X X . X X j. gX;X.Xo.8 8 w q.8 v.+ o r X . X . X + . X X + X O O X o X X O +Xl.[ T @X'.cX !.| 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 4.R :.. ! X ",
|
||||
"X O X . o NXeX,.;X8 8 +.x.8 3X o . O . . O . . X O . . . X X O {.1.K.h ,.~ f.zXX . jXO.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 <XN.T ",
|
||||
" X j PXDX2.X.8 O.i O.%.O O . X g _ @X . X O O + + . F.7.j.s.1 9.yXX O FXO.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5.8 O.8 O.8 O.y.xX8X X X ",
|
||||
" X r *.1.JXx.5.8 b 8 M.F.O o o + X X XN. U . 9 CX_.:.+ X O . . X + X O % 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5.5.8 8 8 O.;X3.D. X ",
|
||||
" X ; oX{ w 5.y.8 sX! O +X@.+.^ 4.E.mXY x.+.8 N. O r . O X X . O O . . S.w 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5.8 8 O.8 8 4.G c. X X ",
|
||||
" + ].9X0.E O.8 8 q l . O . O c ,Xt.S.C MXb.r.sX$Xw.=Xi <Xw. O . . + + . O X J 8 O.O.8 8 8 8 8 8 8 8 8 8 8 O.O.8 O.8 8 O.5.8 5.5X&.l ",
|
||||
" . @X_ DXVX5X8 %.k . + X wXv n *.X . x aXF.. >.g.eX*X+ . + . X . X O O O O X . A 8 O.O.8 8 8 8 8 8 8 8 8 8 8 O.O.8 8 8 O.w 8 8 ..i 7 X ",
|
||||
" O X ! p 1X| 8 ;X0 X O X . O O C w ~ T O O O X . O IXA ~.B.. . X . X X + + X O . r F O.O.O.O.8 8 8 8 8 8 8 8 8 8 5.5.8 8 8 O.8 8 8 o.5XB . X X X ",
|
||||
" + X X O X & O.8 8 BX . X O 0 L.+.L + X X . + . X T ^ }.p X O . . O O . X + X dXr.8 O.O.O.8 8 8 8 8 8 O.8 8 8 5.5.8 8 8 8 8 5.O.8 2Xj.O X X ",
|
||||
" + . . $.8 X.8 -.+ . _ xXy.e X X X X . X O X + {.~ r.NX O X . X . . :.| O.O.O.O.8 8 8 8 8 8 O.8 8 8 w 5.8 8 O.8 8 8 8 5.&X . X X ",
|
||||
" B.eX8 8 8 oX O . O X . X cXVX4.yX . + ,.} e . X . . + X . X zX8 O.w +.8 8 5.8 w 8 8 w 8 O.8 w 8 5.8 O.O.8 8 5. .@ ",
|
||||
" ) #XO.X.w 8XO X = q Y.@ . + + { +.). . o O O O . X < X.8 5.X.X.O.8 8 5.8 5.8 8 8 w 5.o.8 5.8 8 w O.8 2XO ",
|
||||
" X 1XO.o.5...[.X O + . X + x f.#X2 O X X + J y.pX X . o [ 8 o.| o.o.5.8 O.8 8 8 +.8 5.8 8 8 O.8 W w 8 8 O.e. ",
|
||||
" X hX8 .H.8 y.BX o j Q.J.].+ O l . . ! _.E @ O X + X :X8 W v t.5.O.8 8 8 O.8 8 5.8 8 X.X.8 5.} w 8 5.X.w.+ ",
|
||||
" X pX| o.b 5.o.X.*X. O + GX} zX O O ( ZX3.r + X . X . X j D 8 b +.y.w 8 O.8 8 8 5.8 8 O.8 X.8 8 W @.X.5.8 5X>X ",
|
||||
" _ f 8 ,X+.5.5.8 &.pXo 5 ,X=. X X . . O . + >.o./ . X X X I i 8 y.| | W 8 8 8 5.8 O.O.w 8 8 Y.a.| }.C.O.O.8 S X X ",
|
||||
" X L.8 Y.q.8 3 X.8 8 > 9X/.C O + . O O L w p.X . O X X X {.9.8 W 4.#X5.+.8 8 8 O.8 8 o.8 8 b M.Q.v < $X| o.X.=X. ",
|
||||
" . X t w W 3Xt.8 +.w 5.8 8 b pX . X X X O 0 sX_.. . X X g L.m 8 5.U.N.8 w 8 8 8 8 O.| 8 w 8 4.r.R.b.l '.,X+.8 jX X ",
|
||||
" O >Xb.5.T.=XO.W 5.X.O. .c X . X X AX+.>.X O ) -Xm G @.O.VXh.m 5.w 8 8 O.8 5X .8 w H.t.W 8 JX 8X8 O.Z.. O X X O X . ",
|
||||
" X ^.o.sX8.b.8 y.W 8 b.( X X X X O . X O U v E. = -X8XH ,XGX7 X.u pXT r.8 8 w 8 w o.kX@.5.#Xu %.3 D l . . u.4.5.-. . X . O ",
|
||||
" + X O + / eXd D.O.R.v 8 f.x . X X X }.r.L [ l.I.q T.XXI , I.8 z X 9X+.8 O.8 eX5.lX; 8 ..q C.k.5.d. O vX3XFX + X . X O O O ",
|
||||
" . X W.A.zXS 5.+.,X|.. X X X . X X + jX8 VXC i W.5 6XL qX+.^ r ~ w 5.5.@.r.I.# W 8 * '.dX5 _.yX. . O O . + . . O O O ",
|
||||
" O X . X k 7.@X[.O.8 -X+ X X . X . X O . X 5 H.Z }.$XX ,.b -.j. +XZXeX8 ;XG 1.U.} z.,.+X . X X . O X O . . + X + O ",
|
||||
" O . o r A 8 N.( X X r X . ~.q.>X`.P. {.) i.X.xX! X &XH. .m 9.7 ; y.a.|.+ . + O . o . X . O . o ",
|
||||
" X X X . :.sX8 q.rXl + X + + X LXH.V.%.UX. o O >Xb.8 4 +X}.O.2X$ $.1X5.E c. . X O X r X X X + l _ {. X o ",
|
||||
" X . X . X I V.A 8 }.AX5 j X . X . . X - a.i l. X A.8 v N.#XQ.) X < 8 I.+X . + . X X X X oXXXY.z.q.1.9X X X ",
|
||||
" X X ! wX#X5.4 X X + X X X s.AXI.8 3 c. r B +.v ..o.{ X 6 g.nXT X . O X O . F.XX8 8 w 8 5.8 8 d.X X ",
|
||||
" . O O 9 eXSX+ X X O X x aX0.G.}.t.W X.P X X . DX8 5.8 .x.4X KX% ! O X X X X r T.o.X.X.W O.8 5.8 5.a . . ",
|
||||
" . X O jXq.s. X O + Z.M..X,Xu 0XH.jXo . X O /.8 8 8 5.x.0X#XB.{.O O . X X bX8 8 8 8 8 w w 8 O.8 ;X, ",
|
||||
" X X r iX<XX X vXiX( GX=Xu ,.. . ].2.8 8 X.O.8 ; U x.l.X . O X X X X k.o.8 X.8 8 O.8 O.O.8 w W aX X ",
|
||||
" X X X ].b &X + X o . X N #XE.6.b C. X h HXu O.O.5.8 A.fXX -X5.vXX . X X . j.6.8 O.8 O.8 5.8 8 o.8 8 W '. X ",
|
||||
" . mXX.c O X . . g u b 3 ZXSXt qXQ v 8 8 8 .L.mXo . . O 2.b ]. X . X . #.w 8 O.5.8 8 8 w O.8 X.w eX( ",
|
||||
" O . O 0.X.- + + X + . . aX .w 8 b v O.8 O.8 R.0Xn.U . . X g r.^ X o X X . . [ O.5.8 8 O.8 O.8 5.8 8 8 HXX . ",
|
||||
" X ) C ; a / _ . + @ H u O.O.O.5XA.kX1 B. O X O + KXO.k.O X X X . H 8 8 O.w 8 8 5.8 8 8 8 f F. ",
|
||||
" O . U / lX< C.:Xj. . X X X X . l V.6.;.`.a.O.O.~.>X+ X O X k A.D 0 . + X X _ r.O.O.8 8 O.8 8 8 w 8 w (. r ",
|
||||
" . O '.XX8.o . h R.-X X X X + [ 8 i ~ vXM.8 { r o . . . + O X P.8 wX + . X s | 8 8 8 8 8 8 8 w 8 8 8XO . + X ",
|
||||
" B.OX0. X ` ;.c + O X X X X + >X4.d.cX . p.sXrX j T B X X + 9 z.5.q.>X . + + k.8 8 O.8 8 8 8 5.W o.5.IX X X ",
|
||||
" . . HX<Xo O a ^ X O X X X X mX8 yXr X X G.5XT F.Y >. O + O o X 0 ZX8 w 8 FX. X . X 9XO.8 O.O.8 8 8 5.| O.J.j.X X X ",
|
||||
" . -.Z.. + + B d.+ X O O X bX3.aX O - E wX !.Y X O + O + p C.8 +.y.q.;._ O X X CXw 8 O.8 8 8 8 O.o.8 K.. X . ",
|
||||
" O S DX . >X_.LXX X . . @ > - X . . J ;.Q.3 / mX5 U g ! ! @ m.Z t.O.8 8 `.=.8 AX X . X ^.8 8 8 8 8 8 8 8 O.8 a . O ",
|
||||
" X =X,Xj. j K.n . . O c F {.O . . DX8 8 C.y.O.q.4.eXF f.f.#Xv 8 8 8 8 5.8 qXj.ZXG l . X X e 8 8 8 8 O.5.8 8 8 O.NXO X X O ",
|
||||
" . ' 3 PX^.kXU.JXv d.O O . . . *.z.7X+ . . W.8 A.l 0.x.8 O.8 8 O.8 8 O.5.8 O.w 8 Q.+ O M 8 ' X %Xw 8 O.5.w X.O.8 O...@ X X "
|
||||
]
|
|
@ -1,51 +0,0 @@
|
|||
# .9格式图片显示(气泡)
|
||||
|
||||
什么叫.9.PNG呢,这是安卓开发里面的一种特殊的图片
|
||||
这种格式的图片在android 环境下具有自适应调节大小的能力。
|
||||
|
||||
|
||||
(1)允许开发人员定义可扩展区域,当需要延伸图片以填充比图片本身更大区域时,可扩展区的内容被延展。
|
||||
|
||||
(2)允许开发人员定义内容显示区,用于显示文字或其他内容
|
||||
|
||||
目前手机QQ中很多漂亮的的聊天气泡就是.9格式的png图片
|
||||
|
||||
在Github开源库中搜索到两个C++版本的
|
||||
|
||||
1.一个是NinePatchQt https://github.com/Roninsc2/NinePatchQt
|
||||
|
||||
2.一个是QtNinePatch https://github.com/soramimi/QtNinePatch
|
||||
|
||||
### For PyQt
|
||||
1、目前针对第一个库在2年前用[纯python版本1](纯python版本1/)参考源码重新写一个见
|
||||
|
||||
2、这次针对第二个写了[纯python版本2](纯python版本2/)的和[pyd编译好的](pyd版本)两个版本
|
||||
|
||||
### 说明
|
||||
1、建议优先使用pyd版本的(后续提供Python3.4 3.5 3.6 3.7 编译好的32为库文件),也可以自行编译,编译步骤见下文。
|
||||
|
||||
2、其次可以使用纯python版本2的(个人觉得方便调用)
|
||||
|
||||
3、最后再考虑纯python版本1的吧
|
||||
|
||||
4、以上为个人意见,两个C++版本的写法不一样,但是核心算法应该是类似的。
|
||||
|
||||
### 自行编译
|
||||
|
||||
1、首先要安装好Qt、PyQt5、编译安装对应的sip、对应的VC++编译工具
|
||||
|
||||
2、用Qt Creator 打开pro文件进行编译
|
||||
|
||||
3、进入源码中的sip文件夹
|
||||
|
||||
4、修改configure.py文件
|
||||
|
||||
```python
|
||||
# 这里是你的VC版本和对应的Qt目录中的文件夹
|
||||
config.platform = "win32-msvc2010"
|
||||
qt_path = 'D:/soft/Qt/Qt5.5.1/5.5/msvc2010'
|
||||
```
|
||||
|
||||
5、python configure.py
|
||||
|
||||
![截图](ScreenShot/1.gif)
|
|
@ -1,136 +0,0 @@
|
|||
#include "QtNinePatch.h"
|
||||
|
||||
struct Part {
|
||||
bool stretchable;
|
||||
int pos;
|
||||
int len;
|
||||
Part()
|
||||
: stretchable(false)
|
||||
, pos(0)
|
||||
, len(0)
|
||||
{
|
||||
}
|
||||
Part(int pos, int len, bool stretchable)
|
||||
: stretchable(stretchable)
|
||||
, pos(pos)
|
||||
, len(len)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
static inline bool isStretchableMarker(QRgb pixel)
|
||||
{
|
||||
return (qAlpha(pixel) >> 7) & 1;
|
||||
}
|
||||
|
||||
static QPixmap resize9patch(QImage const &image, int dw, int dh)
|
||||
{
|
||||
int sw = image.width();
|
||||
int sh = image.height();
|
||||
if (sw > 2 && sh > 2 && dw > 0 && dh > 0) {
|
||||
QPixmap pixmap(dw, dh);
|
||||
pixmap.fill(Qt::transparent);
|
||||
QPainter pr(&pixmap);
|
||||
pr.setRenderHint(QPainter::SmoothPixmapTransform);
|
||||
|
||||
std::vector<Part> horz;
|
||||
std::vector<Part> vert;
|
||||
int horz_stretch = 0;
|
||||
int vert_stretch = 0;
|
||||
{
|
||||
int pos;
|
||||
QRgb last;
|
||||
QRgb next;
|
||||
pos = 0;
|
||||
last = image.pixel(1, 0);
|
||||
for (int x = 1; x < sw - 1; x++) {
|
||||
next = image.pixel(x + 1, 0);
|
||||
if (isStretchableMarker(last) != isStretchableMarker(next) || x == sw - 2) {
|
||||
bool stretchable = isStretchableMarker(last);
|
||||
int len = x - pos;
|
||||
horz.push_back(Part(pos, len, stretchable));
|
||||
if (stretchable) horz_stretch += len;
|
||||
last = next;
|
||||
pos = x;
|
||||
}
|
||||
}
|
||||
pos = 0;
|
||||
last = image.pixel(0, 1);
|
||||
for (int y = 1; y < sh - 1; y++) {
|
||||
next = image.pixel(0, y + 1);
|
||||
if (isStretchableMarker(last) != isStretchableMarker(next) || y == sh - 2) {
|
||||
bool stretchable = isStretchableMarker(last);
|
||||
int len = y - pos;
|
||||
vert.push_back(Part(pos, len, stretchable));
|
||||
if (stretchable) vert_stretch += len;
|
||||
last = next;
|
||||
pos = y;
|
||||
}
|
||||
}
|
||||
}
|
||||
double horz_mul = 0;
|
||||
double vert_mul = 0;
|
||||
if (horz_stretch > 0) horz_mul = (double)(dw - (sw - 2 - horz_stretch)) / horz_stretch;
|
||||
if (vert_stretch > 0) vert_mul = (double)(dh - (sh - 2 - vert_stretch)) / vert_stretch;
|
||||
int dy0 = 0;
|
||||
int dy1 = 0;
|
||||
double vstretch = 0;
|
||||
for (int i = 0; i < (int)vert.size(); i++) {
|
||||
int sy0 = vert[i].pos;
|
||||
int sy1 = vert[i].pos + vert[i].len;
|
||||
if (i + 1 == (int)vert.size()) {
|
||||
dy1 = dh;
|
||||
} else if (vert[i].stretchable) {
|
||||
vstretch += (double)vert[i].len * vert_mul;
|
||||
double s = floor(vstretch);
|
||||
vstretch -= s;
|
||||
dy1 += (int)s;
|
||||
} else {
|
||||
dy1 += vert[i].len;
|
||||
}
|
||||
int dx0 = 0;
|
||||
int dx1 = 0;
|
||||
double hstretch = 0;
|
||||
for (int j = 0; j < (int)horz.size(); j++) {
|
||||
int sx0 = horz[j].pos;
|
||||
int sx1 = horz[j].pos + horz[j].len;
|
||||
if (j + 1 == (int)horz.size()) {
|
||||
dx1 = dw;
|
||||
} else if (horz[j].stretchable) {
|
||||
hstretch += (double)horz[j].len * horz_mul;
|
||||
double s = floor(hstretch);
|
||||
hstretch -= s;
|
||||
dx1 += (int)s;
|
||||
} else {
|
||||
dx1 += horz[j].len;
|
||||
}
|
||||
pr.drawImage(QRect(dx0, dy0, dx1 - dx0, dy1 - dy0), image, QRect(sx0 + 1, sy0 + 1, sx1 - sx0, sy1 - sy0));
|
||||
dx0 = dx1;
|
||||
}
|
||||
dy0 = dy1;
|
||||
}
|
||||
|
||||
return pixmap;
|
||||
}
|
||||
return QPixmap();
|
||||
}
|
||||
|
||||
QPixmap QtNinePatch::createPixmapFromNinePatchImage(const QImage &image, int dw, int dh)
|
||||
{
|
||||
int w = dw;
|
||||
int h = dh;
|
||||
if (w < image.width() || h < image.height()) { // shrink
|
||||
if (w < image.width()) w = image.width();
|
||||
if (h < image.height()) h = image.height();
|
||||
QPixmap pm1 = resize9patch(image, w, h);
|
||||
if (pm1.isNull()) return QPixmap();
|
||||
QPixmap pm2(dw, dh);
|
||||
pm2.fill(Qt::transparent);
|
||||
QPainter pr(&pm2);
|
||||
pr.setRenderHint(QPainter::SmoothPixmapTransform);
|
||||
pr.drawPixmap(0, 0, dw, dh, pm1, 0, 0, w, h);
|
||||
return pm2;
|
||||
} else {
|
||||
return resize9patch(image, w, h);
|
||||
}
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
#ifndef QTNINEPATCH_H
|
||||
#define QTNINEPATCH_H
|
||||
|
||||
#include <QtCore/qglobal.h>
|
||||
|
||||
#if defined(QTNINEPATCHLIB_LIBRARY)
|
||||
# define QTNINEPATCHLIBSHARED_EXPORT Q_DECL_EXPORT
|
||||
#else
|
||||
# define QTNINEPATCHLIBSHARED_EXPORT Q_DECL_IMPORT
|
||||
#endif
|
||||
|
||||
#include <QImage>
|
||||
#include <QPixmap>
|
||||
#include <QPainter>
|
||||
#include <vector>
|
||||
|
||||
class QtNinePatch;
|
||||
|
||||
class QTNINEPATCHLIBSHARED_EXPORT QtNinePatch
|
||||
{
|
||||
|
||||
public:
|
||||
static QPixmap createPixmapFromNinePatchImage(const QImage &, int, int);
|
||||
};
|
||||
|
||||
#endif // QTNINEPATCH_H
|
|
@ -1,38 +0,0 @@
|
|||
#-------------------------------------------------
|
||||
#
|
||||
# Project created by QtCreator 2018-10-25T14:12:10
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
QT += core axcontainer gui
|
||||
|
||||
#greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
||||
TARGET = QtNinePatch
|
||||
TEMPLATE = lib
|
||||
CONFIG += release
|
||||
CONFIG += warn_off exceptions_off hide_symbols
|
||||
|
||||
#CONFIG += staticlib
|
||||
#CONFIG += dll static release
|
||||
|
||||
DESTDIR = build
|
||||
DLLDESTDIR = build
|
||||
|
||||
DEFINES += QTNINEPATCHLIB_LIBRARY
|
||||
|
||||
SOURCES += QtNinePatch.cpp
|
||||
|
||||
HEADERS += QtNinePatch.h
|
||||
|
||||
unix {
|
||||
target.path = /usr/lib
|
||||
INSTALLS += target
|
||||
}
|
||||
|
||||
DEFINES += _XKEYCHECK_H
|
||||
|
||||
INCLUDEPATH += .
|
||||
INCLUDEPATH += $$[QT_INSTALL_HEADERS]
|
||||
|
||||
LIBS += -L$$[QT_INSTALL_LIBS]
|
|
@ -1,202 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE QtCreatorProject>
|
||||
<!-- Written by QtCreator 3.5.1, 2018-10-26T00:09:02. -->
|
||||
<qtcreator>
|
||||
<data>
|
||||
<variable>EnvironmentId</variable>
|
||||
<value type="QByteArray">{52a31565-4664-45f3-a98d-2ef2ad3b26ae}</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||
<value type="int">0</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.EditorSettings</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
|
||||
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
|
||||
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
|
||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
|
||||
<value type="QString" key="language">Cpp</value>
|
||||
<valuemap type="QVariantMap" key="value">
|
||||
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
|
||||
<value type="QString" key="language">QmlJS</value>
|
||||
<valuemap type="QVariantMap" key="value">
|
||||
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
|
||||
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
|
||||
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
|
||||
<value type="int" key="EditorConfiguration.IndentSize">4</value>
|
||||
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
|
||||
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
|
||||
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
|
||||
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
|
||||
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
|
||||
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
|
||||
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
|
||||
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
|
||||
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
|
||||
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
||||
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
||||
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
|
||||
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
|
||||
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
||||
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
||||
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
|
||||
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.PluginSettings</variable>
|
||||
<valuemap type="QVariantMap"/>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Target.0</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.5.1 MSVC2010 32bit</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.5.1 MSVC2010 32bit</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.55.win32_msvc2010_kit</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">F:/Python/PyhtonTest/PyQt/QtNinePatch/build</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
|
||||
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
|
||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
|
||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清理</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">在本地部署</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
|
||||
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
|
||||
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
|
||||
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
|
||||
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
|
||||
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
|
||||
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
|
||||
<value type="int">0</value>
|
||||
<value type="int">1</value>
|
||||
<value type="int">2</value>
|
||||
<value type="int">3</value>
|
||||
<value type="int">4</value>
|
||||
<value type="int">5</value>
|
||||
<value type="int">6</value>
|
||||
<value type="int">7</value>
|
||||
<value type="int">8</value>
|
||||
<value type="int">9</value>
|
||||
<value type="int">10</value>
|
||||
<value type="int">11</value>
|
||||
<value type="int">12</value>
|
||||
<value type="int">13</value>
|
||||
<value type="int">14</value>
|
||||
</valuelist>
|
||||
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
||||
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||
<value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Arguments"></value>
|
||||
<value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value>
|
||||
<value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.WorkingDirectory">%{buildDir}</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">自定义执行档</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
|
||||
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.TargetCount</variable>
|
||||
<value type="int">1</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
||||
<value type="int">18</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>Version</variable>
|
||||
<value type="int">18</value>
|
||||
</data>
|
||||
</qtcreator>
|
|
@ -1,14 +0,0 @@
|
|||
%Module QtNinePatch
|
||||
%Import QtCore/QtCoremod.sip
|
||||
%Import QtGui/QtGuimod.sip
|
||||
|
||||
class QtNinePatch
|
||||
{
|
||||
%TypeHeaderCode
|
||||
#include "../QtNinePatch.h"
|
||||
%End
|
||||
|
||||
public:
|
||||
static QPixmap createPixmapFromNinePatchImage(const QImage &, int, int);
|
||||
|
||||
};
|
|
@ -1,87 +0,0 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- encoding:utf-8 -*-
|
||||
|
||||
import os
|
||||
import shutil
|
||||
|
||||
import PyQt5
|
||||
from PyQt5.QtCore import PYQT_CONFIGURATION
|
||||
import sipconfig
|
||||
|
||||
|
||||
# 模块名
|
||||
moduleName = 'QtNinePatch'
|
||||
|
||||
# The name of the SIP build file generated by SIP and used by the build
|
||||
# system.
|
||||
build_file = '%s.sbf' % moduleName
|
||||
|
||||
# Get the SIP configuration information.
|
||||
config = sipconfig.Configuration()
|
||||
# pyqt5.5 + python34 + msvc 2010
|
||||
config.platform = "win32-msvc2010"
|
||||
qt_path = 'D:/soft/Qt/Qt5.5.1/5.5/msvc2010'
|
||||
print('QT_DIR: %s' % qt_path)
|
||||
|
||||
pyqtpath = os.path.dirname(PyQt5.__file__)
|
||||
print('PyQt5 path: ', pyqtpath)
|
||||
|
||||
config.sip_bin = os.path.join(pyqtpath, 'sip.exe')
|
||||
config.default_sip_dir = os.path.join(pyqtpath, 'sip')
|
||||
|
||||
sip_cmd = ' '.join([
|
||||
config.sip_bin,
|
||||
'-c', "build",
|
||||
'-b', "build/" + build_file,
|
||||
'-I', config.default_sip_dir + '/PyQt5',
|
||||
PYQT_CONFIGURATION.get('sip_flags', ''),
|
||||
'%s.sip' % moduleName,
|
||||
])
|
||||
|
||||
os.makedirs('build', exist_ok=True)
|
||||
print(sip_cmd)
|
||||
os.system(sip_cmd)
|
||||
|
||||
|
||||
# Create the Makefile.
|
||||
makefile = sipconfig.SIPModuleMakefile(
|
||||
config, build_file, dir='build'
|
||||
)
|
||||
|
||||
# Add the library we are wrapping. The name doesn't include any platform
|
||||
# specific prefixes or extensions (e.g. the 'lib' prefix on UNIX, or the
|
||||
# '.dll' extension on Windows).
|
||||
|
||||
# 添加头文件路径
|
||||
makefile.extra_include_dirs = [
|
||||
'../', '.',
|
||||
os.path.join(qt_path, 'include'),
|
||||
os.path.join(qt_path, 'include', 'QtCore'),
|
||||
os.path.join(qt_path, 'include', 'QtGui')
|
||||
]
|
||||
|
||||
# 添加用C++编译的库文件路径
|
||||
makefile.extra_lib_dirs = [
|
||||
os.path.abspath('../build'),
|
||||
os.path.join(qt_path, 'lib'),
|
||||
]
|
||||
print(makefile.extra_lib_dirs)
|
||||
|
||||
makefile.extra_libs = [
|
||||
moduleName,
|
||||
'Qt5Core',
|
||||
'Qt5Gui'
|
||||
]
|
||||
print(makefile.extra_libs)
|
||||
|
||||
# Generate the Makefile itself.
|
||||
makefile.generate()
|
||||
|
||||
shutil.copy('../build/%s.dll' % moduleName, '%s.dll' % moduleName)
|
||||
|
||||
os.chdir('build')
|
||||
os.system('nmake')
|
||||
|
||||
os.chdir('../')
|
||||
shutil.copy('build/%s.pyd' % moduleName, '%s.pyd' % moduleName)
|
||||
print('ok')
|
|
@ -1,361 +0,0 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
Created on 2018年10月25日
|
||||
@author: Irony
|
||||
@site: https://pyqt5.com https://github.com/892768447
|
||||
@email: 892768447@qq.com
|
||||
@file: NinePatch
|
||||
@description:
|
||||
"""
|
||||
from math import fabs
|
||||
|
||||
from PyQt5.QtCore import QRect
|
||||
from PyQt5.QtGui import QImage, QColor, QPainter, qRed, qGreen, qBlue, qAlpha
|
||||
|
||||
|
||||
__Author__ = """By: Irony
|
||||
QQ: 892768447
|
||||
Email: 892768447@qq.com"""
|
||||
__Copyright__ = "Copyright (c) 2018 Irony"
|
||||
__Version__ = "Version 1.0"
|
||||
|
||||
|
||||
class _Exception(Exception):
|
||||
|
||||
def __init__(self, imgW, imgH):
|
||||
self.imgW = imgW
|
||||
self.imgH = imgH
|
||||
|
||||
|
||||
class NinePatchException(Exception):
|
||||
|
||||
def __str__(self):
|
||||
return "Nine patch error"
|
||||
|
||||
|
||||
class ExceptionIncorrectWidth(_Exception):
|
||||
|
||||
def __str__(self):
|
||||
return "Input incorrect width. Mimimum width = :{imgW}".format(imgW=self.imgW)
|
||||
|
||||
|
||||
class ExceptionIncorrectWidthAndHeight(_Exception):
|
||||
|
||||
def __str__(self):
|
||||
return "Input incorrect width width and height. Minimum width = :{imgW} . Minimum height = :{imgH}".format(imgW=self.imgW, imgH=self.imgH)
|
||||
|
||||
|
||||
class ExceptionIncorrectHeight(_Exception):
|
||||
|
||||
def __str__(self):
|
||||
return "Input incorrect height. Minimum height = :{imgW}".format(imgW=self.imgW)
|
||||
|
||||
|
||||
class ExceptionNot9Patch(Exception):
|
||||
|
||||
def __str__(self):
|
||||
return "It is not nine patch image"
|
||||
|
||||
|
||||
class NinePatch:
|
||||
|
||||
def __init__(self, fileName):
|
||||
self.CachedImage = None # 缓存图片
|
||||
self.OldWidth = -1
|
||||
self.OldHeight = -1
|
||||
self.ResizeDistancesX = []
|
||||
self.ResizeDistancesY = [] # [(int,int)]数组
|
||||
self.setImage(fileName)
|
||||
|
||||
def width(self):
|
||||
return self.Image.width()
|
||||
|
||||
def height(self):
|
||||
return self.Image.height()
|
||||
|
||||
def setImage(self, fileName):
|
||||
self.Image = QImage(fileName)
|
||||
if self.Image.isNull():
|
||||
return
|
||||
|
||||
self.ContentArea = self.GetContentArea()
|
||||
self.GetResizeArea()
|
||||
if not self.ResizeDistancesX or not self.ResizeDistancesY:
|
||||
raise ExceptionNot9Patch
|
||||
|
||||
def __del__(self):
|
||||
if hasattr(self, "CachedImage"):
|
||||
del self.CachedImage
|
||||
if hasattr(self, "Image"):
|
||||
del self.Image
|
||||
|
||||
def Draw(self, painter, x, y):
|
||||
painter.drawImage(x, y, self.CachedImage)
|
||||
|
||||
def SetImageSize(self, width, height):
|
||||
resizeWidth = 0
|
||||
resizeHeight = 0
|
||||
for i in range(len(self.ResizeDistancesX)):
|
||||
resizeWidth += self.ResizeDistancesX[i][1]
|
||||
|
||||
for i in range(len(self.ResizeDistancesY)):
|
||||
resizeHeight += self.ResizeDistancesY[i][1]
|
||||
|
||||
if (width < (self.Image.width() - 2 - resizeWidth) and height < (self.Image.height() - 2 - resizeHeight)):
|
||||
raise ExceptionIncorrectWidthAndHeight(
|
||||
self.Image.width() - 2, self.Image.height() - 2)
|
||||
|
||||
if (width < (self.Image.width() - 2 - resizeWidth)):
|
||||
raise ExceptionIncorrectWidth(
|
||||
self.Image.width() - 2, self.Image.height() - 2)
|
||||
|
||||
if (height < (self.Image.height() - 2 - resizeHeight)):
|
||||
raise ExceptionIncorrectHeight(
|
||||
self.Image.width() - 2, self.Image.height() - 2)
|
||||
|
||||
if (width != self.OldWidth or height != self.OldHeight):
|
||||
self.OldWidth = width
|
||||
self.OldHeight = height
|
||||
self.UpdateCachedImage(width, height)
|
||||
|
||||
@classmethod
|
||||
def GetContentAreaRect(self, width, height):
|
||||
# print("GetContentAreaRect : width:%d height:%d" % (width, height))
|
||||
return (QRect(self.ContentArea.x(), self.ContentArea.y(), (width - (self.Image.width() - 2 - self.ContentArea.width())),
|
||||
(height - (self.Image.height() - 2 - self.ContentArea.height()))))
|
||||
|
||||
def DrawScaledPart(self, oldRect, newRect, painter):
|
||||
if (newRect.width() and newRect.height()):
|
||||
# print("DrawScaledPart newRect.width:%d newRect.height:%d" % (newRect.width() , newRect.height()))
|
||||
img = self.Image.copy(oldRect)
|
||||
img = img.scaled(newRect.width(), newRect.height())
|
||||
painter.drawImage(newRect.x(), newRect.y(), img,
|
||||
0, 0, newRect.width(), newRect.height())
|
||||
|
||||
def DrawConstPart(self, oldRect, newRect, painter):
|
||||
# print("DrawConstPart oldRect:{oldRect} newRect:{newRect}".format(oldRect = oldRect, newRect = newRect))
|
||||
img = self.Image.copy(oldRect)
|
||||
painter.drawImage(newRect.x(), newRect.y(), img, 0,
|
||||
0, newRect.width(), newRect.height())
|
||||
|
||||
def IsColorBlack(self, color):
|
||||
r = qRed(color)
|
||||
g = qGreen(color)
|
||||
b = qBlue(color)
|
||||
a = qAlpha(color)
|
||||
if a < 128:
|
||||
return False
|
||||
return r < 128 and g < 128 and b < 128
|
||||
|
||||
def GetContentArea(self):
|
||||
j = self.Image.height() - 1
|
||||
left = 0
|
||||
right = 0
|
||||
for i in range(self.Image.width()):
|
||||
if (self.IsColorBlack(self.Image.pixel(i, j)) and left == 0):
|
||||
left = i
|
||||
else:
|
||||
if (left != 0 and self.IsColorBlack(self.Image.pixel(i, j))):
|
||||
right = i
|
||||
|
||||
if (left and not right):
|
||||
right = left
|
||||
|
||||
left -= 1
|
||||
i = self.Image.width() - 1
|
||||
top = 0
|
||||
bot = 0
|
||||
|
||||
for j in range(self.Image.height()):
|
||||
if (self.IsColorBlack(self.Image.pixel(i, j)) and top == 0):
|
||||
top = j
|
||||
else:
|
||||
if (top and self.IsColorBlack(self.Image.pixel(i, j))):
|
||||
bot = j
|
||||
|
||||
if (top and not bot):
|
||||
bot = top
|
||||
top -= 1
|
||||
# print("GetContentArea left: %d top:%d %d %d" % (left, top, right - left, bot - top))
|
||||
return (QRect(left, top, right - left, bot - top))
|
||||
|
||||
def GetResizeArea(self):
|
||||
j = 0
|
||||
left = 0
|
||||
right = 0
|
||||
|
||||
for i in range(self.Image.width()):
|
||||
if (self.IsColorBlack(self.Image.pixel(i, j)) and left == 0):
|
||||
left = i
|
||||
if (left and self.IsColorBlack(self.Image.pixel(i, j)) and not self.IsColorBlack(self.Image.pixel(i + 1, j))):
|
||||
right = i
|
||||
left -= 1
|
||||
# print("ResizeDistancesX.append ", left, " ", right - left)
|
||||
self.ResizeDistancesX.append((left, right - left))
|
||||
right = 0
|
||||
left = 0
|
||||
i = 0
|
||||
top = 0
|
||||
bot = 0
|
||||
|
||||
for j in range(self.Image.height()):
|
||||
if (self.IsColorBlack(self.Image.pixel(i, j)) and top == 0):
|
||||
top = j
|
||||
|
||||
if (top and self.IsColorBlack(self.Image.pixel(i, j)) and not self.IsColorBlack(self.Image.pixel(i, j + 1))):
|
||||
bot = j
|
||||
top -= 1
|
||||
# print("ResizeDistancesY.append ", top, " ", bot - top)
|
||||
self.ResizeDistancesY.append((top, bot - top))
|
||||
top = 0
|
||||
bot = 0
|
||||
# print(self.ResizeDistancesX, len(self.ResizeDistancesX))
|
||||
# print(self.ResizeDistancesY, len(self.ResizeDistancesY))
|
||||
|
||||
def GetFactor(self, width, height, factorX, factorY):
|
||||
topResize = width - (self.Image.width() - 2)
|
||||
leftResize = height - (self.Image.height() - 2)
|
||||
for i in range(len(self.ResizeDistancesX)):
|
||||
topResize += self.ResizeDistancesX[i][1]
|
||||
factorX += self.ResizeDistancesX[i][1]
|
||||
|
||||
for i in range(len(self.ResizeDistancesY)):
|
||||
leftResize += self.ResizeDistancesY[i][1]
|
||||
factorY += self.ResizeDistancesY[i][1]
|
||||
|
||||
factorX = float(topResize) / factorX
|
||||
factorY = float(leftResize) / factorY
|
||||
return factorX, factorY
|
||||
|
||||
def UpdateCachedImage(self, width, height):
|
||||
# print("UpdateCachedImage: ", width, " " , height)
|
||||
self.CachedImage = QImage(
|
||||
width, height, QImage.Format_ARGB32_Premultiplied)
|
||||
self.CachedImage.fill(QColor(0, 0, 0, 0))
|
||||
painter = QPainter(self.CachedImage)
|
||||
factorX = 0.0
|
||||
factorY = 0.0
|
||||
factorX, factorY = self.GetFactor(width, height, factorX, factorY)
|
||||
# print("after GetFactor: ", width, height, factorX, factorY)
|
||||
lostX = 0.0
|
||||
lostY = 0.0
|
||||
x1 = 0 # for image parts X
|
||||
y1 = 0 # for image parts Y
|
||||
# widthResize # width for image parts
|
||||
# heightResize # height for image parts
|
||||
resizeX = 0
|
||||
resizeY = 0
|
||||
offsetX = 0
|
||||
offsetY = 0
|
||||
for i in range(len(self.ResizeDistancesX)):
|
||||
y1 = 0
|
||||
offsetY = 0
|
||||
lostY = 0.0
|
||||
for j in range(len(self.ResizeDistancesY)):
|
||||
widthResize = self.ResizeDistancesX[i][0] - x1
|
||||
heightResize = self.ResizeDistancesY[j][0] - y1
|
||||
|
||||
self.DrawConstPart(QRect(x1 + 1, y1 + 1, widthResize, heightResize),
|
||||
QRect(x1 + offsetX, y1 + offsetY, widthResize, heightResize), painter)
|
||||
|
||||
y2 = self.ResizeDistancesY[j][0]
|
||||
heightResize = self.ResizeDistancesY[j][1]
|
||||
resizeY = round(float(heightResize) * factorY)
|
||||
lostY += resizeY - (float(heightResize) * factorY)
|
||||
if (fabs(lostY) >= 1.0):
|
||||
if (lostY < 0):
|
||||
resizeY += 1
|
||||
lostY += 1.0
|
||||
else:
|
||||
resizeY -= 1
|
||||
lostY -= 1.0
|
||||
|
||||
self.DrawScaledPart(QRect(x1 + 1, y2 + 1, widthResize, heightResize),
|
||||
QRect(x1 + offsetX, y2 + offsetY, widthResize, resizeY), painter)
|
||||
|
||||
x2 = self.ResizeDistancesX[i][0]
|
||||
widthResize = self.ResizeDistancesX[i][1]
|
||||
heightResize = self.ResizeDistancesY[j][0] - y1
|
||||
resizeX = round(float(widthResize) * factorX)
|
||||
lostX += resizeX - (float(widthResize) * factorX)
|
||||
if (fabs(lostX) >= 1.0):
|
||||
if (lostX < 0):
|
||||
resizeX += 1
|
||||
lostX += 1.0
|
||||
else:
|
||||
resizeX -= 1
|
||||
lostX -= 1.0
|
||||
|
||||
self.DrawScaledPart(QRect(x2 + 1, y1 + 1, widthResize, heightResize),
|
||||
QRect(x2 + offsetX, y1 + offsetY, resizeX, heightResize), painter)
|
||||
|
||||
heightResize = self.ResizeDistancesY[j][1]
|
||||
self.DrawScaledPart(QRect(x2 + 1, y2 + 1, widthResize, heightResize),
|
||||
QRect(x2 + offsetX, y2 + offsetY, resizeX, resizeY), painter)
|
||||
|
||||
y1 = self.ResizeDistancesY[j][0] + self.ResizeDistancesY[j][1]
|
||||
offsetY += resizeY - self.ResizeDistancesY[j][1]
|
||||
|
||||
x1 = self.ResizeDistancesX[i][0] + self.ResizeDistancesX[i][1]
|
||||
offsetX += resizeX - self.ResizeDistancesX[i][1]
|
||||
|
||||
x1 = self.ResizeDistancesX[len(
|
||||
self.ResizeDistancesX) - 1][0] + self.ResizeDistancesX[len(self.ResizeDistancesX) - 1][1]
|
||||
widthResize = self.Image.width() - x1 - 2
|
||||
y1 = 0
|
||||
lostX = 0.0
|
||||
lostY = 0.0
|
||||
offsetY = 0
|
||||
for i in range(len(self.ResizeDistancesY)):
|
||||
self.DrawConstPart(QRect(x1 + 1, y1 + 1, widthResize, self.ResizeDistancesY[i][0] - y1),
|
||||
QRect(x1 + offsetX, y1 + offsetY, widthResize, self.ResizeDistancesY[i][0] - y1), painter)
|
||||
y1 = self.ResizeDistancesY[i][0]
|
||||
resizeY = round(float(self.ResizeDistancesY[i][1]) * factorY)
|
||||
lostY += resizeY - (float(self.ResizeDistancesY[i][1]) * factorY)
|
||||
if (fabs(lostY) >= 1.0):
|
||||
if (lostY < 0):
|
||||
resizeY += 1
|
||||
lostY += 1.0
|
||||
else:
|
||||
resizeY -= 1
|
||||
lostY -= 1.0
|
||||
|
||||
self.DrawScaledPart(QRect(x1 + 1, y1 + 1, widthResize, self.ResizeDistancesY[i][1]),
|
||||
QRect(x1 + offsetX, y1 + offsetY, widthResize, resizeY), painter)
|
||||
y1 = self.ResizeDistancesY[i][0] + self.ResizeDistancesY[i][1]
|
||||
offsetY += resizeY - self.ResizeDistancesY[i][1]
|
||||
|
||||
y1 = self.ResizeDistancesY[len(
|
||||
self.ResizeDistancesY) - 1][0] + self.ResizeDistancesY[len(self.ResizeDistancesY) - 1][1]
|
||||
heightResize = self.Image.height() - y1 - 2
|
||||
x1 = 0
|
||||
offsetX = 0
|
||||
for i in range(len(self.ResizeDistancesX)):
|
||||
self.DrawConstPart(QRect(x1 + 1, y1 + 1, self.ResizeDistancesX[i][0] - x1, heightResize),
|
||||
QRect(x1 + offsetX, y1 + offsetY, self.ResizeDistancesX[i][0] - x1, heightResize), painter)
|
||||
x1 = self.ResizeDistancesX[i][0]
|
||||
resizeX = round(float(self.ResizeDistancesX[i][1]) * factorX)
|
||||
lostX += resizeX - (float(self.ResizeDistancesX[i][1]) * factorX)
|
||||
if (fabs(lostX) >= 1.0):
|
||||
if (lostX < 0):
|
||||
resizeX += 1
|
||||
lostX += 1.0
|
||||
else:
|
||||
resizeX -= 1
|
||||
lostX += 1.0
|
||||
|
||||
self.DrawScaledPart(QRect(x1 + 1, y1 + 1, self.ResizeDistancesX[i][1], heightResize),
|
||||
QRect(x1 + offsetX, y1 + offsetY, resizeX, heightResize), painter)
|
||||
x1 = self.ResizeDistancesX[i][0] + self.ResizeDistancesX[i][1]
|
||||
offsetX += resizeX - self.ResizeDistancesX[i][1]
|
||||
|
||||
x1 = self.ResizeDistancesX[len(
|
||||
self.ResizeDistancesX) - 1][0] + self.ResizeDistancesX[len(self.ResizeDistancesX) - 1][1]
|
||||
widthResize = self.Image.width() - x1 - 2
|
||||
y1 = self.ResizeDistancesY[len(
|
||||
self.ResizeDistancesY) - 1][0] + self.ResizeDistancesY[len(self.ResizeDistancesY) - 1][1]
|
||||
heightResize = self.Image.height() - y1 - 2
|
||||
self.DrawConstPart(QRect(x1 + 1, y1 + 1, widthResize, heightResize),
|
||||
QRect(x1 + offsetX, y1 + offsetY, widthResize, heightResize), painter)
|
Before Width: | Height: | Size: 6.4 KiB |
|
@ -1,140 +0,0 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
Created on 2018年10月25日
|
||||
@author: Irony
|
||||
@site: https://pyqt5.com https://github.com/892768447
|
||||
@email: 892768447@qq.com
|
||||
@file: QtNinePatch
|
||||
@description:
|
||||
"""
|
||||
from math import floor
|
||||
|
||||
from PyQt5.QtCore import Qt, QRect
|
||||
from PyQt5.QtGui import qAlpha, QPixmap, QPainter
|
||||
|
||||
|
||||
__Author__ = """By: Irony
|
||||
QQ: 892768447
|
||||
Email: 892768447@qq.com"""
|
||||
__Copyright__ = "Copyright (c) 2018 Irony"
|
||||
__Version__ = "Version 1.0"
|
||||
|
||||
|
||||
class Part:
|
||||
|
||||
def __init__(self, pos=0, length=0, stretchable=False):
|
||||
self.pos = pos
|
||||
self.length = length
|
||||
self.stretchable = stretchable
|
||||
|
||||
|
||||
def isStretchableMarker(pixel):
|
||||
return (qAlpha(pixel) >> 7) & 1
|
||||
|
||||
|
||||
def resize9patch(image, dw, dh):
|
||||
sw = image.width()
|
||||
sh = image.height()
|
||||
if sw > 2 and sh > 2 and dw > 0 and dh > 0:
|
||||
pixmap = QPixmap(dw, dh)
|
||||
pixmap.fill(Qt.transparent)
|
||||
pr = QPainter(pixmap)
|
||||
pr.setRenderHint(QPainter.Antialiasing)
|
||||
pr.setRenderHint(QPainter.SmoothPixmapTransform)
|
||||
|
||||
horz = []
|
||||
vert = []
|
||||
horz_stretch = 0
|
||||
vert_stretch = 0
|
||||
|
||||
pos = 0
|
||||
last = image.pixel(1, 0)
|
||||
for x in range(1, sw - 1):
|
||||
nextP = image.pixel(x + 1, 0)
|
||||
if isStretchableMarker(last) != isStretchableMarker(nextP) or x == sw - 2:
|
||||
stretchable = isStretchableMarker(last)
|
||||
length = x - pos
|
||||
horz.append(Part(pos, length, stretchable))
|
||||
if stretchable:
|
||||
horz_stretch += length
|
||||
last = nextP
|
||||
pos = x
|
||||
pos = 0
|
||||
last = image.pixel(0, 1)
|
||||
for y in range(1, sh - 1):
|
||||
nextP = image.pixel(0, y + 1)
|
||||
if isStretchableMarker(last) != isStretchableMarker(nextP) or y == sh - 2:
|
||||
stretchable = isStretchableMarker(last)
|
||||
length = y - pos
|
||||
vert.append(Part(pos, length, stretchable))
|
||||
if stretchable:
|
||||
vert_stretch += length
|
||||
last = nextP
|
||||
pos = y
|
||||
|
||||
horz_mul = 0
|
||||
vert_mul = 0
|
||||
if horz_stretch > 0:
|
||||
horz_mul = float((dw - (sw - 2 - horz_stretch)) / horz_stretch)
|
||||
if vert_stretch > 0:
|
||||
vert_mul = float((dh - (sh - 2 - vert_stretch)) / vert_stretch)
|
||||
dy0 = 0
|
||||
dy1 = 0
|
||||
vstretch = 0
|
||||
len_vert = len(vert)
|
||||
len_horz = len(horz)
|
||||
for i in range(len_vert):
|
||||
sy0 = vert[i].pos
|
||||
sy1 = vert[i].pos + vert[i].length
|
||||
if i + 1 == len_vert:
|
||||
dy1 = dh
|
||||
elif vert[i].stretchable:
|
||||
vstretch += float(vert[i].length * vert_mul)
|
||||
s = floor(vstretch)
|
||||
vstretch -= s
|
||||
dy1 += int(s)
|
||||
else:
|
||||
dy1 += vert[i].length
|
||||
dx0 = 0
|
||||
dx1 = 0
|
||||
hstretch = 0
|
||||
for j in range(len_horz):
|
||||
sx0 = horz[j].pos
|
||||
sx1 = horz[j].pos + horz[j].length
|
||||
if j + 1 == len_horz:
|
||||
dx1 = dw
|
||||
elif horz[j].stretchable:
|
||||
hstretch += float(horz[j].length * horz_mul)
|
||||
s = floor(hstretch)
|
||||
hstretch -= s
|
||||
dx1 += int(s)
|
||||
else:
|
||||
dx1 += horz[j].length
|
||||
pr.drawImage(QRect(dx0, dy0, dx1 - dx0, dy1 - dy0),
|
||||
image, QRect(sx0 + 1, sy0 + 1, sx1 - sx0, sy1 - sy0))
|
||||
dx0 = dx1
|
||||
dy0 = dy1
|
||||
return pixmap
|
||||
return QPixmap()
|
||||
|
||||
|
||||
def createPixmapFromNinePatchImage(image, dw, dh):
|
||||
w = dw
|
||||
h = dh
|
||||
if w < image.width() or h < image.height(): # shrink
|
||||
w = max(image.width(), w)
|
||||
h = max(image.height(), h)
|
||||
pm1 = resize9patch(image, w, h)
|
||||
if pm1.isNull():
|
||||
return QPixmap()
|
||||
pm2 = QPixmap(dw, dh)
|
||||
pm2.fill(Qt.transparent)
|
||||
pr = QPainter(pm2)
|
||||
pr.setRenderHint(QPainter.Antialiasing)
|
||||
pr.setRenderHint(QPainter.SmoothPixmapTransform)
|
||||
pr.drawPixmap(0, 0, dw, dh, pm1, 0, 0, w, h)
|
||||
return pm2
|
||||
else:
|
||||
return resize9patch(image, dw, dh)
|
Before Width: | Height: | Size: 6.4 KiB |