/************************************************************************
MeOS - Orienteering Software
Copyright (C) 2009-2020 Melin Software HB
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 3 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/
#pragma once
struct oListParam;
class HTMLWriter {
string info;
string description;
string head;
string outerpage;
string innerpage;
string separator;
string end;
string page;
static map > tCache;
static string localize(const string &in);
public:
static void reset() {
tCache.clear();
}
enum class TemplateType {
List,
Page
};
static const HTMLWriter &getWriter(TemplateType type, const string &tag);
struct TemplateInfo {
string tag;
wstring name;
wstring desc;
wstring file;
};
static void enumTemplates(TemplateType type, vector &descriptionFile);
void read(const wstring &fileName);
void generate(gdioutput &gdi,
ostream &fout,
const wstring &title,
const wstring &contentDescription,
bool respectPageBreak,
const int nRows,
const int numCol,
const int interval,
const int marginPercent,
double scal) const;
void getPage(const oEvent &oe, string &out) const;
static void writeHTML(gdioutput &gdi, ostream &dout, const wstring &title, int refreshTimeOut, double scale);
static void writeTableHTML(gdioutput &gdi, ostream &fout,
const wstring &title,
bool simpleFormat,
int refreshTimeOut,
double scale);
static void writeTableHTML(gdioutput &gdi, const wstring &file,
const wstring &title,
int refreshTimeOut,
double scale);
static void writeHTML(gdioutput &gdi, const wstring &file,
const wstring &title, int refreshTimeOut, double scale);
static void write(gdioutput &gdi, const wstring &file, const wstring &title, const wstring &contentsDescription,
bool respectPageBreak, const string &typeTag, int refresh,
int rows, int cols, int time_ms, int margin, double scale);
static void write(gdioutput &gdi, ostream &fout, const wstring &title, const wstring &contentsDescription,
bool respectPageBreak, const string &typeTag, int refresh,
int rows, int cols, int time_ms, int margin, double scale);
static void write(gdioutput &gdi, const wstring &file, const wstring &title, int refresh, oListParam ¶m, const oEvent &oe);
template
static void formatTL(ostream &fout,
const map< pair, pair > &styles,
const T &tl,
double &yscale,
double &xscale,
int &offsetY,
int &offsetX);
};