summaryrefslogtreecommitdiffstats
path: root/3rdparty/lib3ds/viewport.c
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/lib3ds/viewport.c')
-rw-r--r--3rdparty/lib3ds/viewport.c413
1 files changed, 0 insertions, 413 deletions
diff --git a/3rdparty/lib3ds/viewport.c b/3rdparty/lib3ds/viewport.c
deleted file mode 100644
index 270caf8f..00000000
--- a/3rdparty/lib3ds/viewport.c
+++ /dev/null
@@ -1,413 +0,0 @@
-/*
- * The 3D Studio File Format Library
- * Copyright (C) 1996-2007 by Jan Eric Kyprianidis <www.kyprianidis.com>
- * All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
- * License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * $Id: viewport.c,v 1.11 2007/06/20 17:04:09 jeh Exp $
- */
-#include <lib3ds/viewport.h>
-#include <lib3ds/chunk.h>
-#include <lib3ds/io.h>
-#include <stdlib.h>
-#include <string.h>
-
-
-/*!
- * \defgroup viewport Viewport and default view settings
- */
-
-
-/*!
- * \ingroup viewport
- */
-Lib3dsBool
-lib3ds_viewport_read(Lib3dsViewport *viewport, Lib3dsIo *io)
-{
- Lib3dsChunk c;
- Lib3dsWord chunk;
-
- if (!lib3ds_chunk_read_start(&c, 0, io)) {
- return(LIB3DS_FALSE);
- }
-
- switch (c.chunk) {
- case LIB3DS_VIEWPORT_LAYOUT:
- {
- int cur=0;
- viewport->layout.style=lib3ds_io_read_word(io);
- viewport->layout.active=lib3ds_io_read_intw(io);
- lib3ds_io_read_intw(io);
- viewport->layout.swap=lib3ds_io_read_intw(io);
- lib3ds_io_read_intw(io);
- viewport->layout.swap_prior=lib3ds_io_read_intw(io);
- viewport->layout.swap_view=lib3ds_io_read_intw(io);
- lib3ds_chunk_read_tell(&c, io);
- while ((chunk=lib3ds_chunk_read_next(&c, io))!=0) {
- switch (chunk) {
- case LIB3DS_VIEWPORT_SIZE:
- {
- viewport->layout.position[0]=lib3ds_io_read_word(io);
- viewport->layout.position[1]=lib3ds_io_read_word(io);
- viewport->layout.size[0]=lib3ds_io_read_word(io);
- viewport->layout.size[1]=lib3ds_io_read_word(io);
- }
- break;
- case LIB3DS_VIEWPORT_DATA_3:
- {
- lib3ds_viewport_set_views(viewport,cur+1);
- lib3ds_io_read_intw(io);
- viewport->layout.viewL[cur].axis_lock=lib3ds_io_read_word(io);
- viewport->layout.viewL[cur].position[0]=lib3ds_io_read_intw(io);
- viewport->layout.viewL[cur].position[1]=lib3ds_io_read_intw(io);
- viewport->layout.viewL[cur].size[0]=lib3ds_io_read_intw(io);
- viewport->layout.viewL[cur].size[1]=lib3ds_io_read_intw(io);
- viewport->layout.viewL[cur].type=lib3ds_io_read_word(io);
- viewport->layout.viewL[cur].zoom=lib3ds_io_read_float(io);
- lib3ds_io_read_vector(io, viewport->layout.viewL[cur].center);
- viewport->layout.viewL[cur].horiz_angle=lib3ds_io_read_float(io);
- viewport->layout.viewL[cur].vert_angle=lib3ds_io_read_float(io);
- lib3ds_io_read(io, viewport->layout.viewL[cur].camera, 11);
- ++cur;
- }
- break;
- case LIB3DS_VIEWPORT_DATA:
- /* 3DS R2 & R3 chunk
- unsupported */
- break;
- default:
- lib3ds_chunk_unknown(chunk);
- }
- }
- }
- break;
- case LIB3DS_DEFAULT_VIEW:
- {
- memset(&viewport->default_view,0,sizeof(Lib3dsDefaultView));
- while ((chunk=lib3ds_chunk_read_next(&c, io))!=0) {
- switch (chunk) {
- case LIB3DS_VIEW_TOP:
- {
- viewport->default_view.type=LIB3DS_VIEW_TYPE_TOP;
- lib3ds_io_read_vector(io, viewport->default_view.position);
- viewport->default_view.width=lib3ds_io_read_float(io);
- }
- break;
- case LIB3DS_VIEW_BOTTOM:
- {
- viewport->default_view.type=LIB3DS_VIEW_TYPE_BOTTOM;
- lib3ds_io_read_vector(io, viewport->default_view.position);
- viewport->default_view.width=lib3ds_io_read_float(io);
- }
- break;
- case LIB3DS_VIEW_LEFT:
- {
- viewport->default_view.type=LIB3DS_VIEW_TYPE_LEFT;
- lib3ds_io_read_vector(io, viewport->default_view.position);
- viewport->default_view.width=lib3ds_io_read_float(io);
- }
- break;
- case LIB3DS_VIEW_RIGHT:
- {
- viewport->default_view.type=LIB3DS_VIEW_TYPE_RIGHT;
- lib3ds_io_read_vector(io, viewport->default_view.position);
- viewport->default_view.width=lib3ds_io_read_float(io);
- }
- break;
- case LIB3DS_VIEW_FRONT:
- {
- viewport->default_view.type=LIB3DS_VIEW_TYPE_FRONT;
- lib3ds_io_read_vector(io, viewport->default_view.position);
- viewport->default_view.width=lib3ds_io_read_float(io);
- }
- break;
- case LIB3DS_VIEW_BACK:
- {
- viewport->default_view.type=LIB3DS_VIEW_TYPE_BACK;
- lib3ds_io_read_vector(io, viewport->default_view.position);
- viewport->default_view.width=lib3ds_io_read_float(io);
- }
- break;
- case LIB3DS_VIEW_USER:
- {
- viewport->default_view.type=LIB3DS_VIEW_TYPE_USER;
- lib3ds_io_read_vector(io, viewport->default_view.position);
- viewport->default_view.width=lib3ds_io_read_float(io);
- viewport->default_view.horiz_angle=lib3ds_io_read_float(io);
- viewport->default_view.vert_angle=lib3ds_io_read_float(io);
- viewport->default_view.roll_angle=lib3ds_io_read_float(io);
- }
- break;
- case LIB3DS_VIEW_CAMERA:
- {
- viewport->default_view.type=LIB3DS_VIEW_TYPE_CAMERA;
- lib3ds_io_read(io, viewport->default_view.camera, 11);
- }
- break;
- default:
- lib3ds_chunk_unknown(chunk);
- }
- }
- }
- break;
- }
-
- lib3ds_chunk_read_end(&c, io);
- return(LIB3DS_TRUE);
-}
-
-
-/*!
- * \ingroup viewport
- */
-void
-lib3ds_viewport_set_views(Lib3dsViewport *viewport, Lib3dsDword views)
-{
- ASSERT(viewport);
- if (viewport->layout.views) {
- if (views) {
- viewport->layout.views=views;
- viewport->layout.viewL=(Lib3dsView*)realloc(viewport->layout.viewL, sizeof(Lib3dsView)*views);
- }
- else {
- free(viewport->layout.viewL);
- viewport->layout.views=0;
- viewport->layout.viewL=0;
- }
- }
- else {
- if (views) {
- viewport->layout.views=views;
- viewport->layout.viewL=(Lib3dsView*)calloc(sizeof(Lib3dsView),views);
- }
- }
-}
-
-
-/*!
- * \ingroup viewport
- */
-Lib3dsBool
-lib3ds_viewport_write(Lib3dsViewport *viewport, Lib3dsIo *io)
-{
- if (viewport->layout.views) {
- Lib3dsChunk c;
- unsigned i;
-
- c.chunk=LIB3DS_VIEWPORT_LAYOUT;
- if (!lib3ds_chunk_write_start(&c,io)) {
- return(LIB3DS_FALSE);
- }
-
- lib3ds_io_write_word(io, viewport->layout.style);
- lib3ds_io_write_intw(io, viewport->layout.active);
- lib3ds_io_write_intw(io, 0);
- lib3ds_io_write_intw(io, viewport->layout.swap);
- lib3ds_io_write_intw(io, 0);
- lib3ds_io_write_intw(io, viewport->layout.swap_prior);
- lib3ds_io_write_intw(io, viewport->layout.swap_view);
-
- {
- Lib3dsChunk c;
- c.chunk=LIB3DS_VIEWPORT_SIZE;
- c.size=14;
- lib3ds_chunk_write(&c,io);
- lib3ds_io_write_intw(io, viewport->layout.position[0]);
- lib3ds_io_write_intw(io, viewport->layout.position[1]);
- lib3ds_io_write_intw(io, viewport->layout.size[0]);
- lib3ds_io_write_intw(io, viewport->layout.size[1]);
- }
-
- for (i=0; i<viewport->layout.views; ++i) {
- Lib3dsChunk c;
- c.chunk=LIB3DS_VIEWPORT_DATA_3;
- c.size=55;
- lib3ds_chunk_write(&c,io);
-
- lib3ds_io_write_intw(io, 0);
- lib3ds_io_write_word(io, viewport->layout.viewL[i].axis_lock);
- lib3ds_io_write_intw(io, viewport->layout.viewL[i].position[0]);
- lib3ds_io_write_intw(io, viewport->layout.viewL[i].position[1]);
- lib3ds_io_write_intw(io, viewport->layout.viewL[i].size[0]);
- lib3ds_io_write_intw(io, viewport->layout.viewL[i].size[1]);
- lib3ds_io_write_word(io, viewport->layout.viewL[i].type);
- lib3ds_io_write_float(io, viewport->layout.viewL[i].zoom);
- lib3ds_io_write_vector(io, viewport->layout.viewL[i].center);
- lib3ds_io_write_float(io, viewport->layout.viewL[i].horiz_angle);
- lib3ds_io_write_float(io, viewport->layout.viewL[i].vert_angle);
- lib3ds_io_write(io, viewport->layout.viewL[i].camera,11);
- }
-
- if (!lib3ds_chunk_write_end(&c,io)) {
- return(LIB3DS_FALSE);
- }
- }
-
- if (viewport->default_view.type) {
- Lib3dsChunk c;
-
- c.chunk=LIB3DS_DEFAULT_VIEW;
- if (!lib3ds_chunk_write_start(&c,io)) {
- return(LIB3DS_FALSE);
- }
-
- switch (viewport->default_view.type) {
- case LIB3DS_VIEW_TYPE_TOP:
- {
- Lib3dsChunk c;
- c.chunk=LIB3DS_VIEW_TOP;
- c.size=22;
- lib3ds_chunk_write(&c,io);
- lib3ds_io_write_vector(io, viewport->default_view.position);
- lib3ds_io_write_float(io, viewport->default_view.width);
- }
- break;
- case LIB3DS_VIEW_TYPE_BOTTOM:
- {
- Lib3dsChunk c;
- c.chunk=LIB3DS_VIEW_BOTTOM;
- c.size=22;
- lib3ds_chunk_write(&c,io);
- lib3ds_io_write_vector(io, viewport->default_view.position);
- lib3ds_io_write_float(io, viewport->default_view.width);
- }
- break;
- case LIB3DS_VIEW_TYPE_LEFT:
- {
- Lib3dsChunk c;
- c.chunk=LIB3DS_VIEW_LEFT;
- c.size=22;
- lib3ds_chunk_write(&c,io);
- lib3ds_io_write_vector(io, viewport->default_view.position);
- lib3ds_io_write_float(io, viewport->default_view.width);
- }
- break;
- case LIB3DS_VIEW_TYPE_RIGHT:
- {
- Lib3dsChunk c;
- c.chunk=LIB3DS_VIEW_RIGHT;
- c.size=22;
- lib3ds_chunk_write(&c,io);
- lib3ds_io_write_vector(io, viewport->default_view.position);
- lib3ds_io_write_float(io, viewport->default_view.width);
- }
- break;
- case LIB3DS_VIEW_TYPE_FRONT:
- {
- Lib3dsChunk c;
- c.chunk=LIB3DS_VIEW_FRONT;
- c.size=22;
- lib3ds_chunk_write(&c,io);
- lib3ds_io_write_vector(io, viewport->default_view.position);
- lib3ds_io_write_float(io, viewport->default_view.width);
- }
- break;
- case LIB3DS_VIEW_TYPE_BACK:
- {
- Lib3dsChunk c;
- c.chunk=LIB3DS_VIEW_BACK;
- c.size=22;
- lib3ds_chunk_write(&c,io);
- lib3ds_io_write_vector(io, viewport->default_view.position);
- lib3ds_io_write_float(io, viewport->default_view.width);
- }
- break;
- case LIB3DS_VIEW_TYPE_USER:
- {
- Lib3dsChunk c;
- c.chunk=LIB3DS_VIEW_USER;
- c.size=34;
- lib3ds_chunk_write(&c,io);
- lib3ds_io_write_vector(io, viewport->default_view.position);
- lib3ds_io_write_float(io, viewport->default_view.width);
- lib3ds_io_write_float(io, viewport->default_view.horiz_angle);
- lib3ds_io_write_float(io, viewport->default_view.vert_angle);
- lib3ds_io_write_float(io, viewport->default_view.roll_angle);
- }
- break;
- case LIB3DS_VIEW_TYPE_CAMERA:
- {
- Lib3dsChunk c;
- c.chunk=LIB3DS_VIEW_CAMERA;
- c.size=17;
- lib3ds_chunk_write(&c, io);
- lib3ds_io_write(io, viewport->default_view.camera, 11);
- }
- break;
- }
-
- if (!lib3ds_chunk_write_end(&c, io)) {
- return(LIB3DS_FALSE);
- }
- }
- return(LIB3DS_TRUE);
-}
-
-
-/*!
- * Dump viewport.
- *
- * \param vp The viewport to be dumped.
- *
- * \ingroup node
- */
-void
-lib3ds_viewport_dump(Lib3dsViewport *vp)
-{
- Lib3dsView *view;
- unsigned i;
- ASSERT(vp);
-
- printf(" viewport:\n");
- printf(" layout:\n");
- printf(" style: %d\n", vp->layout.style);
- printf(" active: %d\n", vp->layout.active);
- printf(" swap: %d\n", vp->layout.swap);
- printf(" swap_prior: %d\n", vp->layout.swap_prior);
- printf(" position: %d,%d\n",
- vp->layout.position[0], vp->layout.position[1]);
- printf(" size: %d,%d\n", vp->layout.size[0], vp->layout.size[1]);
- printf(" views: %ld\n", (long)(vp->layout.views));
- if (vp->layout.views > 0 && vp->layout.viewL != NULL) {
- for (i=0, view=vp->layout.viewL; i < vp->layout.views; ++i, ++view) {
- printf(" view %d:\n", i);
- printf(" type: %d\n", view->type);
- printf(" axis_lock: %d\n", view->axis_lock);
- printf(" position: (%d,%d)\n",
- view->position[0], view->position[1]);
- printf(" size: (%d,%d)\n", view->size[0], view->size[1]);
- printf(" zoom: %g\n", view->zoom);
- printf(" center: (%g,%g,%g)\n",
- view->center[0], view->center[1], view->center[2]);
- printf(" horiz_angle: %g\n", view->horiz_angle);
- printf(" vert_angle: %g\n", view->vert_angle);
- printf(" camera: %s\n", view->camera);
- }
- }
-
- printf(" default_view:\n");
- printf(" type: %d\n", vp->default_view.type);
- printf(" position: (%g,%g,%g)\n",
- vp->default_view.position[0],
- vp->default_view.position[1],
- vp->default_view.position[2]);
- printf(" width: %g\n", vp->default_view.width);
- printf(" horiz_angle: %g\n", vp->default_view.horiz_angle);
- printf(" vert_angle: %g\n", vp->default_view.vert_angle);
- printf(" roll_angle: %g\n", vp->default_view.roll_angle);
- printf(" camera: %s\n", vp->default_view.camera);
-}
-