mirror of https://github.com/VLSIDA/OpenRAM.git
61 lines
2.1 KiB
Python
61 lines
2.1 KiB
Python
import datetime
|
|
from pyx.graph import style
|
|
from pyx.graph.axis import axis, rater
|
|
|
|
"""some experimental code for creating a time axis
|
|
- it needs python 2.3 to be used (it is based on the new datetime data type)
|
|
- a timeaxis is always based on the datetime data type (there is no distinction between times and dates)
|
|
"""
|
|
|
|
class timeaxis(axis.linear):
|
|
"time axis mapping based "
|
|
|
|
# TODO: how to deal with reversed timeaxis?
|
|
|
|
def __init__(self, parter=None, rater=rater.linear(), **args):
|
|
axis._regularaxis.__init__(self, divisor=None, **args)
|
|
self.parter = parter
|
|
self.rater = rater
|
|
|
|
def convert(self, data, x):
|
|
# XXX float division of timedelta instances
|
|
def mstimedelta(td):
|
|
"return the timedelta in microseconds"
|
|
return td.microseconds + 1000000*(td.seconds + 3600*24*td.days)
|
|
return mstimedelta(x - data.min) / float(mstimedelta(data.max - data.min))
|
|
# we could store float(mstimedelta(self.dx)) instead of self.dx, but
|
|
# I prefer a different solution (not based on huge integers) for the
|
|
# future
|
|
|
|
zero = datetime.timedelta(0)
|
|
|
|
|
|
class timetick(datetime.datetime):
|
|
|
|
def __init__(self, year, month, day, ticklevel=0, labellevel=0, label=None, labelattrs=[], **kwargs):
|
|
datetime.datetime.__init__(self, year, month, day, **kwargs)
|
|
self.ticklevel = ticklevel
|
|
self.labellevel = labellevel
|
|
self.label = label
|
|
self.labelattrs = labelattrs[:]
|
|
|
|
def merge(self, other):
|
|
if self.ticklevel is None or (other.ticklevel is not None and other.ticklevel < self.ticklevel):
|
|
self.ticklevel = other.ticklevel
|
|
if self.labellevel is None or (other.labellevel is not None and other.labellevel < self.labellevel):
|
|
self.labellevel = other.labellevel
|
|
|
|
|
|
class timetexter:
|
|
|
|
def __init__(self, format="%c"):
|
|
self.format = format
|
|
|
|
def labels(self, ticks):
|
|
for tick in ticks:
|
|
if tick.labellevel is not None and tick.label is None:
|
|
tick.label = tick.strftime(self.format)
|
|
|
|
|
|
|