mirror of
https://github.com/gryf/wmdocklib.git
synced 2025-12-19 12:28:10 +01:00
1579522: antialiased fonts for digits
I took one of the font definitions from a running wmCalClock and put it in the 'background' pixelmask. this works quite good. the name of the parameter is rather confusing, it's not a background actually but a collection of templates... but that's an other problem.
This commit is contained in:
@@ -75,6 +75,18 @@ def addString(s, x, y):
|
|||||||
raise
|
raise
|
||||||
sys.exit(3)
|
sys.exit(3)
|
||||||
|
|
||||||
|
def addTimeString(s, x, y):
|
||||||
|
for c in s:
|
||||||
|
charW = 7
|
||||||
|
charX = 64 + (ord(c) - ord('0')) % 5 * 7
|
||||||
|
if c <='4': charY = 44
|
||||||
|
else: charY = 54
|
||||||
|
if not c.isdigit():
|
||||||
|
charX = 64 + 35
|
||||||
|
charW = 3
|
||||||
|
wmdocklib.copyXPMArea(charX, charY, charW, 10, x+xOffset, y+yOffset)
|
||||||
|
x += charW
|
||||||
|
|
||||||
def clearLine(y):
|
def clearLine(y):
|
||||||
'''Clear a line of text at position y.'''
|
'''Clear a line of text at position y.'''
|
||||||
wmdocklib.copyXPMArea(73, yOffset, width - 2 * xOffset, char_height,
|
wmdocklib.copyXPMArea(73, yOffset, width - 2 * xOffset, char_height,
|
||||||
@@ -84,7 +96,7 @@ def getCenterStartPos(s):
|
|||||||
return wmdocklib.getCenterStartPos(s, width, xOffset)
|
return wmdocklib.getCenterStartPos(s, width, xOffset)
|
||||||
|
|
||||||
def getVertSpacing(numLines, margin):
|
def getVertSpacing(numLines, margin):
|
||||||
return wmdocklib.getVertSpacing(numLines, margin, height, yOffset)
|
return wmdocklib.getVertSpacing(numLines, margin, height, yOffset) + 1
|
||||||
|
|
||||||
def calculateWeek(localTime):
|
def calculateWeek(localTime):
|
||||||
"""Calculate the week number as we do, for example in Sweden.
|
"""Calculate the week number as we do, for example in Sweden.
|
||||||
@@ -152,12 +164,12 @@ def mainLoop(timeFmt, dateFmt, dayFmt, weekFmt):
|
|||||||
checkForEvents()
|
checkForEvents()
|
||||||
lt = time.localtime()
|
lt = time.localtime()
|
||||||
timeStr = time.strftime(timeFmt, lt)[:maxCharsPerLine]
|
timeStr = time.strftime(timeFmt, lt)[:maxCharsPerLine]
|
||||||
margin = 3
|
margin = 6
|
||||||
spacing = getVertSpacing(4, margin)
|
spacing = getVertSpacing(4, margin)
|
||||||
timeX = getCenterStartPos(timeStr)
|
timeX = getCenterStartPos(timeStr)
|
||||||
if lastStrs[0] != timeStr:
|
if lastStrs[0] != timeStr:
|
||||||
clearLine(margin)
|
clearLine(margin)
|
||||||
addString(timeStr, timeX, margin)
|
addTimeString(timeStr, timeX, margin-4)
|
||||||
lastStrs[0] = timeStr
|
lastStrs[0] = timeStr
|
||||||
if counter % 100 == 0:
|
if counter % 100 == 0:
|
||||||
# We only perform the date/week checks/updates once every 100th
|
# We only perform the date/week checks/updates once every 100th
|
||||||
@@ -190,6 +202,73 @@ def mainLoop(timeFmt, dateFmt, dayFmt, weekFmt):
|
|||||||
wmdocklib.redraw()
|
wmdocklib.redraw()
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
|
|
||||||
|
background = [
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
".+@@+.....#@...#@@#...#@@#....$@%.. ",
|
||||||
|
"$@==@$...+@@..&@--@&.*@--@&...#@%.. ",
|
||||||
|
"&@**@&..#@@@..&@$.@%.&-..@%..*@@%.. ",
|
||||||
|
"%@..@%..#+%@.....$@%....+@#..--@%.. ",
|
||||||
|
"%@..@%....%@.....%@*...%@-..*@$@%.. ",
|
||||||
|
"%@..@%....%@....+@%....&-@+.=#.@%.. ",
|
||||||
|
"%@..@%....%@...+@=$......-@.@-%@=&. ",
|
||||||
|
"&@**@&....%@..$@=$...&-..-@.@@@@@%. ",
|
||||||
|
"$@==@$....%@..#@-%%&.+@--@#....@%.. ",
|
||||||
|
".+@@+.....%@..@@@@@%..#@@#.....@%.. ",
|
||||||
|
".@@@@+..+=@%..+@@@@@..%@@+...&@@#...... ",
|
||||||
|
"*@-%%*.$==-@&.*%%%@=.#@-=@*.*@=-@&..... ",
|
||||||
|
"+@+....+@*.%*....+@*.%@.+@+.%@$.-%.*+.. ",
|
||||||
|
"&@=@#..%@$+$.....--..&@&%@$.%@..%@.%@.. ",
|
||||||
|
"%@%=@*.%@=@@*...*@&...=@@#..&@%&@@.*+.. ",
|
||||||
|
".*.$@%.%@%&@-...#@...#@&%@*..=@@@@..... ",
|
||||||
|
"....@%.%@..%@...=-...@%..@%...+*%@.&%.. ",
|
||||||
|
"--.*@#.+@$.-@...@%...@-.$@%.$#*.=%.%@.. ",
|
||||||
|
"%@-=@$.$@=-@#..+@+...#@-=@*.$@=-@+..... ",
|
||||||
|
"$-@=+...+=@%$..+@+...$#@@&...+@@#...... ",
|
||||||
|
]
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
clConfig = parseCommandLine(sys.argv)
|
clConfig = parseCommandLine(sys.argv)
|
||||||
configFile = clConfig.get('configfile', defaultConfigFile)
|
configFile = clConfig.get('configfile', defaultConfigFile)
|
||||||
@@ -214,14 +293,26 @@ def main():
|
|||||||
programName = ''
|
programName = ''
|
||||||
sys.argv[0] = programName
|
sys.argv[0] = programName
|
||||||
|
|
||||||
palette = {}
|
palette = {
|
||||||
|
".":"#181818",
|
||||||
|
"+":"#6E6E0F",
|
||||||
|
"@":"#FFFF00",
|
||||||
|
"#":"#A0A009",
|
||||||
|
"$":"#3B3B14",
|
||||||
|
"%":"#B9B907",
|
||||||
|
"&":"#87870C",
|
||||||
|
"*":"#545411",
|
||||||
|
"=":"#E6E602",
|
||||||
|
"-":"#CFCF04",
|
||||||
|
}
|
||||||
palette[0] = clConfig.get('background', 'black')
|
palette[0] = clConfig.get('background', 'black')
|
||||||
palette[2] = clConfig.get('foreground', 'cyan3')
|
palette[2] = clConfig.get('foreground', 'cyan3')
|
||||||
|
|
||||||
font = clConfig.get('font', '6x8orig')
|
font = clConfig.get('font', '6x8orig')
|
||||||
|
|
||||||
global char_width, char_height
|
global char_width, char_height
|
||||||
char_width, char_height = wmdocklib.initPixmap(font_name=font,
|
char_width, char_height = wmdocklib.initPixmap(background,
|
||||||
|
font_name=font,
|
||||||
bg=0, fg=2, palette=palette)
|
bg=0, fg=2, palette=palette)
|
||||||
wmdocklib.openXwindow(sys.argv, width, height)
|
wmdocklib.openXwindow(sys.argv, width, height)
|
||||||
mainLoop(timeFmt, dateFmt, dayFmt, weekFmt)
|
mainLoop(timeFmt, dateFmt, dayFmt, weekFmt)
|
||||||
|
|||||||
Reference in New Issue
Block a user