# epdlib v0.6
EpdLib provides an interface for creating and displaying scalable layouts that work with most of WaveShare's EPaper displays (EPD). The `Layout` module can also be used for generating layouts for any screen-buffered display that does not require fast updates.
EpdLib provides classes for interfacing with the screen (`Screen`), building layouts that will work at any resolution (`Layout`), and blocks that are used to assemble layouts (`Block`). EpdLib makes it trivial to build a project that will work on almost any WaveShare display without worrying about the resolution or recoding the display functions.
![3x2 Sample](./docs/weather_3x2.png)
![5x5 Sample](./docs/weather_5x5.png)
EpdLib supports almost all of WaveShare's EPD screens. See the [Supported Screens](#supported-screens) below.
* 7-Color screens are supported in full color
* HD Screens are supported in 8 bit gray and support partial refresh (~1 second)
* All 2 and 3 color screens are supported in 1 bit (black and white) only
## Changes
See the [ChangeLog](./changes.md) for details
### v0.6
* Add support for 8-Color WaveShare screens to Block, Screen and Layout
* All Blocks and Layouts now support "RGB" content
* Layouts and blocks can now be dynamically updated during runtime
* `Layout.layout` dictionaries must contain key `type` that matches the block type
* Layouts support HTML standard color names and map [RED, ORANGE, YELLOW, GREEN, BLUE, BLACK, WHITE] to proper WaveShare Values
## Dependencies
Python Modules:
* Pillow: System dependencies for Pillow:
* libopenjp2-7
* libtiff5
* RPi.GPIO
* spidev: ensure SPI is enabled on the pi
* waveshare-epd (Non IT8951 based panels): see [notes](#notes) below for installation instructions
* this is for interacting with waveshare epaper displays and is not strictly needed to use the Block and Layout objects.
* IT8951 (IT8951 based panels): see [notes](#notes) below for installation instructions
## Modules:
* [Block](./docs/Block.md) - image and text blocks that can be used to create a layout
* [Layout](./docs/Layout.md) - create layouts from Blocks that will work on nearly any WaveShare screen automagically
* [Screen](./docs/Screen.md) - simple interface for writing to WaveShare EPD devices
## Supported Screens
|Screen |Supported |Mode |
|:-----------------|:--------------|:-------------|
|00. epd13in3k |True |"1" 1 bit |
|01. epd1in02 |True |"1" 1 bit |
|02. epd1in54 |True |"1" 1 bit |
|03. epd1in54_V2 |True |"1" 1 bit |
|04. epd1in54b |True |"1" 1 bit |
|05. epd1in54b_V2 |True |"1" 1 bit |
|06. epd1in54c |True |"1" 1 bit |
|07. epd1in64g |True |"1" 1 bit |
|08. epd2in13 |True |"1" 1 bit |
|09. epd2in13_V2 |True |"1" 1 bit |
|10. epd2in13_V3 |True |"1" 1 bit |
|11. epd2in13_V4 |True |"1" 1 bit |
|12. epd2in13b_V3 |True |"1" 1 bit |
|13. epd2in13b_V4 |True |"1" 1 bit |
|14. epd2in13bc |True |"1" 1 bit |
|15. epd2in13d |False |Unsupported |
|16. epd2in13g |True |"1" 1 bit |
|17. epd2in36g |True |"1" 1 bit |
|18. epd2in66 |True |"1" 1 bit |
|19. epd2in66b |True |"1" 1 bit |
|20. epd2in66g |True |"1" 1 bit |
|21. epd2in7 |True |"1" 1 bit |
|22. epd2in7_V2 |True |"1" 1 bit |
|23. epd2in7b |True |"1" 1 bit |
|24. epd2in7b_V2 |True |"1" 1 bit |
|25. epd2in9 |True |"1" 1 bit |
|26. epd2in9_V2 |True |"1" 1 bit |
|27. epd2in9b_V3 |True |"1" 1 bit |
|28. epd2in9b_V4 |True |"1" 1 bit |
|29. epd2in9bc |True |"1" 1 bit |
|30. epd2in9d |False |Unsupported |
|31. epd3in0g |True |"1" 1 bit |
|32. epd3in52 |True |"1" 1 bit |
|33. epd3in7 |False |Unsupported |
|34. epd4in01f |True |"RGB" 7 Color |
|35. epd4in2 |False |Unsupported |
|36. epd4in26 |True |"1" 1 bit |
|37. epd4in2_V2 |False |Unsupported |
|38. epd4in2b_V2 |True |"1" 1 bit |
|39. epd4in2bc |True |"1" 1 bit |
|40. epd4in37g |True |"1" 1 bit |
|41. epd5in65f |True |"RGB" 7 Color |
|42. epd5in83 |True |"1" 1 bit |
|43. epd5in83_V2 |True |"1" 1 bit |
|44. epd5in83b_V2 |True |"1" 1 bit |
|45. epd5in83bc |True |"1" 1 bit |
|46. epd7in3f |True |"RGB" 7 Color |
|47. epd7in3g |True |"1" 1 bit |
|48. epd7in5 |True |"1" 1 bit |
|49. epd7in5_HD |True |"1" 1 bit |
|50. epd7in5_V2 |True |"1" 1 bit |
|51. epd7in5_V2_old|True |"1" 1 bit |
|52. epd7in5b_HD |True |"1" 1 bit |
|53. epd7in5b_V2 |True |"1" 1 bit |
|54. epd7in5bc |True |"1" 1 bit |
|55. All HD IT8951 |True |"L" 8 bit |
Add your enthusiasm to standardize the `epd1in02` screen to [this Pull Request](https://github.com/waveshare/e-Paper/pull/283).
The `epd3in7` is an oddball that has several issues:
* 'Non-standard, unsupported `EPD.Clear()` function',
* 'AttributeError: module does not support standard `EPD.display()` function
## Notes
### WaveShare non-IT8951 Screens
The waveshare-epd library is required for non-IT8951 screens and can be installed from the Git repo:
```Shell
pip install -e "git+https://github.com/waveshare/e-Paper.git#egg=waveshare_epd&subdirectory=RaspberryPi_JetsonNano/python"
```
### IT8951 basee Screens
[Greg D Meyer's IT8951 library](https://github.com/GregDMeyer/IT8951) is required and can be installed from the Git repo:
```Shell
pip install -e "git+https://github.com/GregDMeyer/IT8951#egg=IT8951"
```
getting ready for pypi:
https://medium.com/@joel.barmettler/how-to-upload-your-python-package-to-pypi-65edc5fe9c56
Raw data
{
"_id": null,
"home_page": "https://github.com/txoof/epdlib",
"name": "epdlib",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "graphics e-paper display waveshare",
"author": "Aaron ciuffo",
"author_email": "aaron.ciuffo@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/a2/b2/757a7cbfd6a7885919121e7f14e7c6590c2e9b72e3de9c8f28fc02547378/epdlib-0.6.5.1.tar.gz",
"platform": null,
"description": "# epdlib v0.6\n\nEpdLib provides an interface for creating and displaying scalable layouts that work with most of WaveShare's EPaper displays (EPD). The `Layout` module can also be used for generating layouts for any screen-buffered display that does not require fast updates. \n\nEpdLib provides classes for interfacing with the screen (`Screen`), building layouts that will work at any resolution (`Layout`), and blocks that are used to assemble layouts (`Block`). EpdLib makes it trivial to build a project that will work on almost any WaveShare display without worrying about the resolution or recoding the display functions.\n\n![3x2 Sample](./docs/weather_3x2.png)\n\n![5x5 Sample](./docs/weather_5x5.png)\n\nEpdLib supports almost all of WaveShare's EPD screens. See the [Supported Screens](#supported-screens) below.\n\n* 7-Color screens are supported in full color\n* HD Screens are supported in 8 bit gray and support partial refresh (~1 second)\n* All 2 and 3 color screens are supported in 1 bit (black and white) only\n\n## Changes\n\nSee the [ChangeLog](./changes.md) for details\n\n### v0.6\n\n* Add support for 8-Color WaveShare screens to Block, Screen and Layout\n* All Blocks and Layouts now support \"RGB\" content\n* Layouts and blocks can now be dynamically updated during runtime\n* `Layout.layout` dictionaries must contain key `type` that matches the block type\n* Layouts support HTML standard color names and map [RED, ORANGE, YELLOW, GREEN, BLUE, BLACK, WHITE] to proper WaveShare Values\n\n## Dependencies\n\nPython Modules:\n* Pillow: System dependencies for Pillow:\n * libopenjp2-7\n * libtiff5\n* RPi.GPIO\n* spidev: ensure SPI is enabled on the pi\n* waveshare-epd (Non IT8951 based panels): see [notes](#notes) below for installation instructions\n * this is for interacting with waveshare epaper displays and is not strictly needed to use the Block and Layout objects.\n* IT8951 (IT8951 based panels): see [notes](#notes) below for installation instructions\n\n\n## Modules:\n\n* [Block](./docs/Block.md) - image and text blocks that can be used to create a layout\n* [Layout](./docs/Layout.md) - create layouts from Blocks that will work on nearly any WaveShare screen automagically\n* [Screen](./docs/Screen.md) - simple interface for writing to WaveShare EPD devices\n\n## Supported Screens\n\n\n|Screen |Supported |Mode |\n|:-----------------|:--------------|:-------------|\n|00. epd13in3k |True |\"1\" 1 bit |\n|01. epd1in02 |True |\"1\" 1 bit |\n|02. epd1in54 |True |\"1\" 1 bit |\n|03. epd1in54_V2 |True |\"1\" 1 bit |\n|04. epd1in54b |True |\"1\" 1 bit |\n|05. epd1in54b_V2 |True |\"1\" 1 bit |\n|06. epd1in54c |True |\"1\" 1 bit |\n|07. epd1in64g |True |\"1\" 1 bit |\n|08. epd2in13 |True |\"1\" 1 bit |\n|09. epd2in13_V2 |True |\"1\" 1 bit |\n|10. epd2in13_V3 |True |\"1\" 1 bit |\n|11. epd2in13_V4 |True |\"1\" 1 bit |\n|12. epd2in13b_V3 |True |\"1\" 1 bit |\n|13. epd2in13b_V4 |True |\"1\" 1 bit |\n|14. epd2in13bc |True |\"1\" 1 bit |\n|15. epd2in13d |False |Unsupported |\n|16. epd2in13g |True |\"1\" 1 bit |\n|17. epd2in36g |True |\"1\" 1 bit |\n|18. epd2in66 |True |\"1\" 1 bit |\n|19. epd2in66b |True |\"1\" 1 bit |\n|20. epd2in66g |True |\"1\" 1 bit |\n|21. epd2in7 |True |\"1\" 1 bit |\n|22. epd2in7_V2 |True |\"1\" 1 bit |\n|23. epd2in7b |True |\"1\" 1 bit |\n|24. epd2in7b_V2 |True |\"1\" 1 bit |\n|25. epd2in9 |True |\"1\" 1 bit |\n|26. epd2in9_V2 |True |\"1\" 1 bit |\n|27. epd2in9b_V3 |True |\"1\" 1 bit |\n|28. epd2in9b_V4 |True |\"1\" 1 bit |\n|29. epd2in9bc |True |\"1\" 1 bit |\n|30. epd2in9d |False |Unsupported |\n|31. epd3in0g |True |\"1\" 1 bit |\n|32. epd3in52 |True |\"1\" 1 bit |\n|33. epd3in7 |False |Unsupported |\n|34. epd4in01f |True |\"RGB\" 7 Color |\n|35. epd4in2 |False |Unsupported |\n|36. epd4in26 |True |\"1\" 1 bit |\n|37. epd4in2_V2 |False |Unsupported |\n|38. epd4in2b_V2 |True |\"1\" 1 bit |\n|39. epd4in2bc |True |\"1\" 1 bit |\n|40. epd4in37g |True |\"1\" 1 bit |\n|41. epd5in65f |True |\"RGB\" 7 Color |\n|42. epd5in83 |True |\"1\" 1 bit |\n|43. epd5in83_V2 |True |\"1\" 1 bit |\n|44. epd5in83b_V2 |True |\"1\" 1 bit |\n|45. epd5in83bc |True |\"1\" 1 bit |\n|46. epd7in3f |True |\"RGB\" 7 Color |\n|47. epd7in3g |True |\"1\" 1 bit |\n|48. epd7in5 |True |\"1\" 1 bit |\n|49. epd7in5_HD |True |\"1\" 1 bit |\n|50. epd7in5_V2 |True |\"1\" 1 bit |\n|51. epd7in5_V2_old|True |\"1\" 1 bit |\n|52. epd7in5b_HD |True |\"1\" 1 bit |\n|53. epd7in5b_V2 |True |\"1\" 1 bit |\n|54. epd7in5bc |True |\"1\" 1 bit |\n|55. All HD IT8951 |True |\"L\" 8 bit |\n\nAdd your enthusiasm to standardize the `epd1in02` screen to [this Pull Request](https://github.com/waveshare/e-Paper/pull/283). \n\nThe `epd3in7` is an oddball that has several issues:\n\n* 'Non-standard, unsupported `EPD.Clear()` function',\n* 'AttributeError: module does not support standard `EPD.display()` function\n\n## Notes\n\n### WaveShare non-IT8951 Screens\n\nThe waveshare-epd library is required for non-IT8951 screens and can be installed from the Git repo:\n\n```Shell\npip install -e \"git+https://github.com/waveshare/e-Paper.git#egg=waveshare_epd&subdirectory=RaspberryPi_JetsonNano/python\"\n```\n\n### IT8951 basee Screens\n\n[Greg D Meyer's IT8951 library](https://github.com/GregDMeyer/IT8951) is required and can be installed from the Git repo:\n\n```Shell\npip install -e \"git+https://github.com/GregDMeyer/IT8951#egg=IT8951\"\n```\n\n\ngetting ready for pypi:\nhttps://medium.com/@joel.barmettler/how-to-upload-your-python-package-to-pypi-65edc5fe9c56\n\n\n",
"bugtrack_url": null,
"license": null,
"summary": "library for creating dynamic layouts for frame-buffered devices",
"version": "0.6.5.1",
"project_urls": {
"Homepage": "https://github.com/txoof/epdlib",
"Source": "https://github.com/txoof/epdlib"
},
"split_keywords": [
"graphics",
"e-paper",
"display",
"waveshare"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "46bea11c6858e5d58f4c8ba45d49cd0b2a2cd09b63713e5866c2bf79c069d4a2",
"md5": "68d34f2ab671e9eb59504ce2612f7ba4",
"sha256": "59d2dbd0be190b4d40b027e6f28a76bc3192f8ca35cbd91c6fb8d1e216e9f16c"
},
"downloads": -1,
"filename": "epdlib-0.6.5.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "68d34f2ab671e9eb59504ce2612f7ba4",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 44051,
"upload_time": "2024-03-25T19:56:45",
"upload_time_iso_8601": "2024-03-25T19:56:45.750040Z",
"url": "https://files.pythonhosted.org/packages/46/be/a11c6858e5d58f4c8ba45d49cd0b2a2cd09b63713e5866c2bf79c069d4a2/epdlib-0.6.5.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a2b2757a7cbfd6a7885919121e7f14e7c6590c2e9b72e3de9c8f28fc02547378",
"md5": "5ec5021e5b80e8ee56e212ccfee89dcb",
"sha256": "b08b9cd711074236459434ebb492a99cddbf3d743246972d6767bf717d74d1d1"
},
"downloads": -1,
"filename": "epdlib-0.6.5.1.tar.gz",
"has_sig": false,
"md5_digest": "5ec5021e5b80e8ee56e212ccfee89dcb",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 44372,
"upload_time": "2024-03-25T19:56:48",
"upload_time_iso_8601": "2024-03-25T19:56:48.069843Z",
"url": "https://files.pythonhosted.org/packages/a2/b2/757a7cbfd6a7885919121e7f14e7c6590c2e9b72e3de9c8f28fc02547378/epdlib-0.6.5.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-03-25 19:56:48",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "txoof",
"github_project": "epdlib",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "epdlib"
}