towards document type
This commit is contained in:
116
pyqtUsrObj.py
116
pyqtUsrObj.py
@@ -18,6 +18,7 @@ from pyqtgraph.Qt import QtCore, QtGui
|
||||
import numpy as np
|
||||
from PyQt5.QtGui import QPolygon,QPolygonF
|
||||
from PyQt5.QtCore import Qt,QPointF,QLineF
|
||||
import yaml
|
||||
|
||||
def obj_tree(obj,p=''):
|
||||
obj_info(obj,p)
|
||||
@@ -159,6 +160,24 @@ class Fiducial(pg.ROI):
|
||||
p.setTransform(tr)
|
||||
|
||||
|
||||
def __repr__(self):
|
||||
s=f'{self.__class__.__name__}:(pos:{tuple(self.pos())}, size:{tuple(self.size())}, xyz:{self._xyz}}}'
|
||||
return s
|
||||
|
||||
@staticmethod
|
||||
def yaml_repr(dumper, data):
|
||||
m={'pos':(data.pos()),'size':(data.size()),'xyz':(map(float,data._xyz))}
|
||||
return dumper.represent_mapping(u'!Fiducial', m)
|
||||
|
||||
@staticmethod
|
||||
def yaml_cnstr(loader, node):
|
||||
m=loader.construct_mapping(node)
|
||||
return Fiducial(**m)
|
||||
|
||||
yaml.add_representer(Fiducial, Fiducial.yaml_repr)
|
||||
yaml.add_constructor(u'!Fiducial', Fiducial.yaml_cnstr)
|
||||
|
||||
|
||||
class Grid(pg.ROI):
|
||||
'''a grid'''
|
||||
|
||||
@@ -224,21 +243,24 @@ class Grid(pg.ROI):
|
||||
def __repr__(self):
|
||||
s=f'{self.__class__.__name__}:(pos:{tuple(self.pos())}, size:{tuple(self.size())}, cnt:{self._cnt}, ficucialScale:{self._fidScl}}}'
|
||||
return s
|
||||
import yaml
|
||||
def yaml_repr_Grid(dumper, data):
|
||||
#s=f'{{"pos":{tuple(data.pos())}, "size":{tuple(data.size())}, "cnt":{data._cnt}, "ficucialScale":{data._fidScl}}}'
|
||||
#return dumper.represent_scalar(u'!Grid', s)
|
||||
m={'pos':tuple(data.pos()),'size':tuple(data.size()),'cnt':data._cnt, 'ficucialScale':data._fidScl}
|
||||
return dumper.represent_mapping(u'!Grid', m)
|
||||
yaml.add_representer(Grid, yaml_repr_Grid)
|
||||
|
||||
def yaml_cnstr_Grid(loader, node):
|
||||
#value = loader.construct_scalar(node)
|
||||
#kwargs=eval(value)
|
||||
#return Grid(**kwargs)
|
||||
m = loader.construct_mapping(node)
|
||||
return Grid(**m)
|
||||
yaml.add_constructor(u'!Grid', yaml_cnstr_Grid)
|
||||
@staticmethod
|
||||
def yaml_repr(dumper, data):
|
||||
#s=f'{{"pos":{tuple(data.pos())}, "size":{tuple(data.size())}, "cnt":{data._cnt}, "ficucialScale":{data._fidScl}}}'
|
||||
#return dumper.represent_scalar(u'!Grid', s)
|
||||
m={'pos':list(data.pos()),'size':list(data.size()),'cnt':list(data._cnt), 'ficucialScale':data._fidScl}
|
||||
return dumper.represent_mapping(u'!Grid', m)
|
||||
|
||||
@staticmethod
|
||||
def yaml_cnstr(loader, node):
|
||||
# value = loader.construct_scalar(node)
|
||||
# kwargs=eval(value)
|
||||
# return Grid(**kwargs)
|
||||
m=loader.construct_mapping(node)
|
||||
return Grid(**m)
|
||||
|
||||
yaml.add_representer(Grid, Grid.yaml_repr)
|
||||
yaml.add_constructor(u'!Grid', Grid.yaml_cnstr)
|
||||
|
||||
|
||||
class Path(pg.ROI):
|
||||
@@ -302,6 +324,24 @@ class Path(pg.ROI):
|
||||
lv=QLineF(x, y-5*ry, x, y+5*ry)
|
||||
p.drawLines(lh,lv)
|
||||
|
||||
def __repr__(self):
|
||||
s=f'{self.__class__.__name__}:(pos:{tuple(self.pos())}, size:{tuple(self.size())}, cnt:{self._cnt}, ficucialScale:{self._fidScl}}}'
|
||||
return s
|
||||
|
||||
@staticmethod
|
||||
def yaml_repr(dumper, data):
|
||||
m={'pos':list(data.pos()),'size':list(data.size()),'cnt':data._cnt, 'ficucialScale':data._fidScl}
|
||||
return dumper.represent_mapping(u'!Path', m)
|
||||
|
||||
@staticmethod
|
||||
def yaml_cnstr(loader, node):
|
||||
m=loader.construct_mapping(node)
|
||||
return Path(**m)
|
||||
|
||||
yaml.add_representer(Path, Path.yaml_repr)
|
||||
yaml.add_constructor(u'!Path', Path.yaml_cnstr)
|
||||
|
||||
|
||||
class FixTargetFrame(pg.ROI):
|
||||
'''fixed target frame'''
|
||||
tpl={
|
||||
@@ -345,10 +385,13 @@ class FixTargetFrame(pg.ROI):
|
||||
}
|
||||
}
|
||||
|
||||
def __init__( self, pos=(0,0), size=(100,100), tpl='test', **kargs):
|
||||
pg.ROI.__init__(self, pos, size, **kargs)
|
||||
def __init__( self, pos=(0,0), size=(100,100), tpl='test', dscr=None, **kwargs):
|
||||
pg.ROI.__init__(self, pos, size, **kwargs)
|
||||
#fiducial type 0: 5 squares with pitch 120 um
|
||||
self._dscr=FixTargetFrame.tpl[tpl]
|
||||
if dscr is not None:
|
||||
self._dscr=dscr
|
||||
else:
|
||||
self._dscr=FixTargetFrame.tpl[tpl]
|
||||
|
||||
self.addScaleHandle([1, 1], [0, 0])
|
||||
self.addScaleHandle([0, 0], [1, 1])
|
||||
@@ -404,6 +447,25 @@ class FixTargetFrame(pg.ROI):
|
||||
else:
|
||||
assert('unknown feducial type')
|
||||
|
||||
def __repr__(self):
|
||||
s=f'{self.__class__.__name__}:(pos:{tuple(self.pos())}, size:{tuple(self.size())}, dscr:{self._dscr}}}'
|
||||
return s
|
||||
|
||||
@staticmethod
|
||||
def yaml_repr(dumper, data):
|
||||
#m={'pos':list(data.pos()),'size':list(data.size()),'dscr':repr(data._dscr)}
|
||||
m={'pos':list(data.pos()),'size':list(data.size())}
|
||||
return dumper.represent_mapping(u'!FixTargetFrame', m)
|
||||
|
||||
@staticmethod
|
||||
def yaml_cnstr(loader, node):
|
||||
m=loader.construct_mapping(node)
|
||||
#m['dscr']=eval(m['dscr'])
|
||||
return FixTargetFrame(**m)
|
||||
|
||||
yaml.add_representer(FixTargetFrame, FixTargetFrame.yaml_repr)
|
||||
yaml.add_constructor(u'!FixTargetFrame', FixTargetFrame.yaml_cnstr)
|
||||
|
||||
|
||||
|
||||
class TxtROI(pg.ROI):
|
||||
@@ -539,12 +601,22 @@ if __name__=='__main__':
|
||||
# Custom ROI for selecting an image region
|
||||
#viRoi=pg.ROI([20, -50], [60, 40])
|
||||
viRoi=TxtROI([20, -50], [60, 40])
|
||||
#viRoi.addScaleHandle([1, 1], [0, 0])
|
||||
#viRoi.addScaleHandle([.7, .5], [0, 0])
|
||||
|
||||
vb.addItem(viRoi)
|
||||
viUsrRoi=Marker([50, 120], [30, 20],mode=0)
|
||||
vb.addItem(viUsrRoi)
|
||||
obj=Marker([250, 220], [30, 20],mode=1)
|
||||
vb.addItem(obj)
|
||||
vi=Grid( (120,-100), (200,150), (30,20),2)
|
||||
tr=QtGui.QTransform() # prepare ImageItem transformation:
|
||||
tr.setMatrix(1, -.1, 0,
|
||||
.2, 1, 0,
|
||||
10, 10, 1)
|
||||
vi.setTransform(tr) # assign transform
|
||||
|
||||
|
||||
#vi=Grid( (50,10), (200,150), (6,4))
|
||||
vb.addItem(vi) #vi= visual item
|
||||
|
||||
@@ -567,6 +639,16 @@ if __name__=='__main__':
|
||||
vi=Fiducial((0,200),(40,40),(1,2,3))
|
||||
vb.addItem(vi)
|
||||
|
||||
viRoi=pg.ROI([-200, -200], [100, 80],movable=True, rotatable=True, resizable=True)
|
||||
|
||||
viRoi.addFreeHandle(pos=[.7, .5], axes=None, item=None, name=None, index=None) # rechteck , frei beweglich ??? verschwinden anch bewegung
|
||||
#viRoi.addRotateFreeHandle([.7, .5], [0, 0], axes=None, item=None, name=None, index=None) # kreis ??? verschwinden anch erstem gebrauch
|
||||
#viRoi.addRotateHandle([.7, .5], [0, 0], item=None, name=None, index=None) # kreis, nur rot
|
||||
#viRoi.addScaleHandle([.7, .5], [0, 0], axes=None, item=None, name=None, lockAspect=False, index=None) # raute scale x,y
|
||||
#viRoi.addScaleRotateHandle([0, .5], [1, .5], item=None, name=None, index=None) # kreis
|
||||
#viRoi.addTranslateHandle([.7, .5], axes=None, item=None, name=None, index=None) #quadrat
|
||||
vb.addItem(viRoi)
|
||||
|
||||
|
||||
childTree(vb)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user