
Inkycal
+Inkycal
+Main class for inkycal Project +Copyright by aceinnolab
+-
+
- +class inkycal.main.Inkycal(settings_path: str = None, render: bool = True) +
Inkycal main class
+Main class of Inkycal, test and run the main Inkycal program.
+-
+
- Args:
-
+
settings_path = str -> the full path to your settings.json file +if no path is given, tries looking for settings file in /boot folder.
+render = bool (True/False) -> show the image on the epaper display?
+
+- Attributes:
-
+
optimize = True/False. Reduce number of colours on the generated image +to improve rendering on E-Papers. Set this to False for 9.7” E-Paper.
+
+
-
+
- +calibrate() +
Calibrate the E-Paper display
+Uses the Display class to calibrate the display with the default of 3 +cycles. After a refresh cycle, a new image is generated and shown.
+
-
+
- +countdown(interval_mins=None) +
Returns the remaining time in seconds until next display update
+
-
+
- +async run() +
Runs main program in nonstop mode.
+Uses an infinity loop to run Inkycal nonstop. Inkycal generates the image +from all modules, assembles them in one image, refreshed the E-Paper and +then sleeps until the next scheduled update.
+
-
+
- +test() +
Tests if Inkycal can run without issues.
+Attempts to import module names from settings file. Loads the config +for each module and initializes the module. Tries to run the module and +checks if the images could be generated correctly.
+Generated images can be found in the /images folder of Inkycal.
+
Display
+Display
+Inkycal ePaper driving functions +Copyright by aceisace
+-
+
- +class inkycal.display.display.Display(epaper_model) +
Display class for inkycal
+Creates an instance of the driver for the selected E-Paper model and allows +rendering images and calibrating the E-Paper display
+-
+
- Args:
-
+
epaper_model: The name of your E-Paper model.
+
+
-
+
- +calibrate(cycles=3) +
Calibrates the display to retain crisp colours
+Flushes the selected display several times with it’s supported colours, +removing any previous effects of ghosting.
+-
+
- Args:
-
+
cycles: -> int. The number of times to flush the display with it’s +supported colours.
+
+
It’s recommended to calibrate the display after every 6 display updates +for best results. For black-white only displays, calibration is less +critical, but not calibrating regularly results in grey-ish text.
+Please note that calibration takes a while to complete. 3 cycles may +take 10 minutes on black-white E-Papers while it takes 20 minutes on coloured +E-Paper displays.
+
-
+
- +classmethod get_display_names() list +
Prints all supported E-Paper models.
+Fetches all filenames in driver folder and prints them on the console.
+-
+
- Returns:
Printed version of all supported Displays.
+
+
Use one of the models to intilialize the Display class in order to gain +access to the E-Paper.
+You can use this function directly without creating the Display class:
+++>>> Display.get_display_names() +
-
+
- +classmethod get_display_size(model_name) -> (<class 'int'>, <class 'int'>) +
Returns the size of the display as a tuple -> (width, height)
+Looks inside “drivers” folder for the given model name, then returns it’s +size.
+-
+
- Args:
-
+
model_name: str -> The name of the E-Paper display to get it’s size.
+
+- Returns:
(width, height) ->tuple, showing the size of the display
+
+
You can use this function directly without creating the Display class:
+++>>> Display.get_display_size('model_name') +
-
+
- +render(im_black: <module 'PIL.Image' from '/home/runner/work/Inkycal/Inkycal/venv/lib/python3.11/site-packages/PIL/Image.py'>, im_colour: <module 'PIL.Image' from '/home/runner/work/Inkycal/Inkycal/venv/lib/python3.11/site-packages/PIL/Image.py'>) None +
Renders an image on the selected E-Paper display.
+Initlializes the E-Paper display, sends image data and executes command +to update the display.
+-
+
- Args:
-
+
im_black: The image for the black-pixels. Anything in this image that is +black is rendered as black on the display. This is required and ideally +should be a black-white image.
+im_colour: For E-Paper displays supporting colour, a separate image, +ideally black-white is required for the coloured pixels. Anything that is +black in this image will show up as either red/yellow.
+
+
Rendering an image for black-white E-Paper displays:
+++>>> sample_image = Image.open('path/to/file.png') +>>> display = Display('my_black_white_display') +>>> display.render(sample_image) +
Rendering black-white on coloured E-Paper displays: +>>> sample_image = Image.open(‘path/to/file.png’) +>>> display = Display(‘my_coloured_display’) +>>> display.render(sample_image, sample_image)
+Rendering coloured image where 2 images are available:
+++>>> black_image = Image.open('path/to/file.png') # black pixels +>>> colour_image = Image.open('path/to/file.png') # coloured pixels +>>> display = Display('my_coloured_display') +>>> display.render(black_image, colour_image) +
Custom functions
+Custom functions
+Inkycal custom-functions for ease-of-use
+Copyright by aceinnolab
+-
+
- +inkycal.custom.functions.auto_fontsize(font, max_height) +
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.
+
+
-
+
- +inkycal.custom.functions.draw_border(image, xy, size, radius=5, thickness=1, shrinkage=(0.1, 0.1)) +
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%
+
+
-
+
- +inkycal.custom.functions.get_fonts() +
Print all available fonts by name.
+Searches the /font folder in Inkycal 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) +
-
+
- +inkycal.custom.functions.get_system_tz() +
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. +
-
+
- +inkycal.custom.functions.internet_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(): +>>> #...do something that requires internet connectivity +
-
+
- +inkycal.custom.functions.text_wrap(text, font=None, max_width=None) +
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:
-
+
text -> Text as a string
+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.
+
+
-
+
- +inkycal.custom.functions.write(image, xy, box_size, text, font=None, **kwargs) +
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.
+
+
Helper classes
+Helper classes
+Inkycal iCalendar parsing module +Copyright by aceinnolab
+-
+
- +class inkycal.modules.ical_parser.iCalendar +
iCalendar parsing moudule for inkycal. +Parses events from given iCalendar URLs / paths
+-
+
- +static all_day(event) +
Check if an event is an all day event. +Returns True if event is all day, else False
+
-
+
- +clear_events() +
clear previously parsed events
+
-
+
- +get_events(timeline_start, timeline_end, timezone=None) +
Input an arrow (time) object for: +* the beginning of timeline (events have to end after this time) +* the end of the timeline (events have to begin before this time) +* timezone if events should be formatted to local time +Returns a list of events sorted by date
+
-
+
- +static get_system_tz() +
Get the timezone set by the system
+
-
+
- +load_from_file(filepath) +
Input a string or list of strings containing valid iCalendar filepaths +example: ‘path1’ (single file) OR [‘path1’, ‘path2’] (multiple files) +returns a list of iCalendars as string (raw)
+
-
+
- +load_url(url, username=None, password=None) +
Input a string or list of strings containing valid iCalendar URLs +example: ‘URL1’ (single url) OR [‘URL1’, ‘URL2’] (multiple URLs) +add username and password to access protected files
+
-
+
- +show_events(fmt='DD MMM YY HH:mm') +
print all parsed events in a more readable way +use the format (fmt) parameter to specify the date format +see https://arrow.readthedocs.io/en/latest/#supported-tokens +for more info tokens
+
-
+
- +sort() +
Sort all parsed events in order of beginning time
+
Custom image class for Inkycal Project +Takes care of handling images. Made to be used by other modules to handle +images.
+Copyright by aceinnolab
+-
+
- +class inkycal.modules.inky_image.Inkyimage(image=None) +
Custom Imgae class written for commonly used image operations.
+-
+
- +autoflip(layout: str) None +
flips the image automatically to the given layout.
+-
+
- Args:
-
+
layout:-> str. Choose horizontal or vertical.
+
+
Checks the image’s width and height.
+In horizontal mode, the image is flipped if the image height is greater +than the image width.
+In vertical mode, the image is flipped if the image width is greater +than the image height.
+
-
+
- +clear() +
Removes currently saved image if present.
+
-
+
- +flip(angle) +
Flips the image by the given angle.
+-
+
- Args:
-
+
angle:->int. A multiple of 90, e.g. 90, 180, 270, 360.
+
+
-
+
- +load(path) +
loads an image from a URL or filepath.
+-
+
- Args:
-
+
path:The full path or url of the image file +e.g. https://sample.com/logo.png or /home/pi/Downloads/nice_pic.png
+
+- Raises:
-
+
FileNotFoundError: This Exception is raised when the file could not be +found.
+OSError: A OSError is raised when the URL doesn’t point to the correct +file-format, i.e. is not an image
+TypeError: if the URLS doesn’t start with htpp
+
+
-
+
- +static merge(image1, image2) +
Merges two images into one.
+Replaces white pixels of the first image with transparent ones. Then pastes +the first image on the second one.
+-
+
- Args:
-
+
image1: A PIL Image object in ‘RGBA’ mode.
+image2: A PIL Image object in ‘RGBA’ mode.
+
+- Returns:
-
+
A single image.
+
+
-
+
- +static preview(image) +
Previews an image on gpicview (only works on Rapsbian with Desktop).
+
-
+
- +remove_alpha() +
Removes transparency if image has transparency.
+Checks if an image has an alpha band and replaces the transparency with +white pixels.
+
-
+
- +resize(width=None, height=None) +
Resize an image to desired width or height
+
-
+
- +to_palette(palette, dither=True) -> (<module 'PIL.Image' from '/home/runner/work/Inkycal/Inkycal/venv/lib/python3.11/site-packages/PIL/Image.py'>, <module 'PIL.Image' from '/home/runner/work/Inkycal/Inkycal/venv/lib/python3.11/site-packages/PIL/Image.py'>) +
Maps an image to a given colour palette.
+Maps each pixel from the image to a colour from the palette.
+-
+
- Args:
-
+
palette: A supported token. (see below)
+dither:->bool. Use dithering? Set to False for solid colour fills.
+
+- Returns:
-
+
two images: one for the coloured band and one for the black band.
+
+- Raises:
-
+
ValueError if palette token is not supported
+
+
Supported palette tokens:
+++>>> 'bwr' # black-white-red +>>> 'bwy' # black-white-yellow +>>> 'bw' # black-white +
Contents:
- Inkycal -
- Display -
- Custom functions -
- Helper classes +
- Display +
- Custom functions +
- Helper classes
- About Inkycal
- Quickstart
- Installing Inkycal diff --git a/docs/search.html b/docs/search.html index 80cabdd..63f731d 100644 --- a/docs/search.html +++ b/docs/search.html @@ -48,9 +48,9 @@
- Inkycal -
- Display -
- Custom functions -
- Helper classes +
- Display +
- Custom functions +
- Helper classes
- About Inkycal
- Quickstart
- Developer documentation diff --git a/docs/searchindex.js b/docs/searchindex.js index 221090e..7eef4b8 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["about", "dev_doc", "index", "inkycal", "quickstart"], "filenames": ["about.md", "dev_doc.md", "index.rst", "inkycal.rst", "quickstart.md"], "titles": ["About Inkycal", "Developer documentation", "Inkycal documentation", "Inkycal", "Quickstart"], "terms": {"i": [0, 1], "python3": 0, "softwar": 0, "select": 0, "e": [0, 4], "paper": 0, "displai": [0, 2], "It": 0, "": 0, "open": 0, "sourc": 0, "non": 0, "commerci": 0, "fulli": 0, "modular": 0, "user": 0, "friendli": 0, "even": 0, "run": 0, "well": 0, "raspberri": [0, 4], "pi": [0, 4], "zero": 0, "ha": 0, "web": [0, 4], "ui": [0, 4], "which": 0, "take": 0, "care": 0, "ad": 0, "your": [0, 4], "detail": 0, "No": 0, "more": [0, 4], "edit": 0, "file": [0, 2], "yai": 0, "parti": [0, 1], "_": 0, "face": 0, "The": 0, "main": 0, "idea": 0, "behind": 0, "wa": 0, "creat": [0, 1, 2], "dashboard": 0, "blend": 0, "its": 0, "environ": 0, "show": 0, "you": 0, "all": 0, "inform": 0, "without": 0, "have": 0, "look": 0, "them": 0, "up": 0, "sever": 0, "built": 0, "modul": [0, 1, 2], "help": 0, "stai": 0, "organis": 0, "provid": 0, "weather": 0, "forecast": 0, "full": 0, "week": 0, "next": 0, "few": 0, "hour": 0, "get": 0, "latest": 0, "new": 0, "from": 0, "atom": 0, "rss": 0, "feed": 0, "icalendar": 0, "agenda": 0, "mai": 0, "synchronis": 0, "phone": 0, "monthli": 0, "calendar": 0, "also": 0, "event": 0, "sync": 0, "googl": 0, "etc": 0, "fetch": 0, "some": 0, "joke": 0, "form": 0, "smile": 0, "what": 0, "compat": 0, "third": [0, 1], "someth": 0, "miss": 0, "can": 0, "write": 0, "own": 0, "share": 0, "commun": 0, "discord": 0, "case": 0, "re": 0, "pinch": 0, "set": [0, 2], "noob": 0, "welcom": 0, "too": 0, "cours": 0, "develop": [0, 2], "mainli": [0, 1], "aceisac": 0, "univers": 0, "student": 0, "other": 0, "free": 0, "time": 0, "mean": 0, "we": 0, "work": 0, "noth": 0, "doesn": 0, "t": 0, "don": 0, "need": 0, "anyth": 0, "invest": 0, "larg": 0, "amount": 0, "effort": 0, "coffe": 0, "pleas": [0, 4], "support": 0, "via": [0, 4], "donat": 0, "u": 0, "keep": 0, "thi": [0, 1], "project": 0, "aliv": 0, "thank": 0, "who": 1, "wish": 1, "custom": 2, "function": 2, "helper": 2, "class": 2, "about": 2, "quickstart": 2, "instal": 2, "index": 2, "search": 2, "page": 2, "directli": 4, "github": 4, "repo": 4, "clone": 4, "git": 4, "http": 4, "com": 4, "aceinnolab": 4, "go": 4, "download": 4, "folder": 4, "cd": 4, "pip3": 4, "navig": 4, "copi": 4, "gener": 4, "come": 4, "soon": 4}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"about": 0, "inkyc": [0, 2, 3, 4], "develop": 1, "document": [1, 2], "content": 2, "indic": 2, "tabl": 2, "displai": 3, "custom": 3, "function": 3, "helper": 3, "class": 3, "quickstart": 4, "instal": 4, "creat": 4, "set": 4, "file": 4}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 60}, "alltitles": {"About Inkycal": [[0, "about-inkycal"]], "Developer documentation": [[1, "developer-documentation"]], "Inkycal documentation": [[2, "inkycal-documentation"]], "Contents:": [[2, null]], "Indices and tables": [[2, "indices-and-tables"]], "Inkycal": [[3, "inkycal"]], "Display": [[3, "display"]], "Custom functions": [[3, "custom-functions"]], "Helper classes": [[3, "helper-classes"]], "Quickstart": [[4, "quickstart"]], "Installing Inkycal": [[4, "installing-inkycal"]], "Creating settings file": [[4, "creating-settings-file"]]}, "indexentries": {}}) \ No newline at end of file +Search.setIndex({"docnames": ["about", "dev_doc", "index", "inkycal", "quickstart"], "filenames": ["about.md", "dev_doc.md", "index.rst", "inkycal.rst", "quickstart.md"], "titles": ["About Inkycal", "Developer documentation", "Inkycal documentation", "Inkycal", "Quickstart"], "terms": {"i": [0, 1, 3], "python3": [0, 3], "softwar": 0, "select": [0, 3], "e": [0, 3, 4], "paper": [0, 3], "displai": [0, 2], "It": [0, 3], "": [0, 3], "open": [0, 3], "sourc": 0, "non": [0, 3], "commerci": 0, "fulli": 0, "modular": 0, "user": 0, "friendli": 0, "even": 0, "run": [0, 3], "well": 0, "raspberri": [0, 4], "pi": [0, 3, 4], "zero": 0, "ha": [0, 3], "web": [0, 4], "ui": [0, 4], "which": [0, 3], "take": [0, 3], "care": [0, 3], "ad": 0, "your": [0, 3, 4], "detail": 0, "No": 0, "more": [0, 3, 4], "edit": 0, "file": [0, 2, 3], "yai": 0, "parti": [0, 1], "_": 0, "face": 0, "The": [0, 3], "main": [0, 3], "idea": 0, "behind": 0, "wa": [0, 3], "creat": [0, 1, 2, 3], "dashboard": 0, "blend": 0, "its": 0, "environ": 0, "show": [0, 3], "you": [0, 3], "all": [0, 3], "inform": 0, "without": [0, 3], "have": [0, 3], "look": [0, 3], "them": [0, 3], "up": [0, 3], "sever": [0, 3], "built": 0, "modul": [0, 1, 2, 3], "help": 0, "stai": 0, "organis": 0, "provid": 0, "weather": 0, "forecast": 0, "full": [0, 3], "week": 0, "next": [0, 3], "few": 0, "hour": 0, "get": [0, 3], "latest": [0, 3], "new": [0, 3], "from": [0, 3], "atom": 0, "rss": 0, "feed": 0, "icalendar": [0, 2, 3], "agenda": 0, "mai": [0, 3], "synchronis": 0, "phone": 0, "monthli": 0, "calendar": 0, "also": 0, "event": [0, 3], "sync": 0, "googl": [0, 3], "etc": 0, "fetch": [0, 3], "some": 0, "joke": 0, "form": 0, "smile": 0, "what": 0, "compat": 0, "third": [0, 1], "someth": [0, 3], "miss": 0, "can": [0, 3], "write": [0, 2, 3], "own": 0, "share": 0, "commun": 0, "discord": 0, "case": 0, "re": 0, "pinch": 0, "set": [0, 2, 3], "noob": 0, "welcom": 0, "too": 0, "cours": 0, "develop": [0, 2], "mainli": [0, 1], "aceisac": [0, 3], "univers": 0, "student": 0, "other": [0, 3], "free": 0, "time": [0, 3], "mean": 0, "we": 0, "work": [0, 3], "noth": 0, "doesn": [0, 3], "t": [0, 3], "don": 0, "need": 0, "anyth": [0, 3], "invest": 0, "larg": 0, "amount": 0, "effort": 0, "coffe": 0, "pleas": [0, 3, 4], "support": [0, 3], "via": [0, 4], "donat": 0, "u": 0, "keep": 0, "thi": [0, 1, 3], "project": [0, 3], "aliv": 0, "thank": 0, "who": 1, "wish": 1, "custom": 2, "function": 2, "auto_fonts": [2, 3], "draw_bord": [2, 3], "get_font": [2, 3], "get_system_tz": [2, 3], "internet_avail": [2, 3], "text_wrap": [2, 3], "helper": 2, "class": 2, "inkyimag": [2, 3], "about": 2, "quickstart": 2, "instal": 2, "index": 2, "search": [2, 3], "page": 2, "copyright": 3, "aceinnolab": [3, 4], "settings_path": 3, "str": 3, "none": 3, "render": 3, "bool": 3, "true": 3, "test": 3, "program": 3, "arg": 3, "path": 3, "json": 3, "given": 3, "tri": 3, "boot": 3, "folder": [3, 4], "fals": 3, "imag": 3, "epap": 3, "attribut": 3, "optim": 3, "reduc": 3, "number": 3, "colour": 3, "gener": [3, 4], "improv": 3, "9": 3, "7": 3, "calibr": 3, "us": 3, "default": 3, "3": 3, "cycl": 3, "after": 3, "refresh": 3, "shown": 3, "countdown": 3, "interval_min": 3, "return": 3, "remain": 3, "second": 3, "until": 3, "updat": 3, "async": 3, "nonstop": 3, "mode": 3, "an": 3, "infin": 3, "loop": 3, "assembl": 3, "one": 3, "sleep": 3, "schedul": 3, "issu": 3, "attempt": 3, "import": 3, "name": 3, "load": 3, "config": 3, "each": 3, "initi": 3, "check": 3, "could": 3, "correctli": 3, "found": 3, "drive": 3, "epaper_model": 3, "instanc": 3, "driver": 3, "model": 3, "allow": 3, "retain": 3, "crisp": 3, "flush": 3, "remov": 3, "ani": 3, "previou": 3, "effect": 3, "ghost": 3, "int": 3, "recommend": 3, "everi": 3, "6": 3, "best": 3, "result": 3, "For": 3, "black": 3, "white": 3, "onli": 3, "less": 3, "critic": 3, "regularli": 3, "grei": 3, "ish": 3, "text": 3, "note": 3, "while": 3, "complet": 3, "10": 3, "minut": 3, "20": 3, "classmethod": 3, "get_display_nam": 3, "list": 3, "print": 3, "filenam": 3, "consol": 3, "version": 3, "intili": 3, "order": 3, "gain": 3, "access": 3, "directli": [3, 4], "get_display_s": 3, "model_nam": 3, "size": 3, "tupl": 3, "width": 3, "height": 3, "insid": 3, "im_black": 3, "pil": 3, "home": 3, "runner": 3, "venv": 3, "lib": 3, "11": 3, "site": 3, "packag": 3, "py": 3, "im_colour": 3, "initli": 3, "send": 3, "data": 3, "execut": 3, "command": 3, "pixel": 3, "requir": 3, "ideal": 3, "should": 3, "separ": 3, "either": 3, "red": 3, "yellow": 3, "sample_imag": 3, "png": 3, "my_black_white_displai": 3, "my_coloured_displai": 3, "where": 3, "2": 3, "ar": 3, "avail": 3, "black_imag": 3, "colour_imag": 3, "eas": 3, "font": 3, "max_height": 3, "scale": 3, "80": 3, "fill": 3, "A": 3, "object": 3, "integ": 3, "repres": 3, "adjust": 3, "modifi": 3, "xy": 3, "radiu": 3, "5": 3, "thick": 3, "1": 3, "shrinkag": 3, "0": 3, "draw": 3, "border": 3, "coordin": 3, "drawn": 3, "usual": 3, "top": 3, "left": 3, "corner": 3, "g": 3, "32": 3, "100": 3, "x": 3, "co": 3, "ordin": 3, "y": 3, "plain": 3, "rectangl": 3, "round": 3, "contain": 3, "decim": 3, "present": 3, "percentag": 3, "shrink": 3, "width_shrink_percentag": 3, "height_shrink_percentag": 3, "output": 3, "To": 3, "fontfil": 3, "dictionari": 3, "fontnam": 3, "follow": 3, "sytax": 3, "imagefont": 3, "truetyp": 3, "system": 3, "timezon": 3, "extract": 3, "local": 3, "instead": 3, "utc": 3, "arrow": 3, "now": 3, "awar": 3, "tz": 3, "internet": 3, "connect": 3, "com": [3, 4], "timeout": 3, "network": 3, "reach": 3, "establish": 3, "add": 3, "do": 3, "max_width": 3, "split": 3, "veri": 3, "long": 3, "smaller": 3, "part": 3, "line": 3, "fit": 3, "accur": 3, "calcul": 3, "string": 3, "defin": 3, "maximum": 3, "befor": 3, "chunk": 3, "box_siz": 3, "kwarg": 3, "posit": 3, "specifi": 3, "box": 3, "actual": 3, "option": 3, "align": 3, "center": 3, "right": 3, "autofit": 3, "automat": 3, "increas": 3, "fontsiz": 3, "much": 3, "possibl": 3, "chang": 3, "caus": 3, "rotat": 3, "angl": 3, "anti": 3, "clockwis": 3, "fill_width": 3, "90": 3, "fill_height": 3, "pars": 3, "ical_pars": 3, "moudul": 3, "url": 3, "static": 3, "all_dai": 3, "dai": 3, "els": 3, "clear_ev": 3, "clear": 3, "previous": 3, "get_ev": 3, "timeline_start": 3, "timeline_end": 3, "input": 3, "begin": 3, "timelin": 3, "end": 3, "format": 3, "sort": 3, "date": 3, "load_from_fil": 3, "filepath": 3, "valid": 3, "exampl": 3, "path1": 3, "singl": 3, "OR": 3, "path2": 3, "multipl": 3, "raw": 3, "load_url": 3, "usernam": 3, "password": 3, "url1": 3, "url2": 3, "protect": 3, "show_ev": 3, "fmt": 3, "dd": 3, "mmm": 3, "yy": 3, "hh": 3, "mm": 3, "readabl": 3, "wai": 3, "paramet": 3, "see": 3, "http": [3, 4], "readthedoc": 3, "io": 3, "en": 3, "token": 3, "info": 3, "handl": 3, "made": 3, "inky_imag": 3, "imga": 3, "written": 3, "commonli": 3, "oper": 3, "autoflip": 3, "layout": 3, "flip": 3, "choos": 3, "horizont": 3, "vertic": 3, "In": 3, "greater": 3, "than": 3, "current": 3, "save": 3, "180": 3, "270": 3, "360": 3, "sampl": 3, "logo": 3, "download": [3, 4], "nice_p": 3, "rais": 3, "filenotfounderror": 3, "except": 3, "when": 3, "oserror": 3, "point": 3, "correct": 3, "typeerror": 3, "start": 3, "htpp": 3, "merg": 3, "image1": 3, "image2": 3, "two": 3, "replac": 3, "first": 3, "transpar": 3, "ones": 3, "Then": 3, "past": 3, "rgba": 3, "preview": 3, "gpicview": 3, "rapsbian": 3, "desktop": 3, "remove_alpha": 3, "alpha": 3, "band": 3, "resiz": 3, "desir": 3, "to_palett": 3, "palett": 3, "dither": 3, "map": 3, "below": 3, "solid": 3, "valueerror": 3, "bwr": 3, "bwy": 3, "bw": 3, "github": 4, "repo": 4, "clone": 4, "git": 4, "go": 4, "cd": 4, "pip3": 4, "navig": 4, "copi": 4, "come": 4, "soon": 4}, "objects": {"inkycal.custom": [[3, 0, 0, "-", "functions"]], "inkycal.custom.functions": [[3, 1, 1, "", "auto_fontsize"], [3, 1, 1, "", "draw_border"], [3, 1, 1, "", "get_fonts"], [3, 1, 1, "", "get_system_tz"], [3, 1, 1, "", "internet_available"], [3, 1, 1, "", "text_wrap"], [3, 1, 1, "", "write"]], "inkycal.display": [[3, 0, 0, "-", "display"]], "inkycal.display.display": [[3, 2, 1, "", "Display"]], "inkycal.display.display.Display": [[3, 3, 1, "", "calibrate"], [3, 3, 1, "", "get_display_names"], [3, 3, 1, "", "get_display_size"], [3, 3, 1, "", "render"]], "inkycal": [[3, 0, 0, "-", "main"]], "inkycal.main": [[3, 2, 1, "", "Inkycal"]], "inkycal.main.Inkycal": [[3, 3, 1, "", "calibrate"], [3, 3, 1, "", "countdown"], [3, 3, 1, "", "run"], [3, 3, 1, "", "test"]], "inkycal.modules": [[3, 0, 0, "-", "ical_parser"], [3, 0, 0, "-", "inky_image"]], "inkycal.modules.ical_parser": [[3, 2, 1, "", "iCalendar"]], "inkycal.modules.ical_parser.iCalendar": [[3, 3, 1, "", "all_day"], [3, 3, 1, "", "clear_events"], [3, 3, 1, "", "get_events"], [3, 3, 1, "", "get_system_tz"], [3, 3, 1, "", "load_from_file"], [3, 3, 1, "", "load_url"], [3, 3, 1, "", "show_events"], [3, 3, 1, "", "sort"]], "inkycal.modules.inky_image": [[3, 2, 1, "", "Inkyimage"]], "inkycal.modules.inky_image.Inkyimage": [[3, 3, 1, "", "autoflip"], [3, 3, 1, "", "clear"], [3, 3, 1, "", "flip"], [3, 3, 1, "", "load"], [3, 3, 1, "", "merge"], [3, 3, 1, "", "preview"], [3, 3, 1, "", "remove_alpha"], [3, 3, 1, "", "resize"], [3, 3, 1, "", "to_palette"]]}, "objtypes": {"0": "py:module", "1": "py:function", "2": "py:class", "3": "py:method"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"], "2": ["py", "class", "Python class"], "3": ["py", "method", "Python method"]}, "titleterms": {"about": 0, "inkyc": [0, 2, 3, 4], "develop": 1, "document": [1, 2], "content": 2, "indic": 2, "tabl": 2, "displai": 3, "custom": 3, "function": 3, "helper": 3, "class": 3, "quickstart": 4, "instal": 4, "creat": 4, "set": 4, "file": 4}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 60}, "alltitles": {"About Inkycal": [[0, "about-inkycal"]], "Developer documentation": [[1, "developer-documentation"]], "Inkycal documentation": [[2, "inkycal-documentation"]], "Contents:": [[2, null]], "Indices and tables": [[2, "indices-and-tables"]], "Inkycal": [[3, "module-inkycal.main"]], "Display": [[3, "module-inkycal.display.display"]], "Custom functions": [[3, "module-inkycal.custom.functions"]], "Helper classes": [[3, "module-inkycal.modules.ical_parser"]], "Quickstart": [[4, "quickstart"]], "Installing Inkycal": [[4, "installing-inkycal"]], "Creating settings file": [[4, "creating-settings-file"]]}, "indexentries": {"display (class in inkycal.display.display)": [[3, "inkycal.display.display.Display"]], "inkycal (class in inkycal.main)": [[3, "inkycal.main.Inkycal"]], "inkyimage (class in inkycal.modules.inky_image)": [[3, "inkycal.modules.inky_image.Inkyimage"]], "all_day() (inkycal.modules.ical_parser.icalendar static method)": [[3, "inkycal.modules.ical_parser.iCalendar.all_day"]], "auto_fontsize() (in module inkycal.custom.functions)": [[3, "inkycal.custom.functions.auto_fontsize"]], "autoflip() (inkycal.modules.inky_image.inkyimage method)": [[3, "inkycal.modules.inky_image.Inkyimage.autoflip"]], "calibrate() (inkycal.display.display.display method)": [[3, "inkycal.display.display.Display.calibrate"]], "calibrate() (inkycal.main.inkycal method)": [[3, "inkycal.main.Inkycal.calibrate"]], "clear() (inkycal.modules.inky_image.inkyimage method)": [[3, "inkycal.modules.inky_image.Inkyimage.clear"]], "clear_events() (inkycal.modules.ical_parser.icalendar method)": [[3, "inkycal.modules.ical_parser.iCalendar.clear_events"]], "countdown() (inkycal.main.inkycal method)": [[3, "inkycal.main.Inkycal.countdown"]], "draw_border() (in module inkycal.custom.functions)": [[3, "inkycal.custom.functions.draw_border"]], "flip() (inkycal.modules.inky_image.inkyimage method)": [[3, "inkycal.modules.inky_image.Inkyimage.flip"]], "get_display_names() (inkycal.display.display.display class method)": [[3, "inkycal.display.display.Display.get_display_names"]], "get_display_size() (inkycal.display.display.display class method)": [[3, "inkycal.display.display.Display.get_display_size"]], "get_events() (inkycal.modules.ical_parser.icalendar method)": [[3, "inkycal.modules.ical_parser.iCalendar.get_events"]], "get_fonts() (in module inkycal.custom.functions)": [[3, "inkycal.custom.functions.get_fonts"]], "get_system_tz() (in module inkycal.custom.functions)": [[3, "inkycal.custom.functions.get_system_tz"]], "get_system_tz() (inkycal.modules.ical_parser.icalendar static method)": [[3, "inkycal.modules.ical_parser.iCalendar.get_system_tz"]], "icalendar (class in inkycal.modules.ical_parser)": [[3, "inkycal.modules.ical_parser.iCalendar"]], "inkycal.custom.functions": [[3, "module-inkycal.custom.functions"]], "inkycal.display.display": [[3, "module-inkycal.display.display"]], "inkycal.main": [[3, "module-inkycal.main"]], "inkycal.modules.ical_parser": [[3, "module-inkycal.modules.ical_parser"]], "inkycal.modules.inky_image": [[3, "module-inkycal.modules.inky_image"]], "internet_available() (in module inkycal.custom.functions)": [[3, "inkycal.custom.functions.internet_available"]], "load() (inkycal.modules.inky_image.inkyimage method)": [[3, "inkycal.modules.inky_image.Inkyimage.load"]], "load_from_file() (inkycal.modules.ical_parser.icalendar method)": [[3, "inkycal.modules.ical_parser.iCalendar.load_from_file"]], "load_url() (inkycal.modules.ical_parser.icalendar method)": [[3, "inkycal.modules.ical_parser.iCalendar.load_url"]], "merge() (inkycal.modules.inky_image.inkyimage static method)": [[3, "inkycal.modules.inky_image.Inkyimage.merge"]], "module": [[3, "module-inkycal.custom.functions"], [3, "module-inkycal.display.display"], [3, "module-inkycal.main"], [3, "module-inkycal.modules.ical_parser"], [3, "module-inkycal.modules.inky_image"]], "preview() (inkycal.modules.inky_image.inkyimage static method)": [[3, "inkycal.modules.inky_image.Inkyimage.preview"]], "remove_alpha() (inkycal.modules.inky_image.inkyimage method)": [[3, "inkycal.modules.inky_image.Inkyimage.remove_alpha"]], "render() (inkycal.display.display.display method)": [[3, "inkycal.display.display.Display.render"]], "resize() (inkycal.modules.inky_image.inkyimage method)": [[3, "inkycal.modules.inky_image.Inkyimage.resize"]], "run() (inkycal.main.inkycal method)": [[3, "inkycal.main.Inkycal.run"]], "show_events() (inkycal.modules.ical_parser.icalendar method)": [[3, "inkycal.modules.ical_parser.iCalendar.show_events"]], "sort() (inkycal.modules.ical_parser.icalendar method)": [[3, "inkycal.modules.ical_parser.iCalendar.sort"]], "test() (inkycal.main.inkycal method)": [[3, "inkycal.main.Inkycal.test"]], "text_wrap() (in module inkycal.custom.functions)": [[3, "inkycal.custom.functions.text_wrap"]], "to_palette() (inkycal.modules.inky_image.inkyimage method)": [[3, "inkycal.modules.inky_image.Inkyimage.to_palette"]], "write() (in module inkycal.custom.functions)": [[3, "inkycal.custom.functions.write"]]}}) \ No newline at end of file
Contents: