Public Member Functions | Public Attributes | List of all members
generic.tools.ImageMaker.ImageMaker Class Reference
Inheritance diagram for generic.tools.ImageMaker.ImageMaker:
object

Public Member Functions

def __init__ (self, verbose=False)
 
def set_defaults (self)
 
def draw (self, input_histograms, labels, axis_labels, save_as='plot.eps', draw_option="X0 E", draw_options=False, log_x=False, log_y=False, norm_factors=None, with_ratio=False, ref_hist_idx=0, y_range=[], z_range=[], show_grid=True, show_legend=True, legend_coordinates=None, auto_legend_height=True, auto_legend_width=True, auto_legend_position=True, colours=[i for i in range(20)], markers=[7, lines=[], nova_validation=True, latex_label=False, l_x=0.25, l_y=0.94, suffixes=[".png"])
 
def set_text_style (self, histogram)
 
def set_style (self, histogram, idx, colours=[], lines=[], markers=[])
 
def label_axes (self, histogram, axis_labels)
 

Public Attributes

 canvas
 
 verbose
 
 TEXT_SIZE
 
 TEXT_OFFSET
 
 LEGEND_TEXT_SIZE
 
 LOG_SPREAD_FRACTION
 
 MARGIN_LEFT
 
 MARGIN_RIGHT
 
 MARGIN_TOP
 
 MARGIN_BOTTOM
 
 LATEX_FONT_SIZE
 
 FONT
 
 line_options
 
 fill_options
 
 point_options
 
short int type
 
short int number
 
char name [SIZE_OF_OBJ_NAME]
 
cat_entry star
 

Detailed Description

Collects plots to be drawn together and the configuration to go with them.

    Produces image files from this.

Definition at line 19 of file ImageMaker.py.

Constructor & Destructor Documentation

def generic.tools.ImageMaker.ImageMaker.__init__ (   self,
  verbose = False 
)

Definition at line 25 of file ImageMaker.py.

25  def __init__(self, verbose=False):
26  # FIXME: this really should go in elsewhere (a controller, perhaps?)
27  ROOT.gROOT.SetBatch(1)
28  ROOT.gErrorIgnoreLevel = ROOT.kError
29  ROOT.gROOT.SetStyle("novaStyle")
30  ROOT.gROOT.ForceStyle()
31  ROOT.gStyle.SetOptTitle(0)
32  ROOT.gErrorIgnoreLevel = 1001
33  ROOT.gStyle.SetEndErrorSize(5)
34 
35  self.canvas = ROOT.TCanvas("canvas","variable", 800, 600)
36  self.canvas.Clear()
37 
38  ROOT.gPad.SetTicks(1,1)
39 
40  self.verbose = verbose
41  self.set_defaults()
42 
def __init__(self, verbose=False)
Definition: ImageMaker.py:25

Member Function Documentation

def generic.tools.ImageMaker.ImageMaker.draw (   self,
  input_histograms,
  labels,
  axis_labels,
  save_as = 'plot.eps',
  draw_option = "X0 E",
  draw_options = False,
  log_x = False,
  log_y = False,
  norm_factors = None,
  with_ratio = False,
  ref_hist_idx = 0,
  y_range = [],
  z_range = [],
  show_grid = True,
  show_legend = True,
  legend_coordinates = None,
  auto_legend_height = True,
  auto_legend_width = True,
  auto_legend_position = True,
  colours = [i for i in range(20)],
  markers = [7,
  lines = [],
  nova_validation = True,
  latex_label = False,
  l_x = 0.25,
  l_y = 0.94,
  suffixes = [".png"] 
)

Definition at line 85 of file ImageMaker.py.

References Canvas.Canvas.canvas, generic.tools.ImageMaker.ImageMaker.canvas, plot_validation_datamc.Clone(), Canvas.Canvas.fill_options, generic.tools.ImageMaker.ImageMaker.fill_options, GetXaxis(), Canvas.Canvas.label_axes(), generic.tools.ImageMaker.ImageMaker.label_axes(), Canvas.Canvas.LATEX_FONT_SIZE, generic.tools.ImageMaker.ImageMaker.LATEX_FONT_SIZE, Canvas.Canvas.LEGEND_TEXT_SIZE, generic.tools.ImageMaker.ImageMaker.LEGEND_TEXT_SIZE, Canvas.Canvas.line_options, generic.tools.ImageMaker.ImageMaker.line_options, Canvas.Canvas.MARGIN_BOTTOM, generic.tools.ImageMaker.ImageMaker.MARGIN_BOTTOM, Canvas.Canvas.MARGIN_LEFT, generic.tools.ImageMaker.ImageMaker.MARGIN_LEFT, Canvas.Canvas.MARGIN_RIGHT, generic.tools.ImageMaker.ImageMaker.MARGIN_RIGHT, Canvas.Canvas.MARGIN_TOP, generic.tools.ImageMaker.ImageMaker.MARGIN_TOP, cet::sqlite.max(), min(), open(), Canvas.Canvas.point_options, generic.tools.ImageMaker.ImageMaker.point_options, Canvas.Canvas.set_defaults(), generic.tools.ImageMaker.ImageMaker.set_defaults(), Canvas.Canvas.set_style(), generic.tools.ImageMaker.ImageMaker.set_style(), Canvas.Canvas.set_text_style(), generic.tools.ImageMaker.ImageMaker.set_text_style(), SetTitle(), submit_syst.str, SAMView.SamView.verbose, Controller.Controller.verbose, HTMLView.HTMLView.verbose, PageMaker.PageMaker.verbose, Component.Component.verbose, View.ControllerView.verbose, ControllerView.ControllerView.verbose, Canvas.Canvas.verbose, samweb_client.http_client_requests.RequestsHTTPClient.verbose, samweb_client.http_client.SAMWebHTTPClient.verbose, generic.tools.ImageMaker.ImageMaker.verbose, evg::MCTruthToDk2NuHackItr.verbose, and samweb_client.client.SAMWebClient.verbose.

85  suffixes = [".png"]):
86 
87  if legend_coordinates == None:
88  legend_coordinates = [0.6, 0.78, 0.85, 0.93]
89 
90  if self.verbose:
91  print "canvs: -- Canvas draw"
92  print "canvs: saving as: ",save_as
93 
94  if len(input_histograms) < 2:
95  show_legend = False
96 
97  if isinstance(input_histograms[0], ROOT.TH2):
98  if len(input_histograms) == 1:
99  draw_option = "colz"
100  else:
101  draw_option = "cont3"
102 
103  self.canvas.Clear()
104  self.canvas.Update()
105  self.canvas.Flush()
106 
107  main_pad = ROOT.TPad("main", "main", 0, 0, 1, 1)
108  main_pad.SetMargin(self.MARGIN_LEFT, self.MARGIN_RIGHT, self.MARGIN_BOTTOM, self.MARGIN_TOP)
109 
110  # checks
111  if colours: assert len(colours) >= len(input_histograms)
112  if markers: assert len(markers) >= len(input_histograms)
113  if lines: assert len(lines) >= len(input_histograms)
114  assert len(labels) == len(input_histograms)
115 
116  if log_x: main_pad.SetLogx(1)
117  else: main_pad.SetLogx(0)
118 
119  if log_y: main_pad.SetLogy(1)
120  else: main_pad.SetLogy(0)
121 
122  if show_grid: main_pad.SetGrid(1)
123  else: main_pad.SetGrid(0,0)
124 
125  if auto_legend_height:
126  # adjust y1 based on height
127  legend_coordinates[1] = (legend_coordinates[3] - (len(input_histograms)*self.LEGEND_TEXT_SIZE) - ((len(input_histograms)-1)*0.01))
128  legend_flip = False
129  if auto_legend_position and type(input_histograms[0]) in [ROOT.TH1D, ROOT.TH1F]:
130  if HistogramTools.findMaxAsymmetry(input_histograms) > 0:
131  legend_coordinates[0] -= 0.4
132  legend_coordinates[2] -= 0.4
133  legend_flip = True
134  if auto_legend_width:
135  # adjust x1(2) based on length
136  width = max([len(label) for label in labels]) * 0.02
137  if legend_flip:
138  legend_coordinates[2] = legend_coordinates[0] + width
139  else:
140  legend_coordinates[0] = legend_coordinates[2] - width
141 
142  Legend = ROOT.TLegend(legend_coordinates[0],legend_coordinates[1],legend_coordinates[2],legend_coordinates[3])
143  Legend.SetBorderSize(0)
144  Legend.SetTextFont(42)
145  Legend.SetFillStyle(0)
146 
147  histograms = []
148  for hist_idx, histogram in enumerate(input_histograms):
149  if histogram.GetSumw2N() == 0:
150  histogram.Sumw2()
151  clone = histogram.Clone(histogram.GetName()+"_to_draw")
152  if norm_factors and isinstance(norm_factors, collections.Container) and norm_factors[hist_idx]:
153  clone.Scale(norm_factors[hist_idx])
154  histograms.append(clone)
155 
156  ratio_denominator = None
157  ratio_pad = None
158  if with_ratio:
159  if all(hasattr(h, "Divide") for h in input_histograms):
160  ratio_denominator = histograms[ref_hist_idx].Clone("ratio_denominator")
161  ratio_pad = ROOT.TPad("ratio", "ratio", 0, 0, 1, 0.5)
162  # top margin is 0 so it fits right up against the main pad
163  ratio_pad.SetMargin(self.MARGIN_LEFT, self.MARGIN_RIGHT, self.MARGIN_BOTTOM, 0)
164 
165  # resize the main pad so that the ratio will fit under it
166  main_pad.SetPad(0, 0.5, 1, 1)
167  main_pad.SetBottomMargin(0)
168  main_pad.cd()
169 
170  self.canvas.SetWindowSize(self.canvas.GetWindowWidth(), self.canvas.GetWindowHeight() * 2)
171 
172  ratios = []
173  if ratio_denominator:
174  for h_idx, histogram in enumerate(histograms):
175  if h_idx == ref_hist_idx:
176  continue
177  rat = histogram.Clone(histogram.GetName() + "_ratio")
178  rat.Divide(ratio_denominator)
179  getattr(rat, "Get%saxis" % ("Z" if isinstance(clone, ROOT.TH2) else "Y"))().SetTitle("Ratio to %s" % labels[ref_hist_idx])
180  self.set_style(rat, h_idx, colours=colours, markers=markers, lines=lines)
181  ratios.append(rat)
182 
183  for hs, pad in ( (histograms, main_pad), (ratios, ratio_pad) ):
184  if len(hs) == 0:
185  continue
186  pad.cd()
187 
188  y_bounds = y_range
189  z_bounds = z_range
190  if len(y_bounds) == 0:
191  if isinstance(histograms[0], (ROOT.TH1D, ROOT.TH1F)):
192  y_min, y_max = HistogramTools.histRange(hs, suppress_outliers=hs==ratios)
193  if log_y:
194  y_min = max(y_min,0.01)
195  y_max = y_max*5.
196  else:
197  y_min = min(y_min,0)
198  y_max = y_max*1.2
199  else:
200  y_min, y_max = False, False
201  y_bounds = [y_min, y_max]
202 
203 
204  for i_hist, histogram in enumerate(hs):
205  if self.verbose:
206  print "canvs: Histogram[%i]: %s"%(i_hist,histogram.GetName()),histogram
207  print "canvs: - label: %s" %(labels[i_hist])
208  if isinstance(histogram, [ROOT.TH1, ROOT.TH1F]):
209  print "canvs: - Entries: %i" %histogram.GetEntries()
210  print "canvs: - Sum of weights: %.2f"%histogram.GetSumOfWeights()
211 
212  if draw_options: this_draw_option = draw_options[i_hist]
213  else: this_draw_option = draw_option
214 
215  if hs == ratios and "cont" in this_draw_option:
216  this_draw_option = "candlex2"
217 
218  self.set_text_style(histogram)
219  if hs != ratios:
220  # for the ratios, the styling was done previously (to keep the color indices matching)
221  self.set_style(histogram, i_hist, colours=colours, markers=markers, lines=lines)
222  self.label_axes(histogram, axis_labels)
223 
224  # drawing two canvases messes up the text sizes and positions
225  if with_ratio:
226  histogram.SetTitleOffset(0.75, "xyz")
227  histogram.SetTitleSize(0.1, "xyz")
228  histogram.SetLabelSize(0.08, "xyz")
229 
230  mode = False
231  if this_draw_option in self.line_options:
232  mode = "L"
233  elif this_draw_option in self.fill_options:
234  mode = "F"
235  elif this_draw_option in self.point_options:
236  mode = "P"
237  else:
238  mode = "PL"
239 
240  # only enter histograms into legend once.
241  # do it this stupid way so that they show up in the
242  # same order as they are drawn
243  if pad == main_pad:
244  Legend.GetListOfPrimitives().AddFirst(ROOT.TLegendEntry(histogram, labels[i_hist], mode))
245 
246  if (i_hist == 0):
247  if (y_bounds[1] != False):
248  histogram.GetYaxis().SetRangeUser(y_bounds[0], y_bounds[1])
249  if (z_bounds != []):
250  histogram.GetZaxis().SetRangeUser(z_bounds[0], z_bounds[1])
251  if type(histogram) in [ROOT.TGraph]: this_draw_option = "A" + this_draw_option
252  histogram.Draw(this_draw_option)
253  else:
254  this_draw_option += " same"
255 
256  if self.verbose:
257  print "canvs: - draw option: %s"%this_draw_option
258 
259  histogram.Draw(this_draw_option)
260 
261  if pad == ratio_pad:
262  # adding this to the pad object is a bit of black magic
263  # to keep it from getting destroyed when it goes out of scope.
264  # (we're really just adding it to the Python wrapper around the
265  # underlying TPad object, but it doesn't matter; as long as the
266  # Python wrapper still exists we're fine, and that'll stick around
267  # as long as the TPad does.)
268  pad.one_line = ROOT.TLine(ratios[0].GetXaxis().GetXmin(), 1, ratios[0].GetXaxis().GetXmax(), 1)
269  pad.one_line.SetLineStyle(2)
270  pad.one_line.SetLineWidth(2)
271  pad.one_line.Draw()
272 
273  self.canvas.cd()
274  main_pad.Draw()
275  if ratio_pad:
276  ratio_pad.Draw()
277 
278  if show_legend: Legend.Draw("same")
279 # if isinstance(histograms[0], (ROOT.TH1D, ROOT.TH1F)):
280 # histograms[0].Draw("axis same")
281 
282  if nova_validation:
283  if self.verbose: print "canvs: Adding NOvA validation label"
284  validation = ROOT.TLatex(.85, 0.98, "NO#nuA Validation")
285  validation.SetNDC()
286  validation.SetTextFont(42)
287  validation.SetTextSize(self.LATEX_FONT_SIZE)
288  validation.SetTextColor(ROOT.kGray+2)
289  validation.SetTextAlign(32)
290  validation.Draw()
291 
292  if latex_label:
293  latex_labels = latex_label.split(";")
294  if self.verbose: print "canvs: Adding %i latex label(s) at %.2f %.2f:"%(len(latex_labels),l_x,l_y),latex_labels
295  latex = ROOT.TLatex()
296  latex.SetNDC()
297  latex.SetTextFont(42)
298  latex.SetTextSize(self.LATEX_FONT_SIZE)
299  offset = 0
300  for latex_label in latex_labels:
301  latex.DrawLatex(l_x,l_y-offset, latex_label)
302  offset+=0.06
303 
304  if self.verbose:
305  print "canvs: Done, saving"
306  print "canvs: Saving as: %s"%save_as.split("/")[-1]
307 
308  files_written = []
309 
310  self.canvas.Draw()
311  for suffix in suffixes:
312  fname = save_as+suffix
313  if suffix == ".json":
314  with open(fname, "w") as f:
315  f.write(str(ROOT.TBufferJSON.ConvertToJSON(self.canvas)))
316  elif suffix == ".root":
317  # there is no shortage of 'special' characters which ROOT has co-opted for its own use.
318  # scrub out the ones we know will be a problem, and once the file has been created,
319  # we'll rename it to the one we want.
320  SPECIAL_CHARS = "()|"
321  basename = os.path.basename(fname)
322  scrub = any(c in basename for c in SPECIAL_CHARS)
323  if scrub:
324  fname_scrub = os.path.join(os.path.dirname(fname), basename.translate(None, "()|"))
325  else:
326  fname_scrub = fname
327  outf = ROOT.TFile(fname_scrub, "recreate")
328  if outf.IsZombie():
329  raise IOError("Couldn't open output file: %s" % fname)
330 
331  outf.cd()
332  self.canvas.Write()
333 
334  outf.Close()
335 
336  if scrub:
337  os.rename(fname_scrub, fname)
338  else:
339  self.canvas.Print(fname)
340 
341  if os.path.isfile(fname):
342  files_written.append(fname)
343  else:
344  raise IOError("Output canvas was not written: %s" % fname)
345 
346  self.canvas.Clear()
347 
348  # restore default settings
349  self.set_defaults()
350 
351  # tell caller what files were written out, if they care
352  return files_written
353 
def set_text_style(self, histogram)
Definition: ImageMaker.py:354
def set_style(self, histogram, idx, colours=[], lines=[], markers=[])
Definition: ImageMaker.py:383
gargamelle SetTitle("Gargamelle #nu_{e} CC data")
correl_xv GetXaxis() -> SetDecimals()
procfile open("FD_BRL_v0.txt")
static float min(const float a, const float b, const float c)
Definition: absgeo.cxx:45
T max(sqlite3 *const db, std::string const &table_name, std::string const &column_name)
Definition: statistics.h:68
def label_axes(self, histogram, axis_labels)
Definition: ImageMaker.py:394
def generic.tools.ImageMaker.ImageMaker.label_axes (   self,
  histogram,
  axis_labels 
)

Definition at line 394 of file ImageMaker.py.

References SetTitle().

Referenced by generic.tools.ImageMaker.ImageMaker.draw().

394  def label_axes(self, histogram, axis_labels):
395  labels = axis_labels.split(";")
396  histogram.GetXaxis().SetTitle(labels[0])
397  histogram.GetYaxis().SetTitle(labels[1])
398 
gargamelle SetTitle("Gargamelle #nu_{e} CC data")
def label_axes(self, histogram, axis_labels)
Definition: ImageMaker.py:394
def generic.tools.ImageMaker.ImageMaker.set_defaults (   self)

Definition at line 43 of file ImageMaker.py.

Referenced by generic.tools.ImageMaker.ImageMaker.draw().

43  def set_defaults(self):
44  self.TEXT_SIZE = 0.05 # default 0.07, for large plots 0.06
45  self.TEXT_OFFSET = 1.7
46  self.LEGEND_TEXT_SIZE = 0.08
47  self.LOG_SPREAD_FRACTION = 0.3
48  self.MARGIN_LEFT = 0.16
49  self.MARGIN_RIGHT = 0.05
50  self.MARGIN_TOP = 0.1
51  self.MARGIN_BOTTOM = 0.16
52  self.LATEX_FONT_SIZE = 0.04
53  self.FONT = 42
54 
55  self.canvas.SetLeftMargin( self.MARGIN_LEFT)
56  self.canvas.SetRightMargin( self.MARGIN_RIGHT)
57  self.canvas.SetTopMargin( self.MARGIN_TOP)
58  self.canvas.SetBottomMargin(self.MARGIN_BOTTOM)
59 
60  self.line_options = ["H9","C9","hist H9","hist C9","L9","hist L9","hist9","hist][9","LX","hist ][","hist ][9","histL9","histL"]
61  self.fill_options = ["E2","2", "hist F", "hist F9"]
62  self.point_options = ["P","P9"]
63 
64 
def generic.tools.ImageMaker.ImageMaker.set_style (   self,
  histogram,
  idx,
  colours = [],
  lines = [],
  markers = [] 
)

Definition at line 383 of file ImageMaker.py.

Referenced by generic.tools.ImageMaker.ImageMaker.draw().

383  def set_style(self, histogram, idx, colours=[], lines=[], markers=[]):
384  histogram.SetLineWidth(3)
385  if idx < len(lines):
386  histogram.SetLineStyle(lines[idx])
387  if idx < len(colours):
388  histogram.SetLineColor(colours[idx])
389  histogram.SetMarkerColor(colours[idx])
390 
391 # histogram.SetMarkerStyle(markers[idx])
392  histogram.SetMarkerSize(1)
393 
def set_style(self, histogram, idx, colours=[], lines=[], markers=[])
Definition: ImageMaker.py:383
def generic.tools.ImageMaker.ImageMaker.set_text_style (   self,
  histogram 
)

Definition at line 354 of file ImageMaker.py.

References Canvas.Canvas.FONT, generic.tools.ImageMaker.ImageMaker.FONT, Canvas.Canvas.TEXT_OFFSET, generic.tools.ImageMaker.ImageMaker.TEXT_OFFSET, Canvas.Canvas.TEXT_SIZE, and generic.tools.ImageMaker.ImageMaker.TEXT_SIZE.

Referenced by generic.tools.ImageMaker.ImageMaker.draw().

354  def set_text_style(self, histogram):
355  histogram.GetXaxis().SetTitleSize(self.TEXT_SIZE)
356  histogram.GetXaxis().SetTitleOffset(self.TEXT_OFFSET)
357  histogram.GetXaxis().SetTitleFont(self.FONT)
358  histogram.GetYaxis().SetTitleSize(self.TEXT_SIZE)
359  histogram.GetYaxis().SetTitleOffset(self.TEXT_OFFSET)
360  histogram.GetYaxis().SetTitleFont(self.FONT)
361 
362  try:
363  histogram.GetZaxis().SetTitleSize(self.TEXT_SIZE)
364  histogram.GetZaxis().SetTitleFont(self.FONT)
365  except:
366  pass
367 
368  histogram.GetXaxis().SetLabelSize(self.TEXT_SIZE)
369  histogram.GetXaxis().SetLabelFont(self.FONT)
370  histogram.GetYaxis().SetLabelSize(self.TEXT_SIZE)
371  histogram.GetYaxis().SetLabelFont(self.FONT)
372  try:
373  histogram.GetZaxis().SetLabelSize(self.TEXT_SIZE)
374  histogram.GetZaxis().SetLabelFont(self.FONT)
375  histogram.GetZaxis().CenterTitle()
376  except:
377  pass
378 
379  # centre titles
380  histogram.GetXaxis().CenterTitle()
381  histogram.GetYaxis().CenterTitle()
382 
def set_text_style(self, histogram)
Definition: ImageMaker.py:354

Member Data Documentation

generic.tools.ImageMaker.ImageMaker.canvas

Definition at line 35 of file ImageMaker.py.

Referenced by generic.tools.ImageMaker.ImageMaker.draw().

generic.tools.ImageMaker.ImageMaker.fill_options

Definition at line 61 of file ImageMaker.py.

Referenced by generic.tools.ImageMaker.ImageMaker.draw().

generic.tools.ImageMaker.ImageMaker.FONT

Definition at line 53 of file ImageMaker.py.

Referenced by generic.tools.ImageMaker.ImageMaker.set_text_style().

generic.tools.ImageMaker.ImageMaker.LATEX_FONT_SIZE

Definition at line 52 of file ImageMaker.py.

Referenced by generic.tools.ImageMaker.ImageMaker.draw().

generic.tools.ImageMaker.ImageMaker.LEGEND_TEXT_SIZE

Definition at line 46 of file ImageMaker.py.

Referenced by generic.tools.ImageMaker.ImageMaker.draw().

generic.tools.ImageMaker.ImageMaker.line_options

Definition at line 60 of file ImageMaker.py.

Referenced by generic.tools.ImageMaker.ImageMaker.draw().

generic.tools.ImageMaker.ImageMaker.LOG_SPREAD_FRACTION

Definition at line 47 of file ImageMaker.py.

generic.tools.ImageMaker.ImageMaker.MARGIN_BOTTOM

Definition at line 51 of file ImageMaker.py.

Referenced by generic.tools.ImageMaker.ImageMaker.draw().

generic.tools.ImageMaker.ImageMaker.MARGIN_LEFT

Definition at line 48 of file ImageMaker.py.

Referenced by generic.tools.ImageMaker.ImageMaker.draw().

generic.tools.ImageMaker.ImageMaker.MARGIN_RIGHT

Definition at line 49 of file ImageMaker.py.

Referenced by generic.tools.ImageMaker.ImageMaker.draw().

generic.tools.ImageMaker.ImageMaker.MARGIN_TOP

Definition at line 50 of file ImageMaker.py.

Referenced by generic.tools.ImageMaker.ImageMaker.draw().

short int object::number
inherited

Definition at line 115 of file novas.h.

generic.tools.ImageMaker.ImageMaker.point_options

Definition at line 62 of file ImageMaker.py.

Referenced by generic.tools.ImageMaker.ImageMaker.draw().

cat_entry object::star
inherited

Definition at line 117 of file novas.h.

generic.tools.ImageMaker.ImageMaker.TEXT_OFFSET

Definition at line 45 of file ImageMaker.py.

Referenced by generic.tools.ImageMaker.ImageMaker.set_text_style().

generic.tools.ImageMaker.ImageMaker.TEXT_SIZE

Definition at line 44 of file ImageMaker.py.

Referenced by generic.tools.ImageMaker.ImageMaker.set_text_style().

short int object::type
inherited

Definition at line 114 of file novas.h.

generic.tools.ImageMaker.ImageMaker.verbose

The documentation for this class was generated from the following file: