Files
pybricks-api/doc/api/media.rst
T
2020-04-08 10:01:43 +02:00

489 lines
12 KiB
ReStructuredText

:mod:`media <pybricks.media>` -- Sounds and Images
==================================================
.. module:: pybricks.media
This module describes media such as sound and images that you can use in your
projects. Media are divided into submodules that indicate on which platform
they are available.
:mod:`media.ev3dev <pybricks.media.ev3dev>` -- Sounds and Images
---------------------------------------------------------------------
.. module:: pybricks.media.ev3dev
EV3 MicroPython is built on top of ev3dev, which comes with a variety of image
and sound files. You can access them using the classes below.
You can also use your own sound and image files by placing them in your project
folder.
Image Files
^^^^^^^^^^^
.. autoclass:: pybricks.media.ev3dev.ImageFile
:no-members:
.. toggle-header::
:header: **Information**
.. data:: ACCEPT
.. image:: ../../media/ev3dev-media/images/mono/information/accept.png
:width: 15 %
.. data:: BACKWARD
.. image:: ../../media/ev3dev-media/images/mono/information/backward.png
:width: 15 %
.. data:: DECLINE
.. image:: ../../media/ev3dev-media/images/mono/information/decline.png
:width: 15 %
.. data:: FORWARD
.. image:: ../../media/ev3dev-media/images/mono/information/forward.png
:width: 15 %
.. data:: LEFT
.. image:: ../../media/ev3dev-media/images/mono/information/left.png
:width: 15 %
.. data:: NO_GO
.. image:: ../../media/ev3dev-media/images/mono/information/no_go.png
:width: 15 %
.. data:: QUESTION_MARK
.. image:: ../../media/ev3dev-media/images/mono/information/question_mark.png
:width: 15 %
.. data:: THUMBS_DOWN
.. image:: ../../media/ev3dev-media/images/mono/information/thumbs_down.png
:width: 15 %
.. data:: RIGHT
.. image:: ../../media/ev3dev-media/images/mono/information/right.png
:width: 15 %
.. data:: STOP_1
.. image:: ../../media/ev3dev-media/images/mono/information/stop_1.png
:width: 15 %
.. data:: STOP_2
.. image:: ../../media/ev3dev-media/images/mono/information/stop_2.png
:width: 15 %
.. data:: THUMBS_DOWN
.. image:: ../../media/ev3dev-media/images/mono/information/thumbs_up.png
:width: 15 %
.. data:: THUMBS_UP
.. image:: ../../media/ev3dev-media/images/mono/information/thumbs_up.png
:width: 15 %
.. data:: WARNING
.. image:: ../../media/ev3dev-media/images/mono/information/warning.png
:width: 15 %
.. toggle-header::
:header: **LEGO**
.. data:: EV3
.. image:: ../../media/ev3dev-media/images/mono/lego/ev3.png
:width: 15 %
.. data:: EV3_ICON
.. image:: ../../media/ev3dev-media/images/mono/lego/ev3_icon.png
:width: 15 %
.. toggle-header::
:header: **Objects**
.. data:: TARGET
.. image:: ../../media/ev3dev-media/images/mono/objects/target.png
:width: 15 %
.. toggle-header::
:header: **Eyes**
.. data:: ANGRY
.. image:: ../../media/ev3dev-media/images/mono/eyes/angry.png
:width: 15 %
.. data:: AWAKE
.. image:: ../../media/ev3dev-media/images/mono/eyes/awake.png
:width: 15 %
.. data:: BOTTOM_LEFT
.. image:: ../../media/ev3dev-media/images/mono/eyes/bottom_left.png
:width: 15 %
.. data:: BOTTOM_RIGHT
.. image:: ../../media/ev3dev-media/images/mono/eyes/bottom_right.png
:width: 15 %
.. data:: CRAZY_1
.. image:: ../../media/ev3dev-media/images/mono/eyes/crazy_1.png
:width: 15 %
.. data:: CRAZY_2
.. image:: ../../media/ev3dev-media/images/mono/eyes/crazy_2.png
:width: 15 %
.. data:: DIZZY
.. image:: ../../media/ev3dev-media/images/mono/eyes/dizzy.png
:width: 15 %
.. data:: DOWN
.. image:: ../../media/ev3dev-media/images/mono/eyes/down.png
:width: 15 %
.. data:: EVIL
.. image:: ../../media/ev3dev-media/images/mono/eyes/evil.png
:width: 15 %
.. data:: KNOCKED_OUT
.. image:: ../../media/ev3dev-media/images/mono/eyes/knocked_out.png
:width: 15 %
.. data:: MIDDLE_LEFT
.. image:: ../../media/ev3dev-media/images/mono/eyes/middle_left.png
:width: 15 %
.. data:: MIDDLE_RIGHT
.. image:: ../../media/ev3dev-media/images/mono/eyes/middle_right.png
:width: 15 %
.. data:: NEUTRAL
.. image:: ../../media/ev3dev-media/images/mono/eyes/neutral.png
:width: 15 %
.. data:: PINCHED_LEFT
.. image:: ../../media/ev3dev-media/images/mono/eyes/pinched_left.png
:width: 15 %
.. data:: PINCHED_MIDDLE
.. image:: ../../media/ev3dev-media/images/mono/eyes/pinched_middle.png
:width: 15 %
.. data:: PINCHED_RIGHT
.. image:: ../../media/ev3dev-media/images/mono/eyes/pinched_right.png
:width: 15 %
.. data:: SLEEPING
.. image:: ../../media/ev3dev-media/images/mono/eyes/sleeping.png
:width: 15 %
.. data:: TIRED_LEFT
.. image:: ../../media/ev3dev-media/images/mono/eyes/tired_left.png
:width: 15 %
.. data:: TIRED_MIDDLE
.. image:: ../../media/ev3dev-media/images/mono/eyes/tired_middle.png
:width: 15 %
.. data:: TIRED_RIGHT
.. image:: ../../media/ev3dev-media/images/mono/eyes/tired_right.png
:width: 15 %
.. data:: UP
.. image:: ../../media/ev3dev-media/images/mono/eyes/up.png
:width: 15 %
.. data:: WINKING
.. image:: ../../media/ev3dev-media/images/mono/eyes/winking.png
:width: 15 %
Sound Files
^^^^^^^^^^^
.. autoclass:: pybricks.media.ev3dev.SoundFile
:no-members:
.. toggle-header::
:header: **Expressions**
.. data:: BOING
.. data:: BOO
.. data:: CHEERING
.. data:: CRUNCHING
.. data:: CRYING
.. data:: FANFARE
.. data:: KUNG_FU
.. data:: LAUGHING_1
.. data:: LAUGHING_2
.. data:: MAGIC_WAND
.. data:: OUCH
.. data:: SHOUTING
.. data:: SMACK
.. data:: SNEEZING
.. data:: SNORING
.. data:: UH_OH
.. toggle-header::
:header: **Information**
.. data:: ACTIVATE
.. data:: ANALYZE
.. data:: BACKWARDS
.. data:: COLOR
.. data:: DETECTED
.. data:: DOWN
.. data:: ERROR
.. data:: ERROR_ALARM
.. data:: FLASHING
.. data:: FORWARD
.. data:: LEFT
.. data:: OBJECT
.. data:: RIGHT
.. data:: SEARCHING
.. data:: START
.. data:: STOP
.. data:: TOUCH
.. data:: TURN
.. data:: UP
.. toggle-header::
:header: **Communication**
.. data:: BRAVO
.. data:: EV3
.. data:: FANTASTIC
.. data:: GAME_OVER
.. data:: GO
.. data:: GOOD
.. data:: GOOD_JOB
.. data:: GOODBYE
.. data:: HELLO
.. data:: HI
.. data:: LEGO
.. data:: MINDSTORMS
.. data:: MORNING
.. data:: NO
.. data:: OKAY
.. data:: OKEY_DOKEY
.. data:: SORRY
.. data:: THANK_YOU
.. data:: YES
.. toggle-header::
:header: **Movement sounds**
.. data:: SPEED_DOWN
.. data:: SPEED_IDLE
.. data:: SPEED_UP
.. toggle-header::
:header: **Colors**
.. data:: BLACK
.. data:: BLUE
.. data:: BROWN
.. data:: GREEN
.. data:: RED
.. data:: WHITE
.. data:: YELLOW
.. toggle-header::
:header: **Mechanical**
.. data:: AIR_RELEASE
.. data:: AIRBRAKE
.. data:: BACKING_ALERT
.. data:: HORN_1
.. data:: HORN_2
.. data:: LASER
.. data:: MOTOR_IDLE
.. data:: MOTOR_START
.. data:: MOTOR_STOP
.. data:: RATCHET
.. data:: SONAR
.. data:: TICK_TACK
.. toggle-header::
:header: **Animal sounds**
.. data:: CAT_PURR
.. data:: DOG_BARK_1
.. data:: DOG_BARK_2
.. data:: DOG_GROWL
.. data:: DOG_SNIFF
.. data:: DOG_WHINE
.. data:: ELEPHANT_CALL
.. data:: INSECT_BUZZ_1
.. data:: INSECT_BUZZ_2
.. data:: INSECT_CHIRP
.. data:: SNAKE_HISS
.. data:: SNAKE_RATTLE
.. data:: T_REX_ROAR
.. toggle-header::
:header: **Numbers**
.. data:: ZERO
.. data:: ONE
.. data:: TWO
.. data:: THREE
.. data:: FOUR
.. data:: FIVE
.. data:: SIX
.. data:: SEVEN
.. data:: EIGHT
.. data:: NINE
.. data:: TEN
.. toggle-header::
:header: **System sounds**
.. data:: CLICK
.. data:: CONFIRM
.. data:: GENERAL_ALERT
.. data:: OVERPOWER
.. data:: READY
Fonts
^^^^^
.. autoclass:: pybricks.media.ev3dev.Font
:no-members:
.. autoattribute:: pybricks.media.ev3dev.Font.DEFAULT
:annotation: = Font('Lucida', 12)
.. autoattribute:: pybricks.media.ev3dev.Font.family
.. autoattribute:: pybricks.media.ev3dev.Font.style
.. autoattribute:: pybricks.media.ev3dev.Font.width
.. autoattribute:: pybricks.media.ev3dev.Font.height
.. automethod:: pybricks.media.ev3dev.Font.text_width
.. automethod:: pybricks.media.ev3dev.Font.text_height
.. tip:: Behind the scenes, Pybricks uses Fontconfig_ for fonts. The Fontconfig
command line tools can be used to explore available fonts in more
detail.
Example::
# List available font families.
fc-list :scalable=false:dpi=119 family
# Perform lookup similar to Font.DEFAULT
fc-match :scalable=false:dpi=119:family=Lucida:size=12
# Perform lookup similar to Font(size=24,lang=zh-cn)
fc-match :scalable=false:dpi=119:size=24:lang=zh-cn
Pybricks only allows the use of bitmap fonts (``scalable=false``)
and the screen on the EV3 has 119 pixels per inch (``dpi=119``).
.. _FontConfig: https://www.freedesktop.org/wiki/Software/fontconfig/
Image Manipulation
^^^^^^^^^^^^^^^^^^
Instead of drawing directly on the EV3 screen, you can make and interact
with image files using the ``Image`` class given below.
.. |this image| replace:: this image
.. autoclass:: pybricks.media.ev3dev.Image
:no-members:
.. automethod:: pybricks.media.ev3dev.Image.empty
.. rubric:: Drawing text
There are two ways to draw text on images. :meth:`draw_text` lets text be
placed precisely on the image or :meth:`print` can be used to automatically
print text on a new line.
.. automethod:: pybricks.media.ev3dev.Image.draw_text
.. automethod:: pybricks.media.ev3dev.Image.print
.. automethod:: pybricks.media.ev3dev.Image.set_font
.. rubric:: Drawing images
A copy of another image can be drawn on an image. Also consider using
sub-images to copy part of an image.
.. automethod:: pybricks.media.ev3dev.Image.draw_image
.. rubric:: Drawing shapes
These are the methods to draw basic shapes, including points, lines,
rectangles and circles.
.. automethod:: pybricks.media.ev3dev.Image.draw_pixel
.. automethod:: pybricks.media.ev3dev.Image.draw_line
.. automethod:: pybricks.media.ev3dev.Image.draw_box
.. automethod:: pybricks.media.ev3dev.Image.draw_circle
.. rubric:: Image properties
.. autoattribute:: pybricks.media.ev3dev.Image.width
.. autoattribute:: pybricks.media.ev3dev.Image.height
.. rubric:: Replacing the entire image
.. automethod:: pybricks.media.ev3dev.Image.clear
.. automethod:: pybricks.media.ev3dev.Image.load_image
.. rubric:: Saving the image
.. automethod:: pybricks.media.ev3dev.Image.save