This is cgt.h in view mode; [Download] [Up]
/* cgt - Functions to deal with CGT matrices Copyright (C) 1995 Free Software Foundation, Inc. Written by: Adam Fedor <fedor@boulder.colorado.edu> Date: Nov 1995 This file is part of the GNU Objective C User interface library. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _cgt_h_INCLUDE #define _cgt_h_INCLUDE #include <Foundation/NSGeometry.h> /* Homogenous coordinate geometric transform matrix [ a b 0 ] T = [ c d 0 ] [ tx ty 1 ] Transform a point by pre-multiplying the point by the matrix, i.e. Pnew = transpose(P) * T */ typedef struct { double a, b, c, d, tx, ty; } cgt_t; /* Useful functions to deal with CGT matrices. Rotation is specified in degrees. concatCGT - concatenates two CGTs, acgt and bcgt, and returns the new matrix. (cgt = acgt * bcgt) composeCGT - Compose a CGT matrix from the specified scale, translation, and rotation. The transformation is applied in the order that the arguments are given (i.e. scale, then rotate, then translate). Arguments are given as pointers to make it easy to generate an identity transform matrix - use composeCGT(NULL, 0, NULL) to generate a matrix with no translation or rotation and a scaling of one. decomposeCGT - Return the transfomation information that was used to construct the CGT (via a call to composeCGT). applyCGT - Transforms the point by the given CGT. Returns the new point. */ extern cgt_t concatCGT(cgt_t acgt, cgt_t bcgt); extern cgt_t composeCGT(const NSSize *scale, double rotation, const NSPoint *trans); extern void decomposeCGT(cgt_t cgt, NSSize *scale, double *rotation, NSPoint *trans); extern cgt_t invertCGT(cgt_t cgt); extern NSPoint applyCGT(NSPoint point, cgt_t cgt); extern double rotationFromCGT(cgt_t cgt); extern NSSize scaleFromCGT(cgt_t cgt); extern NSPoint offsetFromCGT(cgt_t cgt); extern const float * cgtToMatrix(cgt_t cgt); extern cgt_t matrixToCgt(const float *m); #endif
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.