blob: a2dc58dcfd89af0d9d4533bfcb0962b9f84fd380 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
|
/***************************************************************************
pgn.h - description
-------------------
begin : Mon Jul 30 2001
copyright : (C) 2003 by Troy Corbin Jr.
email : tcorbin@users.sourceforge.net
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef PGN_H
#define PGN_H
#include <klocale.h>
#include <ktempfile.h>
#include <kio/netaccess.h>
#include <tqobject.h>
#include <tqstring.h>
#include <tqstringlist.h>
#include <tqvaluelist.h>
#include <tqfile.h>
#include <tqtextstream.h>
#include <tqpainter.h>
#include "definitions.h"
#include "resource.h"
#include "knightsmap.h"
#include "match_param.h"
/**
*@author Troy Corbin Jr.
*/
typedef struct Annotation
{
int RAV;
TQString text;
};
typedef TQValueList<ChessMove> MoveList;
typedef KnightsMap<int, Annotation*> Annotations;
class tab_pgnView;
class pgn : public TQObject
{
Q_OBJECT
TQ_OBJECT
public:
/* Standard PGN Tags */
TQString TAG_Event;
TQString TAG_Site;
TQString TAG_Date;
TQString TAG_Round;
TQString TAG_White;
TQString TAG_Black;
TQString TAG_Result;
TQString TAG_EventDate;
TQString TAG_EventSponsor;
TQString TAG_Section;
TQString TAG_Stage;
TQString TAG_Board;
TQString TAG_WhiteTitle;
TQString TAG_WhiteElo;
TQString TAG_WhiteUSCF;
TQString TAG_WhiteNA;
TQString TAG_WhiteType;
TQString TAG_BlackTitle;
TQString TAG_BlackElo;
TQString TAG_BlackUSCF;
TQString TAG_BlackNA;
TQString TAG_BlackType;
TQString TAG_Opening;
TQString TAG_Variation;
TQString TAG_SubVariation;
TQString TAG_ECO;
TQString TAG_NIC;
TQString TAG_Time;
TQString TAG_UTCTime;
TQString TAG_UTCDate;
TQString TAG_TimeControl;
TQString TAG_SetUp;
TQString TAG_FEN;
TQString TAG_Termination;
TQString TAG_Annotator;
TQString TAG_Mode;
TQString TAG_PlyCount;
int File_Position; // Used to scan PGN file
TQStringList Move_Data;
/* The match_param */
match_param *Param;
/* These are used in unfinished save games */
int whiteTime;
int blackTime;
TCPList whiteTCP;
TCPList blackTCP;
TQString CurrentURL;
MoveList Moves;
Annotations RAV;
Annotations annotations;
TQStringList Positions;
unsigned int currentIndex;
pgn( resource *Rsrc=0, match_param *param=NULL );
~pgn();
void clear( void );
void init( void );
int scan( void );
bool load( const int pos=0 );
bool save( TQString URL );
bool open( const TQString& URL );
void print( void );
TQStringList* notation( const int format=1 );
void close( void );
static TQString getNAG( int num );
TQString caption( void );
signals:
void processMove( ChessMove );
void processSpecial( void );
public slots:
bool loadNext( void );
void parseMatchParam( void );
void childViewDestroyed( void );
private:
resource *Resource;
tab_pgnView *pgnView;
TQString tempFile;
TQString currentLine;
TQFile File;
TQTextStream Input;
TQChar getch( void );
TQString getword( void );
void clearTags( void );
void parseTag( void );
void parseAnnotation( const int fromRAVnum=0 );
void parseRAV( void );
void parseKnightsData( void );
};
#endif
|