Improved documentation
This commit is contained in:
		| @@ -40,13 +40,41 @@ for path,dirs,files in os.walk(fonts_location): | ||||
| available_fonts = [key for key,values in fonts.items()] | ||||
|  | ||||
| def get_fonts(): | ||||
|   """Print all available fonts by name""" | ||||
|   """Print all available fonts by name. | ||||
|  | ||||
|   Searches the /font folder in Inykcal and displays all fonts found in | ||||
|   there. | ||||
|  | ||||
|   Returns: | ||||
|     printed output of all available fonts. To access a fontfile, use the | ||||
|     fonts dictionary to access it. | ||||
|      | ||||
|     >>> fonts['fontname'] | ||||
|  | ||||
|   To use a font, use the following sytax, where fontname is one of the | ||||
|   printed fonts of this function: | ||||
|    | ||||
|   >>> ImageFont.truetype(fonts['fontname'], size = 10) | ||||
|   """ | ||||
|   for fonts in available_fonts: | ||||
|     print(fonts) | ||||
|  | ||||
|  | ||||
| def get_system_tz(): | ||||
|   """Get the timezone set by the system""" | ||||
|   """Gets the system-timezone | ||||
|  | ||||
|   Gets the timezone set by the system.  | ||||
|  | ||||
|   Returns: | ||||
|     - A timezone if a system timezone was found. | ||||
|     - None if no timezone was found. | ||||
|  | ||||
|   The extracted timezone can be used to show the local time instead of UTC. e.g. | ||||
|  | ||||
|     >>> import arrow | ||||
|     >>> print(arrow.now()) # returns non-timezone-aware time | ||||
|     >>> print(arrow.now(tz=get_system_tz()) # prints timezone aware time. | ||||
|   """ | ||||
|   try: | ||||
|     local_tz = time.tzname[1] | ||||
|   except: | ||||
| @@ -57,8 +85,21 @@ def get_system_tz(): | ||||
|  | ||||
|  | ||||
| def auto_fontsize(font, max_height): | ||||
|   """Adjust the fontsize to fit 80% of max_height | ||||
|   returns the font object with modified size""" | ||||
|   """Scales a given font to 80% of max_height. | ||||
|  | ||||
|     Gets the height of a font and scales it until 80% of the max_height | ||||
|     is filled. | ||||
|  | ||||
|  | ||||
|     Args: | ||||
|         - font: A PIL Font object. | ||||
|         - max_height: An integer representing the height to adjust the font to | ||||
|           which the given font should be scaled to. | ||||
|  | ||||
|     Returns: | ||||
|         A PIL font object with modified height. | ||||
|     """ | ||||
|  | ||||
|   fontsize = font.getsize('hg')[1] | ||||
|   while font.getsize('hg')[1] <= (max_height * 0.80): | ||||
|     fontsize += 1 | ||||
| @@ -67,12 +108,29 @@ def auto_fontsize(font, max_height): | ||||
|  | ||||
|  | ||||
| def write(image, xy, box_size, text, font=None, **kwargs): | ||||
|   """Write text on specified image | ||||
|   image = on which image should the text be added? | ||||
|   xy = (x,y) coordinates as tuple -> (x,y) | ||||
|   box_size = size of text-box -> (width,height) | ||||
|   text = string (what to write) | ||||
|   font = which font to use | ||||
|   """Writes text on a image.  | ||||
|  | ||||
|   Writes given text at given position on the specified image. | ||||
|  | ||||
|   Args: | ||||
|     - image: The image to draw this text on, usually im_black or im_colour. | ||||
|     - xy: tuple-> (x,y) representing the x and y co-ordinate. | ||||
|     - box_size: tuple -> (width, height) representing the size of the text box. | ||||
|     - text: string, the actual text to add on the image. | ||||
|     - font: A PIL Font object e.g. | ||||
|       ImageFont.truetype(fonts['fontname'], size = 10). | ||||
|  | ||||
|   Args: (optional) | ||||
|     - alignment: alignment of the text, use 'center', 'left', 'right'. | ||||
|     - autofit: bool (True/False). Automatically increases fontsize to fill in | ||||
|       as much of the box-height as possible. | ||||
|     - colour: black by default, do not change as it causes issues with rendering | ||||
|       on e-Paper. | ||||
|     - rotation: Rotate the text with the text-box by a given angle anti-clockwise. | ||||
|     - fill_width: Decimal representing a percentage e.g. 0.9 # 90%. Fill a | ||||
|       maximum of 90% of the size of the full width of text-box. | ||||
|     - fill_height: Decimal representing a percentage e.g. 0.9 # 90%. Fill a | ||||
|       maximum of 90% of the size of the full height of the text-box. | ||||
|   """ | ||||
|   allowed_kwargs = ['alignment', 'autofit', 'colour', 'rotation', | ||||
|                     'fill_width', 'fill_height'] | ||||
| @@ -142,7 +200,19 @@ def write(image, xy, box_size, text, font=None, **kwargs): | ||||
|  | ||||
|  | ||||
| def text_wrap(text, font=None, max_width = None): | ||||
|   """Split long text (text-wrapping). Returns a list""" | ||||
|   """Splits a very long text into smaller parts | ||||
|  | ||||
|   Splits a long text to smaller lines which can fit in a line with max_width. | ||||
|   Uses a Font object for more accurate calculations. | ||||
|  | ||||
|   Args: | ||||
|     - font: A PIL font object which is used to calculate the size. | ||||
|     - max_width: int-> a width in pixels defining the maximum width before | ||||
|       splitting the text into the next chunk. | ||||
|  | ||||
|   Returns: | ||||
|     A list containing chunked strings of the full text. | ||||
|   """ | ||||
|   lines = [] | ||||
|   if font.getsize(text)[0] < max_width: | ||||
|     lines.append(text) | ||||
| @@ -162,7 +232,20 @@ def text_wrap(text, font=None, max_width = None): | ||||
|  | ||||
|  | ||||
| def internet_available(): | ||||
|   """check if the internet is available""" | ||||
|   """checks if the internet is available. | ||||
|  | ||||
|   Attempts to connect to google.com with a timeout of 5 seconds to check | ||||
|   if the network can be reached. | ||||
|  | ||||
|   Returns: | ||||
|     - True if connection could be established. | ||||
|     - False if the internet could not be reached. | ||||
|  | ||||
|   Returned output can be used to add a check for internet availability: | ||||
|  | ||||
|   >>> if internet_available() == True: | ||||
|   >>> #...do something that requires internet connectivity | ||||
|   """ | ||||
|  | ||||
|   try: | ||||
|     urlopen('https://google.com',timeout=5) | ||||
| @@ -172,11 +255,25 @@ def internet_available(): | ||||
|  | ||||
|  | ||||
| def draw_border(image, xy, size, radius=5, thickness=1, shrinkage=(0.1,0.1)): | ||||
|   """Draws a border with round corners at (x,y) | ||||
|   xy = position e.g: (5,10) | ||||
|   size = size of border (width, height), radius: corner radius | ||||
|   thickness = border thickness | ||||
|   shrinkage = shrink and center border by given percentage:(width_%, height_%) | ||||
|   """Draws a border at given coordinates. | ||||
|  | ||||
|   Args: | ||||
|     - image: The image on which the border should be drawn (usually im_black or | ||||
|       im_colour. | ||||
|    | ||||
|     - xy: Tuple representing the top-left corner of the border e.g. (32, 100) | ||||
|       where 32 is the x co-ordinate and 100 is the y-coordinate. | ||||
|  | ||||
|     - size: Size of the border as a tuple -> (width, height). | ||||
|  | ||||
|     - radius: Radius of the corners, where 0 = plain rectangle, 5 = round corners. | ||||
|  | ||||
|     - thickness: Thickness of the border in pixels. | ||||
|  | ||||
|     - shrinkage: A tuple containing decimals presenting a percentage of shrinking | ||||
|       -> (width_shrink_percentage, height_shrink_percentage). | ||||
|       e.g. (0.1, 0.2) ~ shrinks the width of border by 10%, shrinks height of | ||||
|       border by 20% | ||||
|   """ | ||||
|  | ||||
|   colour='black' | ||||
|   | ||||
		Reference in New Issue
	
	Block a user