efl/legacy/ephysics/src/lib/ephysics_camera.cpp

109 lines
1.8 KiB
C++

#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <Evas.h>
#include "ephysics_private.h"
#ifdef __cplusplus
extern "C" {
#endif
struct _EPhysics_Camera {
EPhysics_World *world;
double x, y, zoom;
};
EPhysics_Camera *
ephysics_camera_add(EPhysics_World *world)
{
EPhysics_Camera *camera;
camera = (EPhysics_Camera *) calloc(1, sizeof(EPhysics_Camera));
if (!camera)
{
ERR("Couldn't create a new camera instance.");
return NULL;
}
camera->world = world;
INF("Camera created.");
return camera;
}
void
ephysics_camera_del(EPhysics_Camera *camera)
{
if (!camera)
{
ERR("Can't delete camera, it wasn't provided.");
return;
}
free(camera);
INF("Camera deleted.");
}
EAPI void
ephysics_camera_position_set(EPhysics_Camera *camera, double x, double y)
{
if (!camera)
{
ERR("Can't set camera position, camerar is null.");
return;
}
camera->x = x;
camera->y = y;
}
EAPI void
ephysics_camera_position_get(const EPhysics_Camera *camera, double *x, double *y)
{
if (!camera)
{
ERR("Can't get camera position, camera is null.");
return;
}
if (x) *x = camera->x;
if (y) *y = camera->y;
}
EAPI void
ephysics_camera_zoom_set(EPhysics_Camera *camera, double zoom)
{
if (!camera)
{
ERR("Can't set camera zoom, camera == NULL.");
return;
}
if (zoom <= 0)
{
ERR("Zoom should be a positive value. Keeping the old value: %lf.",
camera->zoom);
return;
}
camera->zoom = zoom;
}
EAPI double
ephysics_camera_zoom_get(const EPhysics_Camera *camera)
{
if (!camera)
{
ERR("Can't get camera zoom, camera == NULL.");
return -1;
}
return camera->zoom;
}
#ifdef __cplusplus
}
#endif