changes/cleanup to support online version
This commit is contained in:
parent
24e79f5699
commit
8dcfcc08f1
@ -104,12 +104,16 @@ class DominionTabs:
|
|||||||
'envoy' : 'envoy_set.png'
|
'envoy' : 'envoy_set.png'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.filedir = os.path.dirname(__file__)
|
||||||
|
|
||||||
def add_inline_images(self, text, fontsize):
|
def add_inline_images(self, text, fontsize):
|
||||||
replace = '<img src='"'images/coin_small_\\1.png'"' width=%d height='"'100%%'"' valign='"'middle'"'/>' % (fontsize*1.2)
|
path = os.path.join(self.filedir,'images')
|
||||||
|
replace = '<img src='"'%s/coin_small_\\1.png'"' width=%d height='"'100%%'"' valign='"'middle'"'/>' % (path,fontsize*1.2)
|
||||||
text = re.sub('(\d)\s(c|C)oin(s)?', replace,text)
|
text = re.sub('(\d)\s(c|C)oin(s)?', replace,text)
|
||||||
replace = '<img src='"'images/coin_small_question.png'"' width=%d height='"'100%%'"' valign='"'middle'"'/>' % (fontsize*1.2)
|
replace = '<img src='"'%s/coin_small_question.png'"' width=%d height='"'100%%'"' valign='"'middle'"'/>' % (path,fontsize*1.2)
|
||||||
text = re.sub('\?\s(c|C)oin(s)?', replace,text)
|
text = re.sub('\?\s(c|C)oin(s)?', replace,text)
|
||||||
replace = '<img src='"'images/victory_emblem.png'"' width=%d height='"'120%%'"' valign='"'middle'"'/>' % (fontsize*1.5)
|
replace = '<img src='"'%s/victory_emblem.png'"' width=%d height='"'120%%'"' valign='"'middle'"'/>' % (path,fontsize*1.5)
|
||||||
text = re.sub('\<VP\>', replace,text)
|
text = re.sub('\<VP\>', replace,text)
|
||||||
return text
|
return text
|
||||||
|
|
||||||
@ -173,7 +177,7 @@ class DominionTabs:
|
|||||||
self.tabTotalHeight-self.tabLabelHeight)
|
self.tabTotalHeight-self.tabLabelHeight)
|
||||||
else:
|
else:
|
||||||
self.canvas.translate(0,self.tabTotalHeight-self.tabLabelHeight)
|
self.canvas.translate(0,self.tabTotalHeight-self.tabLabelHeight)
|
||||||
self.canvas.drawImage(os.path.join('images',card.getType().getNoCoinTabImageFile()),1,0,
|
self.canvas.drawImage(os.path.join(self.filedir,'images',card.getType().getNoCoinTabImageFile()),1,0,
|
||||||
self.tabLabelWidth-2,self.tabLabelHeight-1,
|
self.tabLabelWidth-2,self.tabLabelHeight-1,
|
||||||
preserveAspectRatio=False,anchor='n',mask='auto')
|
preserveAspectRatio=False,anchor='n',mask='auto')
|
||||||
|
|
||||||
@ -201,12 +205,12 @@ class DominionTabs:
|
|||||||
# potSize = 11
|
# potSize = 11
|
||||||
# potHeight = 2
|
# potHeight = 2
|
||||||
|
|
||||||
self.canvas.drawImage("images/coin_small.png",4,costHeight-5,16,16,preserveAspectRatio=True,mask='auto')
|
self.canvas.drawImage(os.path.join(self.filedir,'images','coin_small.png'),4,costHeight-5,16,16,preserveAspectRatio=True,mask='auto')
|
||||||
textInset = 22
|
textInset = 22
|
||||||
textWidth = 85
|
textWidth = 85
|
||||||
|
|
||||||
if card.potcost:
|
if card.potcost:
|
||||||
self.canvas.drawImage("images/potion.png",21,potHeight,potSize,potSize,preserveAspectRatio=True,mask=[255,255,255,255,255,255])
|
self.canvas.drawImage(os.path.join(self.filedir,'images','potion.png'),21,potHeight,potSize,potSize,preserveAspectRatio=True,mask=[255,255,255,255,255,255])
|
||||||
textInset += potSize
|
textInset += potSize
|
||||||
textWidth -= potSize
|
textWidth -= potSize
|
||||||
|
|
||||||
@ -216,7 +220,7 @@ class DominionTabs:
|
|||||||
setImage = DominionTabs.promoImages.get(card.name.lower(), None)
|
setImage = DominionTabs.promoImages.get(card.name.lower(), None)
|
||||||
|
|
||||||
if setImage:
|
if setImage:
|
||||||
self.canvas.drawImage(os.path.join('images',setImage), self.tabLabelWidth-20, potHeight, 14, 12, mask='auto')
|
self.canvas.drawImage(os.path.join(self.filedir,'images',setImage), self.tabLabelWidth-20, potHeight, 14, 12, mask='auto')
|
||||||
elif setImage == None and card.cardset != 'common':
|
elif setImage == None and card.cardset != 'common':
|
||||||
print 'warning, no set image for set "%s" card "%s"' % (card.cardset, card.name)
|
print 'warning, no set image for set "%s" card "%s"' % (card.cardset, card.name)
|
||||||
DominionTabs.setImages[card.cardset] = 0
|
DominionTabs.setImages[card.cardset] = 0
|
||||||
@ -310,7 +314,7 @@ class DominionTabs:
|
|||||||
extras[currentCard] = extra
|
extras[currentCard] = extra
|
||||||
currentCard = m.groupdict()["name"]
|
currentCard = m.groupdict()["name"]
|
||||||
extra = ""
|
extra = ""
|
||||||
if currentCard and (currentCard not in (c.name for c in cards)):
|
if not self.options.expansions and currentCard and (currentCard not in (c.name for c in cards)):
|
||||||
print currentCard + ' has extra description, but is not in cards'
|
print currentCard + ' has extra description, but is not in cards'
|
||||||
else:
|
else:
|
||||||
extra += line
|
extra += line
|
||||||
@ -339,7 +343,7 @@ class DominionTabs:
|
|||||||
else:
|
else:
|
||||||
card.description += line
|
card.description += line
|
||||||
|
|
||||||
def read_card_defs(self,fname):
|
def read_card_defs(self,fname,fileobject=None):
|
||||||
cards = []
|
cards = []
|
||||||
f = open(fname)
|
f = open(fname)
|
||||||
carddef = re.compile("^\d+\t+(?P<name>[\w\-'/ ]+)\t+(?P<set>[\w ]+)\t+(?P<type>[-\w ]+)\t+\$(?P<cost>\d+)( (?P<potioncost>\d)+P)?\t+(?P<description>.*)")
|
carddef = re.compile("^\d+\t+(?P<name>[\w\-'/ ]+)\t+(?P<set>[\w ]+)\t+(?P<type>[-\w ]+)\t+\$(?P<cost>\d+)( (?P<potioncost>\d)+P)?\t+(?P<description>.*)")
|
||||||
@ -400,7 +404,8 @@ class DominionTabs:
|
|||||||
self.canvas.restoreState()
|
self.canvas.restoreState()
|
||||||
self.canvas.showPage()
|
self.canvas.showPage()
|
||||||
|
|
||||||
def main(self,argstring):
|
@staticmethod
|
||||||
|
def parse_opts(argstring):
|
||||||
parser = OptionParser()
|
parser = OptionParser()
|
||||||
parser.add_option("--back_offset",type="int",dest="back_offset",default=0,
|
parser.add_option("--back_offset",type="int",dest="back_offset",default=0,
|
||||||
help="Points to offset the back page to the right; needed for some printers")
|
help="Points to offset the back page to the right; needed for some printers")
|
||||||
@ -419,13 +424,22 @@ class DominionTabs:
|
|||||||
help="subset of dominion expansions to produce tabs for")
|
help="subset of dominion expansions to produce tabs for")
|
||||||
parser.add_option("--cropmarks",action="store_true",dest="cropmarks",
|
parser.add_option("--cropmarks",action="store_true",dest="cropmarks",
|
||||||
help="print crop marks on both sides, rather than tab outlines on one")
|
help="print crop marks on both sides, rather than tab outlines on one")
|
||||||
(self.options,args) = parser.parse_args(argstring)
|
return parser.parse_args(argstring)
|
||||||
|
|
||||||
|
def main(self,argstring):
|
||||||
|
options,args = DominionTabs.parse_opts(argstring)
|
||||||
|
fname = None
|
||||||
|
if args:
|
||||||
|
fname = args[0]
|
||||||
|
return self.generate(options,fname)
|
||||||
|
|
||||||
|
def generate(self,options,f):
|
||||||
|
self.options = options
|
||||||
size = self.options.size.upper()
|
size = self.options.size.upper()
|
||||||
if size == 'SLEEVED' or self.options.sleeved:
|
if size == 'SLEEVED' or self.options.sleeved:
|
||||||
dominionCardWidth, dominionCardHeight = (9.4*cm, 6.15*cm)
|
dominionCardWidth, dominionCardHeight = (9.4*cm, 6.15*cm)
|
||||||
print 'Using sleeved card size, %.2fcm x %.2fcm' % (dominionCardWidth/cm,dominionCardHeight/cm)
|
print 'Using sleeved card size, %.2fcm x %.2fcm' % (dominionCardWidth/cm,dominionCardHeight/cm)
|
||||||
elif size == 'NORMAL':
|
elif size in ['NORMAL','UNSLEEVED']:
|
||||||
dominionCardWidth, dominionCardHeight = (9.1*cm, 5.9*cm)
|
dominionCardWidth, dominionCardHeight = (9.1*cm, 5.9*cm)
|
||||||
print 'Using normal card size, %.2fcm x%.2fcm' % (dominionCardWidth/cm,dominionCardHeight/cm)
|
print 'Using normal card size, %.2fcm x%.2fcm' % (dominionCardWidth/cm,dominionCardHeight/cm)
|
||||||
else:
|
else:
|
||||||
@ -490,17 +504,19 @@ class DominionTabs:
|
|||||||
(0,self.tabBaseHeight,0,0)]
|
(0,self.tabBaseHeight,0,0)]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
pdfmetrics.registerFont(TTFont('MinionPro-Regular','fonts/MinionPro-Regular.ttf'))
|
dirn = os.path.join(self.filedir,'fonts')
|
||||||
pdfmetrics.registerFont(TTFont('MinionPro-Bold','fonts/MinionPro-Bold.ttf'))
|
pdfmetrics.registerFont(TTFont('MinionPro-Regular',os.path.join(dirn,'MinionPro-Regular.ttf')))
|
||||||
|
pdfmetrics.registerFont(TTFont('MinionPro-Bold',os.path.join(dirn,'MinionPro-Bold.ttf')))
|
||||||
except:
|
except:
|
||||||
|
raise
|
||||||
pdfmetrics.registerFont(TTFont('MinionPro-Regular','OptimusPrincepsSemiBold.ttf'))
|
pdfmetrics.registerFont(TTFont('MinionPro-Regular','OptimusPrincepsSemiBold.ttf'))
|
||||||
pdfmetrics.registerFont(TTFont('MinionPro-Bold','OptimusPrinceps.ttf'))
|
pdfmetrics.registerFont(TTFont('MinionPro-Bold','OptimusPrinceps.ttf'))
|
||||||
cards = self.read_card_defs("dominion_cards.txt")
|
cards = self.read_card_defs(os.path.join(self.filedir,"dominion_cards.txt"))
|
||||||
if self.options.expansions:
|
if self.options.expansions:
|
||||||
self.options.expansions = [o.lower() for o in self.options.expansions]
|
self.options.expansions = [o.lower() for o in self.options.expansions]
|
||||||
cards=[c for c in cards if c.cardset in self.options.expansions]
|
cards=[c for c in cards if c.cardset in self.options.expansions]
|
||||||
cards.sort(cmp=lambda x,y: cmp((x.cardset,x.name),(y.cardset,y.name)))
|
cards.sort(cmp=lambda x,y: cmp((x.cardset,x.name),(y.cardset,y.name)))
|
||||||
extras = self.read_card_extras("dominion_card_extras.txt",cards)
|
extras = self.read_card_extras(os.path.join(self.filedir,"dominion_card_extras.txt"),cards)
|
||||||
#print '%d cards read' % len(cards)
|
#print '%d cards read' % len(cards)
|
||||||
sets = {}
|
sets = {}
|
||||||
types = {}
|
types = {}
|
||||||
@ -510,11 +526,9 @@ class DominionTabs:
|
|||||||
#pprint.pprint(sets)
|
#pprint.pprint(sets)
|
||||||
#pprint.pprint(types)
|
#pprint.pprint(types)
|
||||||
|
|
||||||
if args:
|
if not f:
|
||||||
fname = args[0]
|
f = "dominion_tabs.pdf"
|
||||||
else:
|
self.canvas = canvas.Canvas(f, pagesize=(self.paperwidth, self.paperheight))
|
||||||
fname = "dominion_tabs.pdf"
|
|
||||||
self.canvas = canvas.Canvas(fname, pagesize=(self.paperwidth, self.paperheight))
|
|
||||||
#pprint.pprint(self.canvas.getAvailableFonts())
|
#pprint.pprint(self.canvas.getAvailableFonts())
|
||||||
self.drawCards(cards)
|
self.drawCards(cards)
|
||||||
self.canvas.save()
|
self.canvas.save()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user