Ejemplo n.º 1
0
class PageMetrics():

	m_pageFormat = QPageSize.PageSizeId()
	m_mmPageSize = QSizeF()
	m_mmPageMargins = QMarginsF()
	m_pxPageSize = QSizeF()
	m_pxPageMargins = QMarginsF()

	def __init__(self):
		super(PageMetrics, self).__init__()

	def mmToInches(self, mm):
		return mm * 0.039370147

	def mmToPx(self, _mm, _x):
		return self.mmToInches(_mm) * (qApp.desktop().logicalDpiX() if _x else qApp.desktop().logicalDpiY())

	def pageSizeIdFromString(self, _from):
		result = QPageSize.A4

		if (_from == "A0"):
			 result = QPageSize.A0
		elif (_from == "A1"):
			 result = QPageSize.A1
		elif (_from == "A2"):
			 result = QPageSize.A2
		elif (_from == "A3"):
			 result = QPageSize.A3
		elif (_from == "A4"):
			 result = QPageSize.A4
		elif (_from == "A5"):
			 result = QPageSize.A5
		elif (_from == "A6"):
			 result = QPageSize.A6
		else:
			Q_ASSERT_X(0, Q_FUNC_INFO, qPrintable("Undefined page size: " + _from))

		return result

	def stringFromPageSizeId(self, _pageSize):
		result = ""

		if(_pageSize == QPageSize.A0):
			result = "A0"
		elif (_pageSize == QPageSize.A1):
			result = "A1"
		elif (_pageSize == QPageSize.A2):
			result = "A2"
		elif (_pageSize == QPageSize.A3):
			result = "A3"
		elif (_pageSize == QPageSize.A4):
			result = "A4"
		elif (_pageSize == QPageSize.A5):
			result = "A5"
		elif (_pageSize == QPageSize.A6):
			result = "A6"
		else:
			Q_ASSERT_X(0, Q_FUNC_INFO, qPrintable("Undefined page size: " + QString.number(_pageSize)))
			
		return result

	def update(self, _pageFormat, _mmPageMargins=QMarginsF()):
		self.m_pageFormat = _pageFormat

		self.m_mmPageSize = QPageSize(self.m_pageFormat).rect(QPageSize.Millimeter).size()
		self.m_mmPageMargins = _mmPageMargins

		# Calculate values in pixels
		x = True; y = False
		self.m_pxPageSize = QSizeF(self.mmToPx(self.m_mmPageSize.width(), x), self.mmToPx(self.m_mmPageSize.height(), y))
		self.m_pxPageMargins = QMarginsF(self.mmToPx(self.m_mmPageMargins.left(), x), self.mmToPx(self.m_mmPageMargins.top(), y), self.mmToPx(self.m_mmPageMargins.right(), x), self.mmToPx(self.m_mmPageMargins.bottom(), y))

	def pageFormat(self):
		return self.m_pageFormat

	def mmPageSize(self):
		return self.m_mmPageSize

	def mmPageMargins(self):
		return self.m_mmPageMargins

	def pxPageSize(self):
		return QSizeF(self.m_pxPageSize.width(), self.m_pxPageSize.height())

	def pxPageMargins(self):
		return QMarginsF(self.m_pxPageMargins.left(), self.m_pxPageMargins.top(), self.m_pxPageMargins.right(), self.m_pxPageMargins.bottom())
Ejemplo n.º 2
0
def serialize_QSizeF(obj: QSizeF) -> dict:
    return {"width": obj.width(), "height": obj.height()}