⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gen.py

📁 Mplayer源码
💻 PY
字号:
#!/usr/bin/pythonfrom math import *import sysimport stringk = (sqrt(2.)-1.)*4./3.chars = []encoding = []count = 1first = 1def append(s):    chars.append(s)def rint(x):    return int(round(x))"""    if x>=0:	return int(x+0.5)    else:	return int(x-0.5)"""class vec:    def __init__(self, x, y=0):        if type(x) is type(()):	    self.x, self.y = x	else:	    self.x = x	    self.y = y    def set(self, x, y):        self.__init__(x, y)    def move(self, x, y):        self.x = self.x + x        self.y = self.y + y    def __add__(self, v):        return vec(self.x+v.x, self.y+v.y)    def __sub__(self, v):        return vec(self.x-v.x, self.y-v.y)    def int(self):        return vec(rint(self.x), rint(self.y))    def t(self):        return (self.x, self.y)class pvec(vec):    def __init__(self, l, a):        self.x = l * cos(a)        self.y = l * sin(a)pen = vec(0,0)def moveto(x, y=0):    global first    dx = rint(x-pen.x)    dy = rint(y-pen.y)    if dx!=0:        if dy!=0:	    append("\t%i %i rmoveto" % (dx, dy))	else:	    append("\t%i hmoveto" % (dx))    elif dy!=0:	    append("\t%i vmoveto" % (dy))    elif first:	    append("\t0 hmoveto")	    first = 0    pen.x = pen.x+dx    pen.y = pen.y+dxdef rlineto(v):    if v.x!=0:        if v.y!=0:	    append("\t%i %i rlineto" % (v.x, v.y))	else:	    append("\t%i hlineto" % (v.x))    elif v.y!=0:	    append("\t%i vlineto" % (v.y))def closepath():    append("\tclosepath")history = []def movebase(x, y=0):    history.append((x,y))    pen.move(-x, -y)def moveback():    x, y = history.pop()    pen.move(x, y)def ellipse(rx, ry = None, half=0):    # rx>0 => counter-clockwise (filled)    # rx<0 => clockwise    if ry==None: ry = abs(rx)    dx1 = rint(k*rx)    dx2 = rx-dx1    dy1 = rint(k*ry)    dy2 = ry-dy1    rx = abs(rx)    moveto(0, -ry)    append("\t%i 0 %i %i 0 %i rrcurveto" % (+dx1, +dx2, +dy2, +dy1))    append("\t0 %i %i %i %i 0 rrcurveto" % (+dy1, -dx2, +dy2, -dx1))    if not half:	append("\t%i 0 %i %i 0 %i rrcurveto" % (-dx1, -dx2, -dy2, -dy1))	append("\t0 %i %i %i %i 0 rrcurveto" % (-dy1, +dx2, -dy2, +dx1))    closepath()    if half:	pen.set(0, ry)    else:	pen.set(0, -ry)circle = ellipsedef rect(w, h):    moveto(0, 0)    if w>0:	append("\t%i hlineto" % (w))	append("\t%i vlineto" % (h))	append("\t%i hlineto" % (-w))	pen.set(0, h)    else:	append("\t%i vlineto" % (h))	append("\t%i hlineto" % (-w))	append("\t%i vlineto" % (-h))	pen.set(-w, 0)    closepath()def poly(p):    moveto(0, 0)    prev = vec(0, 0)    for q in p:        rlineto(vec(q)-prev)	prev = vec(q)    closepath()    pen.set(prev.x, prev.y)def line(w, l, a):    vw = pvec(w*.5, a-pi*.5)    vl = pvec(l, a)    p = vw    moveto(p.x, p.y)    p0 = p    #print '%%wla %i %i %.3f: %.3f %.3f' % (w, l, a, p0.x, p0.y)    p = p+vl    rlineto((p-p0).int())    p0 = p    #print '%%wla %i %i %.3f: %.3f %.3f' % (w, l, a, p0.x, p0.y)    p = p-vw-vw    rlineto((p-p0).int())    p0 = p    #print '%%wla %i %i %.3f: %.3f %.3f' % (w, l, a, p0.x, p0.y)    p = p-vl    #print '%%wla %i %i %.3f: %.3f %.3f' % (w, l, a, p.x, p.y)    rlineto((p-p0).int())    closepath()    pen.set(p.x, p.y)def begin(name, code, hsb, w):    global first, count, history    history = []    pen.set(0, 0)    append("""\/uni%04X { %% %s	%i %i hsbw""" % (code+0xE000, name, hsb, w))    i = len(encoding)    while i<code:	encoding.append('dup %i /.notdef put' % (i,))	i = i+1    encoding.append('dup %i /uni%04X put' % (code, code+0xE000))    count = count + 1    first = 1def end():    append("""\	endchar} ND""")########################################r = 400s = 375hsb = 200	# horizontal side bearinghsb2 = 30over = 10	# overshootwidth = 2*r+2*over+2*hsb2########################################begin('play', 0x01, hsb, width)poly((  (s,r),	(0, 2*r),))end()########################################w=150begin('pause', 0x02, hsb, width)rect(w, 2*r)movebase(2*w)rect(w, 2*r)end()########################################begin('stop', 0x03, hsb, width)rect(665, 720)end()########################################begin('rewind', 0x04, hsb/2, width)movebase(2*s+15)poly((  (0, 2*r),	(-s, r),))movebase(-s-15)poly((  (0, 2*r),	(-s, r),))end()########################################begin('fast forward', 0x05, hsb/2, width)poly((  (s,r),	(0, 2*r),))movebase(s+15)poly((  (s,r),	(0, 2*r),))end()########################################begin('clock', 0x06, hsb2, width)movebase(r, r)circle(r+over)wc = 65r0 = r-3*wcn = 4movebase(-wc/2, -wc/2)rect(-wc, wc)moveback()for i in range(n):    a = i*2*pi/n    v = pvec(r0, a)    movebase(v.x, v.y)    line(-wc, r-r0, a)    moveback()hh = 11mm = 8line(-50, r*.5, pi/2-2*pi*(hh+mm/60.)/12)line(-40, r*.9, pi/2-2*pi*mm/60.)end()########################################begin('contrast', 0x07, hsb2, width)movebase(r, r)circle(r+over)circle(-(r+over-80), half=1)end()########################################begin('saturation', 0x08, hsb2, width)movebase(r, r)circle(r+over)circle(-(r+over-80))v = pvec(160, pi/2)movebase(v.x, v.y)circle(80)moveback()v = pvec(160, pi/2+pi*2/3)movebase(v.x, v.y)circle(80)moveback()v = pvec(160, pi/2-pi*2/3)movebase(v.x, v.y)circle(80)end()########################################begin('volume', 0x09, 0, 1000)poly((  (1000, 0),	(1000, 500),))end()########################################begin('brightness', 0x0A, hsb2, width)movebase(r, r)circle(150)circle(-100)rb = 375wb = 50l = 140n = 8for i in range(n):    a = i*2*pi/n    v = pvec(l, a)    movebase(v.x, v.y)    line(wb, rb-l, a)    moveback()end()########################################begin('hue', 0x0B, hsb2, width)movebase(r, r)circle(r+over)ellipse(-(322), 166)movebase(0, 280)circle(-(60))end()########################################begin('progress [', 0x10, (334-182)/2, 334)poly((  (182, 0),	(182, 90),	(145, 90),	(145, 550),	(182, 550),	(182, 640),	(0, 640),))end()########################################begin('progress |', 0x11, (334-166)/2, 334)rect(166, 640)end()########################################begin('progress ]', 0x12, (334-182)/2, 334)poly((  (182, 0),	(182, 640),	(0, 640),	(0, 550),	(37, 550),	(37, 90),	(0, 90),))end()########################################begin('progress .', 0x13, (334-130)/2, 334)movebase(0, (640-130)/2)rect(130, 130)end()########################################print """\%!PS-AdobeFont-1.0: OSD 1.00%%CreationDate: Sun Jul 22 12:38:28 2001%%%EndComments12 dict begin/FontInfo 9 dict dup begin/version (Version 1.00) readonly def/Notice (This is generated file.) readonly def/FullName (OSD) readonly def/FamilyName (OSD) readonly def/Weight (Regular) readonly def/ItalicAngle 0.000000 def/isFixedPitch false def/UnderlinePosition -133 def/UnderlineThickness 49 defend readonly def/FontName /OSD def/PaintType 0 def/StrokeWidth 0 def/FontMatrix [0.001 0 0 0.001 0 0] def/FontBBox {0 -10 1000 810} readonly def/Encoding 256 array"""print string.join(encoding, '\n')i = len(encoding)while i<256:    print 'dup %i /.notdef put' % i    i = i+1print """\readonly defcurrentdict endcurrentfile eexecdup /Private 15 dict dup begin/RD{string currentfile exch readstring pop}executeonly def/ND{noaccess def}executeonly def/NP{noaccess put}executeonly def/ForceBold false def/BlueValues [ -10 0 800 810 640 650 720 730 ] def/StdHW [ 65 ] def/StdVW [ 65 ] def/StemSnapH [ 65 800 ] def/StemSnapV [ 65 150 ] def/MinFeature {16 16} def/password 5839 def/Subrs 1 arraydup 0 {	return	} NP ND2 index/CharStrings %i dict dup begin""" % countprint """\/.notdef {	0 400 hsbw	endchar} ND"""print string.join(chars, '\n')print """\endendreadonly putnoaccess putdup/FontName get exch definefont popmark currentfile closefile"""

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -