wip
This commit is contained in:
@@ -142,7 +142,28 @@ class RIXSgrating(QWidget):
|
||||
'cc':58, #detector angle
|
||||
'szG':(200,5), #size VLS grating
|
||||
'szD':(150,5), #size detector
|
||||
'difrBeamPaint':4, # mode to plot the difracted beam
|
||||
}
|
||||
self._lutDifrBeamPaint=(# (number of difr beam,draw mode,alpha,width)
|
||||
( 4, 2, 190, 0),
|
||||
( 4, 1, 200, 0),
|
||||
(32, 1, 120, 0),
|
||||
( 8, 1, 196, 0),
|
||||
(32, 0, 120, 3),
|
||||
(32, 2, 255, 0),
|
||||
)
|
||||
|
||||
|
||||
# n=4;mode=2;alpha=190
|
||||
# n=4;mode=1;alpha=200
|
||||
# n=32;mode=1;alpha=120
|
||||
# n=8;mode=1;alpha=196
|
||||
n=32;
|
||||
mode=0;
|
||||
alpha=120;
|
||||
width=3
|
||||
# n=32;mode=2;alpha=255
|
||||
|
||||
self.initUI()
|
||||
|
||||
def initUI(self):
|
||||
@@ -232,7 +253,8 @@ class RIXSgrating(QWidget):
|
||||
l=QtGui.QVBoxLayout(w)
|
||||
|
||||
sld={}
|
||||
for key,rng,tk,pos in (('r1',(50,800),50,60),('r2',(50,800),50,80),('aa',(0,90),5,20),('bb',(0,90),5,20),('cc',(0,180),5,40),):
|
||||
for key,rng,tk in (('r1',(50,800),50),('r2',(50,800),50),('aa',(0,90),5),('bb',(0,90),5),('cc',(0,180),5),
|
||||
('difrBeamPaint',(0,len(self._lutDifrBeamPaint)-1),1),):
|
||||
sl=QtGui.QSlider(QtCore.Qt.Horizontal,objectName=key)
|
||||
sl.setFixedWidth(200);sl.setMinimum(rng[0]);sl.setMaximum(rng[1])
|
||||
sl.setValue(self._param[key])
|
||||
@@ -388,19 +410,18 @@ class RIXSgrating(QWidget):
|
||||
qp.translate(ctr[0],ctr[1])
|
||||
qp.setCompositionMode(QtGui.QPainter.CompositionMode_Lighten)
|
||||
|
||||
|
||||
tf0=qp.transform()
|
||||
qp.setPen(QtGui.QPen(QtCore.Qt.white, 1, QtCore.Qt.SolidLine))
|
||||
qp.setBrush(QColor(255, 80, 0, 128))
|
||||
|
||||
qp.drawEllipse(-r1-20, -10, 20, 20) # target
|
||||
qp.drawLine(-r1,0,0,0) #beam
|
||||
qp.drawLine(-r1,0,0,0) #central beam1
|
||||
qp.rotate(-aa)
|
||||
tf1=qp.transform()
|
||||
qp.drawRect(int(-szG[0]/2), 0, szG[0], szG[1]) # grating
|
||||
qp.rotate(-bb)
|
||||
tf2=qp.transform()
|
||||
qp.drawLine(0,0,int(r2+szD[0]/2),0) #beam
|
||||
qp.drawLine(0,0,int(r2+szD[0]/2),0) #central beam2
|
||||
qp.translate(r2,0)
|
||||
qp.rotate(-cc)
|
||||
tf3=qp.transform()
|
||||
@@ -416,12 +437,8 @@ class RIXSgrating(QWidget):
|
||||
qp.drawLine(p0,p1)
|
||||
|
||||
# beam vlsg to detector
|
||||
#n=4;mode=2;alpha=190
|
||||
#n=4;mode=1;alpha=200
|
||||
#n=32;mode=1;alpha=120
|
||||
#n=8;mode=1;alpha=196
|
||||
n=32;mode=0;alpha=120;width=3
|
||||
#n=32;mode=2;alpha=255
|
||||
#n=32;mode=0;alpha=120;width=3
|
||||
n,mode,alpha,width=self._lutDifrBeamPaint[p['difrBeamPaint']]
|
||||
scl=256/n
|
||||
p0=QtCore.QPointF(*tf1.map(-szG[0]/2, 0))
|
||||
p1=QtCore.QPointF(*tf1.map(szG[0]/2, 0))
|
||||
@@ -441,7 +458,7 @@ class RIXSgrating(QWidget):
|
||||
qp.setPen(QtGui.QPen(QtCore.Qt.black, 0, QtCore.Qt.SolidLine))
|
||||
for i in range(n):
|
||||
p2=QtCore.QPointF(*tf3.map(szD[0]/2-szD[0]*i/(n-1), 0))
|
||||
col.setHsv(i*scl, 255, 255, alpha)
|
||||
col.setHsv(int(i*scl), 255, 255, alpha)
|
||||
qp.setBrush(col)
|
||||
qp.drawPolygon(p0, p1, p2)
|
||||
if mode==2:
|
||||
@@ -450,10 +467,20 @@ class RIXSgrating(QWidget):
|
||||
for i in range(n):
|
||||
p2=QtCore.QPointF(*tf3.map(szD[0]/2-szD[0]*(i+1)/n, 0))
|
||||
p3=QtCore.QPointF(*tf3.map(szD[0]/2-szD[0]*i/n, 0))
|
||||
col.setHsv(i*scl, 255, 255, alpha)
|
||||
col.setHsv(int(i*scl), 255, 255, alpha)
|
||||
qp.setBrush(col)
|
||||
qp.drawPolygon(p0, p1, p2, p3)
|
||||
|
||||
qp.setCompositionMode(QtGui.QPainter.CompositionMode_SourceOver)
|
||||
|
||||
#draw central beam (if needed)
|
||||
if mode!=0:
|
||||
qp.setTransform(tf0)
|
||||
qp.setPen(QtGui.QPen(QtGui.QColor(0x757780), 2, QtCore.Qt.SolidLine))
|
||||
qp.drawLine(-r1,0,0,0) #central beam1
|
||||
qp.setTransform(tf2)
|
||||
qp.drawLine(0,0,int(r2+szD[0]/2),0) #central beam2
|
||||
|
||||
#draw dimensions
|
||||
try:
|
||||
d=self._vlsg_geo
|
||||
@@ -466,7 +493,7 @@ class RIXSgrating(QWidget):
|
||||
vbb=90-d['bb']
|
||||
vcc=90-d['cc']
|
||||
|
||||
qp.setCompositionMode(QtGui.QPainter.CompositionMode_SourceOver)
|
||||
qp.setTransform(QtGui.QTransform())
|
||||
pen=QtGui.QPen(QtCore.Qt.red, 1, QtCore.Qt.SolidLine)
|
||||
penTxt=QtGui.QPen(QtCore.Qt.yellow, 1, QtCore.Qt.SolidLine)
|
||||
qp.setPen(pen)
|
||||
|
||||
Reference in New Issue
Block a user