# `pymunk.pygame_util` Module

This submodule contains helper functions to help with quick prototyping using pymunk together with pygame.

Intended to help with debugging and prototyping, not for actual production use in a full application. The methods contained in this module is opinionated about your coordinate system and not in any way optimized.

class `pymunk.pygame_util.``DrawOptions`(surface)

  Bases: `pymunk.space_debug_draw_options.SpaceDebugDrawOptions`

  `DRAW_COLLISION_POINTS`

    alias of `CP_SPACE_DEBUG_DRAW_COLLISION_POINTS`

  `DRAW_CONSTRAINTS`

    alias of `CP_SPACE_DEBUG_DRAW_CONSTRAINTS`

  `DRAW_SHAPES`

    alias of `CP_SPACE_DEBUG_DRAW_SHAPES`

  `__init__`(surface)

    Draw a pymunk.Space on a pygame.Surface object.

    Typical usage:

        >>> import pymunk
        >>> import pymunk.pygame_util
        >>> surface = pygame.Surface((10,10))
        >>> s = pymunk.Space()
        >>> options = pymunk.pygame_util.DrawOptions(surface)
        >>> s.debug_draw(options)

    Since pygame uses a coordinate system where y points down (compared to most other cases where a positive y points upwards), we might want to make adjustments for that with the `positive_y_is_up` variable.

    By default drawing is done with positive y pointing up, but that will make conversion from pygame coordinate to pymunk coordinate nessecary. If you do a lot of those (for example, lots of mouse input) it might be more convenient to set it to False:

        >>> positive_y_is_up = False
        >>> # Draw verything the pygame way, (0,0) in the top left corner
        >>> positive_y_is_up = True
        >>> # Draw everything the pymunk way, (0,0) in the bottom left corner

    You can control the color of a shape by setting shape.color to the color you want it drawn in.

        >>> c = pymunk.Circle(None, 10)
        >>> c.color = pygame.color.THECOLORS["pink"]

    See pygame_util.demo.py for a full example

    Parameters: | surface : pygame.Surface Surface that the objects will be drawn on

  `collision_point_color`
  `color_for_shape`(shape)
  `constraint_color`
  `draw_circle`(pos, angle, radius, outline_color, fill_color)
  `draw_dot`(size, pos, color)
  `draw_fat_segment`(a, b, radius, outline_color, fill_color)
  `draw_polygon`(verts, radius, outline_color, fill_color)
  `draw_segment`(a, b, color)
  `flags`
  `shape_dynamic_color` = SpaceDebugColor(r=52, g=152, b=219, a=255)
  `shape_kinematic_color` = SpaceDebugColor(r=39, g=174, b=96, a=255)
  `shape_outline_color`
  `shape_sleeping_color` = SpaceDebugColor(r=114, g=148, b=168, a=255)
  `shape_static_color` = SpaceDebugColor(r=149, g=165, b=166, a=255)

`pymunk.pygame_util.``get_mouse_pos`(surface)

  Get position of the mouse pointer in pymunk coordinates.

`pymunk.pygame_util.``to_pygame`(p, surface)

  Convenience method to convert pymunk coordinates to pygame surface local coordinates.

  Note that in case positive_y_is_up is False, this function wont actually do anything except converting the point to integers.

`pymunk.pygame_util.``from_pygame`(p, surface)

  Convenience method to convert pygame surface local coordinates to pymunk coordinates

`pymunk.pygame_util.``positive_y_is_up` = True

  Make increasing values of y point upwards.

  When True:

          y
          ^
          |   . (2, 2)
          |
      ----+------ > x
          |
          |     . (3, -2)
          |

  When False:

          y
          ^
          |   . (2, -2)
          |
      ----+------ > x
          |
          |      . (3, 2)
          |