mirror of
https://github.com/schrodinger/pymol-open-source.git
synced 2026-06-04 20:04:21 +08:00
108 lines
3.4 KiB
C
108 lines
3.4 KiB
C
|
|
/*
|
|
A* -------------------------------------------------------------------
|
|
B* This file contains source code for the PyMOL computer program
|
|
C* copyright 1998-2000 by Warren Lyford Delano of DeLano Scientific.
|
|
D* -------------------------------------------------------------------
|
|
E* It is unlawful to modify or remove this copyright notice.
|
|
F* -------------------------------------------------------------------
|
|
G* Please see the accompanying LICENSE file for further information.
|
|
H* -------------------------------------------------------------------
|
|
I* Additional authors of this source file include:
|
|
-*
|
|
-*
|
|
-*
|
|
Z* -------------------------------------------------------------------
|
|
*/
|
|
#ifndef _H_Character
|
|
#define _H_Character
|
|
|
|
#include "Pixmap.h"
|
|
#include "PyMOLGlobals.h"
|
|
#include "Font.h"
|
|
|
|
typedef unsigned char CharColor[4];
|
|
|
|
typedef struct {
|
|
int text_id; /* 32 bits (+ 2) */
|
|
unsigned int ch; /* 32 bits (+ 2) */
|
|
short int size; /* 16 bits (+ 1) */
|
|
CharColor color; /* 32 bits (+ 2) */
|
|
CharColor outline_color; /* 32 bits (+ 2) */
|
|
short int flat; /* 16 bits (+ 1) */
|
|
} CharInfo; /* 10 short ints
|
|
* if you change this, update hash functions in Character.c */
|
|
|
|
typedef struct {
|
|
unsigned short int data[10];
|
|
} CharData;
|
|
|
|
typedef union {
|
|
CharInfo i;
|
|
CharData d;
|
|
} CharUnion;
|
|
|
|
typedef struct {
|
|
unsigned short hash_code;
|
|
CharUnion u;
|
|
} CharFngrprnt;
|
|
|
|
#define EXTENT_SIZE 4
|
|
|
|
typedef struct {
|
|
int Active;
|
|
CPixmap Pixmap;
|
|
int Width;
|
|
int Height;
|
|
float Advance;
|
|
float XOrig, YOrig;
|
|
int Next, Prev, HashNext, HashPrev;
|
|
CharFngrprnt Fngrprnt;
|
|
float extent[EXTENT_SIZE]; /* texture extent */
|
|
} CharRec;
|
|
|
|
struct _CCharacter {
|
|
int MaxAlloc;
|
|
int LastFree;
|
|
int NewestUsed;
|
|
int OldestUsed;
|
|
int NUsed;
|
|
int TargetMaxUsage; /* don't store more than this many pixmaps in RAM */
|
|
int *Hash;
|
|
int RetainAll;
|
|
CharRec *Char;
|
|
};
|
|
|
|
int CharacterInit(PyMOLGlobals * G);
|
|
void CharacterFree(PyMOLGlobals * G);
|
|
|
|
int CharacterGetNew(PyMOLGlobals * G);
|
|
int CharacterGetWidth(PyMOLGlobals * G, int id);
|
|
int CharacterGetHeight(PyMOLGlobals * G, int id);
|
|
int CharacterGetGeometry(PyMOLGlobals * G, int id,
|
|
int *width, int *height,
|
|
float *xorig, float *yorig, float *advance);
|
|
float CharacterGetAdvance(PyMOLGlobals * G, int sampling, int id);
|
|
|
|
int CharacterNewFromBitmap(PyMOLGlobals * G, int width, int height,
|
|
unsigned char *bitmap,
|
|
float x_orig, float y_orig, float advance,
|
|
CharFngrprnt * fprnt, int sampling);
|
|
|
|
int CharacterNewFromBytemap(PyMOLGlobals * G, int width, int height,
|
|
int pitch, unsigned char *bytemap,
|
|
float x_orig, float y_orig, float advance,
|
|
CharFngrprnt * fprnt);
|
|
|
|
int CharacterFind(PyMOLGlobals * G, CharFngrprnt * fprnt);
|
|
|
|
float CharacterInterpolate(PyMOLGlobals * G, int id, float *v);
|
|
void CharacterSetRetention(PyMOLGlobals * G, int retail_all);
|
|
unsigned char *CharacterGetPixmapBuffer(PyMOLGlobals * G, int id);
|
|
|
|
void CharacterRenderOpenGLPrime(PyMOLGlobals * G, const RenderInfo * info);
|
|
short CharacterRenderOpenGL(PyMOLGlobals * G, const RenderInfo * info, int id, short isworldlabel, short relativeMode, CGO* shaderCGO);
|
|
void CharacterRenderOpenGLDone(PyMOLGlobals * G, const RenderInfo * info);
|
|
|
|
#endif
|