## AmitkSpace AmitkSpace |

## Synopsis

    #define             AMITK_SPACE_AXES                    (space)
    #define             AMITK_SPACE_OFFSET                  (space)
    #define             AMITK_UNDO_LEVEL
                        AmitkSpace;
    AmitkSpace*         amitk_space_new                     (void);
    void                amitk_space_write_xml               (xmlNodePtr node,
                                                             gchar *descriptor,
                                                             AmitkSpace *space);
    AmitkSpace*         amitk_space_read_xml                (xmlNodePtr nodes,
                                                             gchar *descriptor,
                                                             gchar **perror_buf);
    void                amitk_space_set_offset              (AmitkSpace *space,
                                                             const AmitkPoint new_offset);
    void                amitk_space_shift_offset            (AmitkSpace *space,
                                                             const AmitkPoint shift);
    void                amitk_space_set_axes                (AmitkSpace *space,
                                                             const AmitkAxes new_axes,
                                                             const AmitkPoint center_of_rotation);
    void                amitk_space_transform               (AmitkSpace *space,
                                                             const AmitkSpace *transform_space);
    void                amitk_space_transform_axes          (AmitkSpace *space,
                                                             const AmitkAxes transform_axes,
                                                             AmitkPoint center_of_rotation);
    void                amitk_space_scale                   (AmitkSpace *space,
                                                             AmitkPoint ref_point,
                                                             AmitkPoint scaling);
    AmitkPoint          amitk_space_get_axis                (const AmitkSpace *space,
                                                             const AmitkAxis which_axis);
    void                amitk_space_get_enclosing_corners   (const AmitkSpace *in_space,
                                                             const AmitkCorners in_corners,
                                                             const AmitkSpace *out_space,
                                                             AmitkCorners out_corners);
    AmitkSpace*         amitk_space_copy                    (const AmitkSpace *space);
    void                amitk_space_copy_in_place           (AmitkSpace *dest_space,
                                                             const AmitkSpace *src_space);
    gboolean            amitk_space_equal                   (const AmitkSpace *space1,
                                                             const AmitkSpace *space2);
    void                amitk_space_invert_axis             (AmitkSpace *space,
                                                             const AmitkAxis which_axis,
                                                             const AmitkPoint center_of_inversion);
    void                amitk_space_rotate_on_vector        (AmitkSpace *space,
                                                             const AmitkPoint vector,
                                                             const amide_real_t theta,
                                                             const AmitkPoint center_of_rotation);
    AmitkSpace*         amitk_space_get_view_space          (const AmitkView view,
                                                             const AmitkLayout layout);
    void                amitk_space_set_view_space          (AmitkSpace *set_space,
                                                             const AmitkView view,
                                                             const AmitkLayout layout);
    #define             amitk_space_s2s                     (in_space, out_space, in)
    #define             amitk_space_s2s_dim                 (in_space, out_space, in)
    void                amitk_space_print                   (AmitkSpace *space,
                                                             gchar *message);

## Description

## Details

### AMITK_SPACE_AXES()

    #define AMITK_SPACE_AXES(space)         (AMITK_SPACE(space)->axes)

`space` : |

### AMITK_SPACE_OFFSET()

    #define AMITK_SPACE_OFFSET(space)       (AMITK_SPACE(space)->offset)

`space` : |

### AMITK_UNDO_LEVEL

    #define AMITK_UNDO_LEVEL 10

### AmitkSpace

    typedef struct {
      GObject parent;

      /* private info */
      AmitkPoint offset; /* with respect to the base coordinate frame */
      AmitkAxes axes;
    } AmitkSpace;

### amitk_space_new ()

    AmitkSpace*         amitk_space_new                     (void);

Returns : |

### amitk_space_write_xml ()

    void                amitk_space_write_xml               (xmlNodePtr node,
                                                             gchar *descriptor,
                                                             AmitkSpace *space);

`node` : |
`descriptor` : |
`space` : |

### amitk_space_read_xml ()

    AmitkSpace*         amitk_space_read_xml                (xmlNodePtr nodes,
                                                             gchar *descriptor,
                                                             gchar **perror_buf);

