Ajout du GUI
This commit is contained in:
121
kivy/graphics/__init__.py
Normal file
121
kivy/graphics/__init__.py
Normal file
@@ -0,0 +1,121 @@
|
||||
'''
|
||||
Graphics
|
||||
========
|
||||
|
||||
This package assembles many low level functions used for drawing. The whole
|
||||
graphics package is compatible with OpenGL ES 2.0 and has many rendering
|
||||
optimizations.
|
||||
|
||||
The basics
|
||||
----------
|
||||
|
||||
For drawing on a screen, you will need :
|
||||
|
||||
1. a :class:`~kivy.graphics.instructions.Canvas` object.
|
||||
2. :class:`~kivy.graphics.instructions.Instruction` objects.
|
||||
|
||||
Each :class:`~kivy.uix.widget.Widget`
|
||||
in Kivy already has a :class:`Canvas` by default. When you create
|
||||
a widget, you can create all the instructions needed for drawing. If
|
||||
`self` is your current widget, you can do::
|
||||
|
||||
from kivy.graphics import *
|
||||
with self.canvas:
|
||||
# Add a red color
|
||||
Color(1., 0, 0)
|
||||
|
||||
# Add a rectangle
|
||||
Rectangle(pos=(10, 10), size=(500, 500))
|
||||
|
||||
The instructions :class:`Color` and :class:`Rectangle` are automatically added
|
||||
to the canvas object and will be used when the window is drawn.
|
||||
|
||||
.. note::
|
||||
|
||||
Kivy drawing instructions are not automatically relative to the position
|
||||
or size of the widget. You, therefore, need to consider these factors when
|
||||
drawing. In order to make your drawing instructions relative to the widget,
|
||||
the instructions need either to be
|
||||
declared in the :mod:`KvLang <kivy.lang>` or bound to pos and size changes.
|
||||
Please see :ref:`adding_widget_background` for more detail.
|
||||
|
||||
GL Reloading mechanism
|
||||
----------------------
|
||||
|
||||
.. versionadded:: 1.2.0
|
||||
|
||||
During the lifetime of the application, the OpenGL context might be lost. This
|
||||
happens:
|
||||
|
||||
- when the window is resized on OS X or the Windows platform and you're
|
||||
using pygame as a window provider. This is due to SDL 1.2. In the SDL 1.2
|
||||
design, it needs to recreate a GL context everytime the window is
|
||||
resized. This was fixed in SDL 1.3 but pygame is not yet available on it
|
||||
by default.
|
||||
|
||||
- when Android releases the app resources: when your application goes to the
|
||||
background, Android might reclaim your opengl context to give the
|
||||
resource to another app. When the user switches back to your application, a
|
||||
newly created gl context is given to your app.
|
||||
|
||||
Starting from 1.2.0, we have introduced a mechanism for reloading all the
|
||||
graphics resources using the GPU: Canvas, FBO, Shader, Texture, VBO,
|
||||
and VertexBatch:
|
||||
|
||||
- VBO and VertexBatch are constructed by our graphics instructions. We have all
|
||||
the data needed to reconstruct when reloading.
|
||||
|
||||
- Shader: same as VBO, we store the source and values used in the
|
||||
shader so we are able to recreate the vertex/fragment/program.
|
||||
|
||||
- Texture: if the texture has a source (an image file or atlas), the image
|
||||
is reloaded from the source and reuploaded to the GPU.
|
||||
|
||||
You should cover these cases yourself:
|
||||
|
||||
- Textures without a source: if you manually created a texture and manually
|
||||
blit data / a buffer to it, you must handle the reloading yourself. Check the
|
||||
:doc:`api-kivy.graphics.texture` to learn how to manage that case. (The text
|
||||
rendering already generates the texture and handles the reloading. You
|
||||
don't need to reload text yourself.)
|
||||
|
||||
- FBO: if you added / removed / drew things multiple times on the FBO, we
|
||||
can't reload it. We don't keep a history of the instructions put on it.
|
||||
As for textures without a source, check the :doc:`api-kivy.graphics.fbo` to
|
||||
learn how to manage that case.
|
||||
|
||||
'''
|
||||
|
||||
from kivy.graphics.instructions import Callback, Canvas, CanvasBase, \
|
||||
ContextInstruction, Instruction, InstructionGroup, RenderContext, \
|
||||
VertexInstruction
|
||||
from kivy.graphics.context_instructions import BindTexture, Color, \
|
||||
PushState, ChangeState, PopState, MatrixInstruction, ApplyContextMatrix, \
|
||||
PopMatrix, PushMatrix, Rotate, Scale, Translate, LoadIdentity, \
|
||||
UpdateNormalMatrix, gl_init_resources
|
||||
from kivy.graphics.vertex_instructions import Bezier, BorderImage, Ellipse, \
|
||||
GraphicException, Line, Mesh, Point, Quad, Rectangle, RoundedRectangle, \
|
||||
Triangle, SmoothLine
|
||||
from kivy.graphics.stencil_instructions import StencilPop, StencilPush, \
|
||||
StencilUse, StencilUnUse
|
||||
from kivy.graphics.gl_instructions import ClearColor, ClearBuffers
|
||||
from kivy.graphics.fbo import Fbo
|
||||
from kivy.graphics.scissor_instructions import ScissorPush, ScissorPop
|
||||
|
||||
# very hacky way to avoid pyflakes warning...
|
||||
__all__ = (Bezier.__name__, BindTexture.__name__, BorderImage.__name__,
|
||||
Callback.__name__, Canvas.__name__, CanvasBase.__name__,
|
||||
Color.__name__, ContextInstruction.__name__,
|
||||
Ellipse.__name__, Fbo.__name__, GraphicException.__name__,
|
||||
Instruction.__name__, InstructionGroup.__name__,
|
||||
Line.__name__, SmoothLine.__name__, MatrixInstruction.__name__,
|
||||
Mesh.__name__, Point.__name__, PopMatrix.__name__,
|
||||
PushMatrix.__name__, Quad.__name__, Rectangle.__name__,
|
||||
RenderContext.__name__, Rotate.__name__, Scale.__name__,
|
||||
StencilPop.__name__, StencilPush.__name__, StencilUse.__name__,
|
||||
StencilUnUse.__name__, Translate.__name__, Triangle.__name__,
|
||||
VertexInstruction.__name__, ClearColor.__name__,
|
||||
ClearBuffers.__name__, gl_init_resources.__name__,
|
||||
PushState.__name__, ChangeState.__name__, PopState.__name__,
|
||||
ApplyContextMatrix.__name__, UpdateNormalMatrix.__name__,
|
||||
LoadIdentity.__name__)
|
||||
Reference in New Issue
Block a user