`nodes` : |
`descriptor` : |
`perror_buf` : |
Returns : |

### amitk_space_set_offset ()

    void                amitk_space_set_offset              (AmitkSpace *space,
                                                             const AmitkPoint new_offset);

`space` : |
`new_offset` : |

### amitk_space_shift_offset ()

    void                amitk_space_shift_offset            (AmitkSpace *space,
                                                             const AmitkPoint shift);

`space` : |
`shift` : |

### amitk_space_set_axes ()

    void                amitk_space_set_axes                (AmitkSpace *space,
                                                             const AmitkAxes new_axes,
                                                             const AmitkPoint center_of_rotation);

`space` : |
`new_axes` : |
`center_of_rotation` : |

### amitk_space_transform ()

    void                amitk_space_transform               (AmitkSpace *space,
                                                             const AmitkSpace *transform_space);

`space` : |
`transform_space` : |

### amitk_space_transform_axes ()

    void                amitk_space_transform_axes          (AmitkSpace *space,
                                                             const AmitkAxes transform_axes,
                                                             AmitkPoint center_of_rotation);

`space` : |
`transform_axes` : |
`center_of_rotation` : |

### amitk_space_scale ()

    void                amitk_space_scale                   (AmitkSpace *space,
                                                             AmitkPoint ref_point,
                                                             AmitkPoint scaling);

`space` : |
`ref_point` : |
`scaling` : |

### amitk_space_get_axis ()

    AmitkPoint          amitk_space_get_axis                (const AmitkSpace *space,
                                                             const AmitkAxis which_axis);

`space` : |
`which_axis` : |
Returns : |

### amitk_space_get_enclosing_corners ()

    void                amitk_space_get_enclosing_corners   (const AmitkSpace *in_space,
                                                             const AmitkCorners in_corners,
                                                             const AmitkSpace *out_space,
                                                             AmitkCorners out_corners);

`in_space` : |
`in_corners` : |
`out_space` : |
`out_corners` : |

### amitk_space_copy ()

    AmitkSpace*         amitk_space_copy                    (const AmitkSpace *space);

`space` : |
Returns : |

### amitk_space_copy_in_place ()

    void                amitk_space_copy_in_place           (AmitkSpace *dest_space,
                                                             const AmitkSpace *src_space);

`dest_space` : |
`src_space` : |

### amitk_space_equal ()

    gboolean            amitk_space_equal                   (const AmitkSpace *space1,
                                                             const AmitkSpace *space2);

`space1` : |
`space2` : |
Returns : |

### amitk_space_invert_axis ()

    void                amitk_space_invert_axis             (AmitkSpace *space,
                                                             const AmitkAxis which_axis,
                                                             const AmitkPoint center_of_inversion);

`space` : |
`which_axis` : |
`center_of_inversion` : |

### amitk_space_rotate_on_vector ()

    void                amitk_space_rotate_on_vector        (AmitkSpace *space,
                                                             const AmitkPoint vector,
                                                             const amide_real_t theta,
                                                             const AmitkPoint center_of_rotation);

`space` : |
`vector` : |
`theta` : |
`center_of_rotation` : |

### amitk_space_get_view_space ()

    AmitkSpace*         amitk_space_get_view_space          (const AmitkView view,
                                                             const AmitkLayout layout);

`view` : |
`layout` : |
Returns : |

### amitk_space_set_view_space ()

    void                amitk_space_set_view_space          (AmitkSpace *set_space,
                                                             const AmitkView view,
                                                             const AmitkLayout layout);

`set_space` : |
`view` : |
`layout` : |

### amitk_space_s2s()

    #define amitk_space_s2s(in_space, out_space, in) (amitk_space_b2s((out_space), amitk_space_s2b((in_space), (in))))

`in_space` : |
`out_space` : |
`in` : |

### amitk_space_s2s_dim()

    #define amitk_space_s2s_dim(in_space, out_space, in) (amitk_space_b2s_dim((out_space), amitk_space_s2b_dim((in_space), (in))))

`in_space` : |
`out_space` : |
`in` : |

### amitk_space_print ()

    void                amitk_space_print                   (AmitkSpace *space,
                                                             gchar *message);

`space` : |
`message` : |