Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>pull/193/head
parent
81288cfcb6
commit
6964feed83
@ -1,704 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!-- /home/espenr/tmp/qt-3.3.8-espenr-2499/qt-x11-free-3.3.8/extensions/nsplugin/examples/grapher/grapher.doc:1 -->
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>Grapher Plugin</title>
|
||||
<style type="text/css"><!--
|
||||
fn { margin-left: 1cm; text-indent: -1cm; }
|
||||
a:link { color: #004faf; text-decoration: none }
|
||||
a:visited { color: #672967; text-decoration: none }
|
||||
body { background: #ffffff; color: black; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr bgcolor="#E5E5E5">
|
||||
<td valign=center>
|
||||
<a href="index.html">
|
||||
<font color="#004faf">Home</font></a>
|
||||
| <a href="classes.html">
|
||||
<font color="#004faf">All Classes</font></a>
|
||||
| <a href="mainclasses.html">
|
||||
<font color="#004faf">Main Classes</font></a>
|
||||
| <a href="annotated.html">
|
||||
<font color="#004faf">Annotated</font></a>
|
||||
| <a href="groups.html">
|
||||
<font color="#004faf">Grouped Classes</font></a>
|
||||
| <a href="functions.html">
|
||||
<font color="#004faf">Functions</font></a>
|
||||
</td>
|
||||
<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table><h1 align=center>Grapher Plugin</h1>
|
||||
|
||||
|
||||
|
||||
<p> This example graphs data from a simple text file. It
|
||||
demonstrates the use of the <a href="tqnpinstance.html#writeReady">TQNPInstance::writeReady</a>()
|
||||
and <a href="tqnpinstance.html#write">TQNPInstance::write</a>() functions.
|
||||
<p> To build the example, you must first build the
|
||||
<a href=nsplugin.html>TQt Netscape Plugin Extension</a> library.
|
||||
Then type <tt>make</tt> in <tt>extensions/nsplugin/examples/grapher/</tt>
|
||||
and copy the resulting <tt>grapher.so</tt> or <tt>npgrapher.dll</tt>
|
||||
to the Plugins directory of your WWW browser.
|
||||
<p> <EMBED ALIGN=LEFT WIDTH=49% HEIGHT=300 SRC=graph.g1n
|
||||
graphstyle=pie fontfamily=times fontsize=18>
|
||||
<p> The text file it accepts as input has a title line, then
|
||||
a sequence of lines with a number, then a string. The
|
||||
plugin displays a pie chart of the numbers, each segment
|
||||
labelled by the associated string. The user can select
|
||||
a bar chart view of the same data by selecting from the
|
||||
menu that appears when they point at the plugin.
|
||||
<p> The HTML tag used to embed the graph is:
|
||||
<small>
|
||||
<pre>
|
||||
<EMBED
|
||||
SRC=graph.g1n
|
||||
ALIGN=LEFT
|
||||
WIDTH=49% HEIGHT=300
|
||||
graphstyle=pie fontfamily=times
|
||||
fontsize=18>
|
||||
</pre><p> </small>
|
||||
Note that some HTML arguments (which we have capitalized here)
|
||||
are interpreted by the browser, while others are used by the
|
||||
plugin.
|
||||
<p> <br clear>
|
||||
With the simplicity and cross-platform nature of TQt-based plugins,
|
||||
pages like <a href="http://www.netcraft.com/survey/">Netcraft's
|
||||
Server Graphs</a> can be provided much more efficiently for both
|
||||
the service provider and consumer. Data need not be converted
|
||||
to an image at the server.
|
||||
<p> <br clear>
|
||||
<hr>
|
||||
Implementation:
|
||||
<p> <pre>// Include TQt Netscape Plugin classes.
|
||||
#include "tqnp.h"
|
||||
|
||||
// Include other TQt classes.
|
||||
#include <<a href="tqpainter-h.html">tqpainter.h</a>>
|
||||
#include <<a href="tqtextstream-h.html">tqtextstream.h</a>>
|
||||
#include <<a href="tqbuffer-h.html">tqbuffer.h</a>>
|
||||
#include <<a href="tqpixmap-h.html">tqpixmap.h</a>>
|
||||
#include <<a href="tqmenubar-h.html">tqmenubar.h</a>>
|
||||
#include <<a href="tqpushbutton-h.html">tqpushbutton.h</a>>
|
||||
#include <<a href="tqptrlist-h.html">tqptrlist.h</a>>
|
||||
#include <<a href="tqmessagebox-h.html">tqmessagebox.h</a>>
|
||||
|
||||
// Include some C library functions.
|
||||
#include <math.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifndef M_PI // Some math.h don't include this.
|
||||
#define M_PI 3.14159265358979323846264338327950288
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
//
|
||||
// GraphModel is a simple abstract class that describes
|
||||
// a table of numeric and text data.
|
||||
//
|
||||
|
||||
class GraphModel {
|
||||
public:
|
||||
enum ColType { Numeric, Label };
|
||||
|
||||
union Datum {
|
||||
double dbl;
|
||||
<a href="tqstring.html">TQString</a>* str;
|
||||
};
|
||||
|
||||
virtual TQPtrList<Datum>& graphData()=0;
|
||||
virtual ColType colType(int col) const=0;
|
||||
virtual int nCols() const=0;
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// Graph is a widget subclass that displays a GraphModel.
|
||||
// Since the widget is a TQNPWidget, it can be used as a plugin window,
|
||||
// returned by Grapher::newWindow() below.
|
||||
//
|
||||
|
||||
class Graph : public <a href="tqnpwidget.html">TQNPWidget</a> {
|
||||
<a href="metaobjects.html#TQ_OBJECT">TQ_OBJECT</a>
|
||||
public:
|
||||
// Constructs a Graph to display a GraphModel
|
||||
//
|
||||
Graph(GraphModel&);
|
||||
~Graph();
|
||||
|
||||
// Two styles are available - Pie and Bar graph
|
||||
//
|
||||
enum Style { Pie, Bar };
|
||||
static const char* styleName[];
|
||||
void setStyle(Style);
|
||||
void setStyle(const char*);
|
||||
|
||||
// Timer event processing rotates the pie graph
|
||||
//
|
||||
void timerEvent(TQTimerEvent*);
|
||||
|
||||
// These functions are provided by TQNPWidget - we override
|
||||
// them to hide and show the plugin menubar.
|
||||
//
|
||||
void enterInstance();
|
||||
void leaveInstance();
|
||||
|
||||
// Paint the graph...
|
||||
//
|
||||
void paintEvent(TQPaintEvent*);
|
||||
//
|
||||
// ... as either a "Loading" message, a Bar graph, a Pie graph,
|
||||
// or an error message.
|
||||
//
|
||||
void paintWait(TQPaintEvent*);
|
||||
void paintBar(TQPaintEvent*);
|
||||
void paintPie(TQPaintEvent*);
|
||||
void paintError(const char*);
|
||||
|
||||
signals:
|
||||
// Signals emitted when the Help menus are selected.
|
||||
void aboutPlugin();
|
||||
void aboutData();
|
||||
|
||||
private:
|
||||
GraphModel& model;
|
||||
<a href="tqmenubar.html">TQMenuBar</a> *menubar;
|
||||
Style style;
|
||||
<a href="tqpopupmenu.html">TQPopupMenu</a>* stylemenu;
|
||||
int pieRotationTimer;
|
||||
int pieRotation;
|
||||
<a href="tqpixmap.html">TQPixmap</a> pm;
|
||||
|
||||
private slots:
|
||||
void setStyleFromMenu(int id);
|
||||
};
|
||||
|
||||
|
||||
<a name="f564"></a>Graph::Graph( GraphModel& mdl ) :
|
||||
model(mdl),
|
||||
<a href="tqwidget.html#style">style</a>(Bar),
|
||||
pieRotationTimer(0),
|
||||
pieRotation(0)
|
||||
{
|
||||
// Create a menubar for the widget
|
||||
//
|
||||
menubar = new <a href="tqmenubar.html">TQMenuBar</a>( this );
|
||||
stylemenu = new <a href="tqpopupmenu.html">TQPopupMenu</a>;
|
||||
<a name="x2768"></a> stylemenu-><a href="tqpopupmenu.html#setCheckable">setCheckable</a>(TRUE);
|
||||
for ( Style s = Pie; styleName[s]; s = Style(s+1)) {
|
||||
stylemenu-><a href="tqmenudata.html#insertItem">insertItem</a>(styleName[s], s+100);
|
||||
}
|
||||
<a name="x2767"></a> <a href="tqobject.html#connect">connect</a>(stylemenu, TQ_SIGNAL(<a href="tqpopupmenu.html#activated">activated</a>(int)),
|
||||
this, TQ_SLOT(setStyleFromMenu(int)));
|
||||
<a href="tqwidget.html#setStyle">setStyle</a>(Pie);
|
||||
|
||||
menubar-><a href="tqmenudata.html#insertItem">insertItem</a>("Style", stylemenu);
|
||||
menubar-><a href="tqmenudata.html#insertSeparator">insertSeparator</a>();
|
||||
|
||||
<a href="tqpopupmenu.html">TQPopupMenu</a>* help = new <a href="tqpopupmenu.html">TQPopupMenu</a>;
|
||||
help-><a href="tqmenudata.html#insertItem">insertItem</a>( "About plugin...", this, TQ_SIGNAL(aboutPlugin()) );
|
||||
help-><a href="tqmenudata.html#insertItem">insertItem</a>( "About data...", this, TQ_SIGNAL(aboutData()) );
|
||||
menubar-><a href="tqmenudata.html#insertItem">insertItem</a>("Help", help);
|
||||
<a name="x2745"></a> menubar-><a href="tqmenubar.html#hide">hide</a>();
|
||||
}
|
||||
|
||||
Graph::~Graph()
|
||||
{
|
||||
}
|
||||
|
||||
<a name="x2778"></a>void Graph::<a href="tqwidget.html#setStyle">setStyle</a>(Style s)
|
||||
{
|
||||
if (style != s) {
|
||||
if (pieRotationTimer)
|
||||
<a href="tqobject.html#killTimer">killTimer</a>(pieRotationTimer);
|
||||
<a name="x2749"></a> stylemenu-><a href="tqmenudata.html#setItemChecked">setItemChecked</a>(100+style, FALSE);
|
||||
style = s;
|
||||
if ( style == Pie )
|
||||
pieRotationTimer = <a href="tqobject.html#startTimer">startTimer</a>( 80 );
|
||||
else
|
||||
pieRotationTimer = 0;
|
||||
stylemenu-><a href="tqmenudata.html#setItemChecked">setItemChecked</a>(100+style, TRUE);
|
||||
<a href="tqwidget.html#update">update</a>();
|
||||
}
|
||||
}
|
||||
|
||||
<a name="x2755"></a>void Graph::<a href="tqobject.html#timerEvent">timerEvent</a>(TQTimerEvent*)
|
||||
{
|
||||
pieRotation = ( pieRotation + 6 ) % 360; repaint(FALSE);
|
||||
}
|
||||
|
||||
void Graph::<a href="tqwidget.html#setStyle">setStyle</a>(const char* stext)
|
||||
{
|
||||
for ( Style s = Pie; styleName[s]; s = Style(s+1) ) {
|
||||
if ( <a href="tqcstring.html#qstricmp">tqstricmp</a>(stext,styleName[s])==0 ) {
|
||||
<a href="tqwidget.html#setStyle">setStyle</a>(s);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
<a name="x2753"></a>void Graph::<a href="tqnpwidget.html#enterInstance">enterInstance</a>()
|
||||
{
|
||||
<a name="x2746"></a> menubar-><a href="tqmenubar.html#show">show</a>();
|
||||
}
|
||||
|
||||
<a name="x2754"></a>void Graph::<a href="tqnpwidget.html#leaveInstance">leaveInstance</a>()
|
||||
{
|
||||
menubar-><a href="tqmenubar.html#hide">hide</a>();
|
||||
}
|
||||
|
||||
void <a name="f565"></a>Graph::paintError(const char* e)
|
||||
{
|
||||
<a href="tqpainter.html">TQPainter</a> p(this);
|
||||
int w = <a href="tqwidget.html#width">width</a>();
|
||||
<a name="x2760"></a> p.<a href="tqpainter.html#drawText">drawText</a>(w/8, 0, w-w/4, height(), AlignCenter|WordBreak, e);
|
||||
}
|
||||
|
||||
void <a name="f566"></a>Graph::paintBar(TQPaintEvent* event)
|
||||
{
|
||||
if ( model.colType(0) != GraphModel::Numeric ) {
|
||||
paintError("First column not numeric, cannot draw bar graph\n");
|
||||
return;
|
||||
}
|
||||
|
||||
<a href="tqptrlist.html">TQPtrList</a><GraphModel::Datum>& data = model.graphData();
|
||||
|
||||
double max = 0.0;
|
||||
|
||||
<a name="x2772"></a> for (GraphModel::Datum* rowdata = data.<a href="tqptrlist.html#first">first</a>();
|
||||
<a name="x2773"></a> rowdata; rowdata = data.<a href="tqptrlist.html#next">next</a>())
|
||||
{
|
||||
if (rowdata[0].dbl > max) max = rowdata[0].dbl;
|
||||
}
|
||||
|
||||
const uint w = <a href="tqwidget.html#width">width</a>();
|
||||
const uint h = <a href="tqwidget.html#height">height</a>();
|
||||
|
||||
<a href="tqpainter.html">TQPainter</a> p(this);
|
||||
|
||||
<a name="x2762"></a> p.<a href="tqpainter.html#setClipRect">setClipRect</a>(event->rect());
|
||||
|
||||
<a name="x2771"></a> if ( w > data.<a href="tqptrlist.html#count">count</a>() ) {
|
||||
// More pixels than data
|
||||
int x = 0;
|
||||
int i = 0;
|
||||
<a href="tqfontmetrics.html">TQFontMetrics</a> fm=<a href="tqwidget.html#fontMetrics">fontMetrics</a>();
|
||||
<a name="x2741"></a> int fh = fm.<a href="tqfontmetrics.html#height">height</a>();
|
||||
|
||||
for (GraphModel::Datum* rowdata = data.<a href="tqptrlist.html#first">first</a>();
|
||||
rowdata; rowdata = data.<a href="tqptrlist.html#next">next</a>())
|
||||
{
|
||||
<a href="tqcolor.html">TQColor</a> c;
|
||||
<a name="x2740"></a> c.<a href="tqcolor.html#setHsv">setHsv</a>( (i * 255)/data.<a href="tqptrlist.html#count">count</a>(), 255, 255 );// rainbow effect
|
||||
p.<a href="tqpainter.html#setBrush">setBrush</a>(c);
|
||||
int bw = (w-w/4-x)/(data.<a href="tqptrlist.html#count">count</a>()-i);
|
||||
int bh = int((h-h/4-1)*rowdata[0].dbl/max);
|
||||
p.<a href="tqpainter.html#drawRect">drawRect</a>( w/8+x, h-h/8-1-bh, bw, bh );
|
||||
|
||||
i++;
|
||||
x+=bw;
|
||||
}
|
||||
} else {
|
||||
// More data than pixels
|
||||
int x = 0;
|
||||
int i = 0;
|
||||
double av = 0.0;
|
||||
int n = 0;
|
||||
for (GraphModel::Datum* rowdata = data.<a href="tqptrlist.html#first">first</a>(); rowdata;
|
||||
rowdata = data.<a href="tqptrlist.html#next">next</a>())
|
||||
{
|
||||
int bx = i*w/data.<a href="tqptrlist.html#count">count</a>();
|
||||
|
||||
if (bx > x) {
|
||||
<a href="tqcolor.html">TQColor</a> c;
|
||||
c.<a href="tqcolor.html#setHsv">setHsv</a>( (x * 255)/w, 255, 255 );// rainbow effect
|
||||
p.<a href="tqpainter.html#setPen">setPen</a>(c);
|
||||
int bh = int(h*av/n/max);
|
||||
|
||||
p.<a href="tqpainter.html#drawLine">drawLine</a>(x,h-1,x,h-bh);
|
||||
|
||||
av = 0.0;
|
||||
n = 0;
|
||||
x = bx;
|
||||
}
|
||||
|
||||
av += rowdata[0].dbl;
|
||||
n++;
|
||||
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void <a name="f567"></a>Graph::paintPie(TQPaintEvent* event)
|
||||
{
|
||||
if ( model.colType(0) != GraphModel::Numeric ) {
|
||||
paintError("First column not numeric, cannot draw pie graph\n");
|
||||
return;
|
||||
}
|
||||
|
||||
<a href="tqptrlist.html">TQPtrList</a><GraphModel::Datum>& data = model.graphData();
|
||||
|
||||
double total = 0.0;
|
||||
|
||||
GraphModel::Datum* rowdata;
|
||||
|
||||
for (rowdata = data.<a href="tqptrlist.html#first">first</a>();
|
||||
rowdata; rowdata = data.<a href="tqptrlist.html#next">next</a>())
|
||||
{
|
||||
total += rowdata[0].dbl;
|
||||
}
|
||||
|
||||
// Only use first column for pie chart
|
||||
if ( !total ) return;
|
||||
|
||||
int apos = (pieRotation-90)*16;
|
||||
|
||||
const int w = <a href="tqwidget.html#width">width</a>();
|
||||
const int h = <a href="tqwidget.html#height">height</a>();
|
||||
|
||||
const int xd = w - w/5;
|
||||
const int yd = h - h/5;
|
||||
|
||||
<a name="x2766"></a> pm.<a href="tqpixmap.html#resize">resize</a>(<a href="tqwidget.html#width">width</a>(),height());
|
||||
<a name="x2765"></a> pm.<a href="tqpixmap.html#fill">fill</a>(<a href="tqwidget.html#backgroundColor">backgroundColor</a>());
|
||||
<a href="tqpainter.html">TQPainter</a> p(&pm);
|
||||
<a name="x2763"></a> p.<a href="tqpainter.html#setFont">setFont</a>(<a href="tqwidget.html#font">font</a>());
|
||||
|
||||
p.<a href="tqpainter.html#setClipRect">setClipRect</a>(event->rect());
|
||||
|
||||
int i = 0;
|
||||
|
||||
for (rowdata = data.<a href="tqptrlist.html#first">first</a>();
|
||||
rowdata; rowdata = data.<a href="tqptrlist.html#next">next</a>())
|
||||
{
|
||||
<a href="tqcolor.html">TQColor</a> c;
|
||||
|
||||
c.<a href="tqcolor.html#setHsv">setHsv</a>( ( i * 255)/data.<a href="tqptrlist.html#count">count</a>(), 255, 255 );// rainbow effect
|
||||
p.<a href="tqpainter.html#setBrush">setBrush</a>( c ); // solid fill with color c
|
||||
|
||||
int a = int(( rowdata[0].dbl * 360.0 ) / total * 16.0 + 0.5);
|
||||
<a name="x2757"></a> p.<a href="tqpainter.html#drawPie">drawPie</a>( w/10, h/10, xd, yd, -apos, -a );
|
||||
apos += a;
|
||||
i++;
|
||||
}
|
||||
|
||||
if (model.colType(1) == GraphModel::Label) {
|
||||
double apos = (pieRotation-90)*M_PI/180;
|
||||
|
||||
for (rowdata = data.<a href="tqptrlist.html#first">first</a>();
|
||||
rowdata; rowdata = data.<a href="tqptrlist.html#next">next</a>())
|
||||
{
|
||||
double a = rowdata[0].dbl * 360 / total * M_PI / 180;
|
||||
int x = int(cos(apos+a/2)*w*5/16 + w/2 + 0.5);
|
||||
int y = int(sin(apos+a/2)*h*5/16 + h/2 + 0.5);
|
||||
|
||||
// ### This causes a crash, so comment out for now
|
||||
/*p.<a href="tqpainter.html#drawText">drawText</a>(x-w/8, y-h/8, w/4, h/4,
|
||||
WordBreak|AlignCenter,
|
||||
*rowdata[1].str);*/
|
||||
apos += a;
|
||||
}
|
||||
}
|
||||
|
||||
<a href="tqpainter.html">TQPainter</a> p2(this);
|
||||
p2.<a href="tqpainter.html#setClipRect">setClipRect</a>(event->rect());
|
||||
<a name="x2758"></a> p2.<a href="tqpainter.html#drawPixmap">drawPixmap</a>(0,0,pm);
|
||||
}
|
||||
|
||||
void <a name="f568"></a>Graph::paintWait(TQPaintEvent*)
|
||||
{
|
||||
<a href="tqpainter.html">TQPainter</a> p(this);
|
||||
p.<a href="tqpainter.html#drawText">drawText</a>(rect(), AlignCenter, "Loading...");
|
||||
}
|
||||
|
||||
void Graph::<a href="tqwidget.html#paintEvent">paintEvent</a>(TQPaintEvent* event)
|
||||
{
|
||||
if (!model.nCols()) {
|
||||
paintWait(event);
|
||||
} else {
|
||||
switch (style) {
|
||||
case Pie:
|
||||
paintPie(event);
|
||||
break;
|
||||
case Bar:
|
||||
paintBar(event);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void <a name="f569"></a>Graph::setStyleFromMenu(int id)
|
||||
{
|
||||
setStyle(Style(id-100));
|
||||
}
|
||||
|
||||
const char* Graph::styleName[] = { "Pie", "Bar", 0 };
|
||||
|
||||
|
||||
//
|
||||
// Grapher is a subclass of TQNPInstance, and so it can be returned
|
||||
// by GrapherPlugin::newInstance(). A TQNPInstance represents the
|
||||
// plugin, distinctly from the plugin window.
|
||||
//
|
||||
// Grapher is also a GraphModel, because it loads graph data from
|
||||
// the net. When Grapher creates a window in newWindow(), it creates
|
||||
// a Graph widget to display the GraphModel that is the Grapher itself.
|
||||
//
|
||||
|
||||
class Grapher : public <a href="tqnpinstance.html">TQNPInstance</a>, GraphModel {
|
||||
TQ_OBJECT
|
||||
public:
|
||||
// Create a Grapher - all Grapher plugins are created
|
||||
// by one GrapherPlugin object.
|
||||
//
|
||||
Grapher();
|
||||
~Grapher();
|
||||
|
||||
// We override this TQNPInstance function to create our
|
||||
// own subclass of TQNPWidget, a Graph widget.
|
||||
//
|
||||
<a href="tqnpwidget.html">TQNPWidget</a>* newWindow();
|
||||
|
||||
// We override this TQNPInstance function to process the
|
||||
// incoming graph data.
|
||||
//
|
||||
int write(TQNPStream* /*str*/, int /*offset*/, int len, void* buffer);
|
||||
|
||||
private:
|
||||
// Grapher is a GraphModel, so it implements the pure virtual
|
||||
// functions of that class.
|
||||
//
|
||||
<a href="tqptrlist.html">TQPtrList</a><Datum>& graphData();
|
||||
ColType colType(int col) const;
|
||||
int nCols() const;
|
||||
|
||||
void consumeLine();
|
||||
<a href="tqptrlist.html">TQPtrList</a><Datum> data;
|
||||
<a href="tqbuffer.html">TQBuffer</a> line;
|
||||
int ncols;
|
||||
ColType *coltype;
|
||||
|
||||
private slots:
|
||||
// Slots that are connected to the Graph menu items.
|
||||
//
|
||||
void aboutPlugin();
|
||||
void aboutData();
|
||||
};
|
||||
|
||||
<a name="f570"></a>Grapher::Grapher()
|
||||
{
|
||||
<a name="x2769"></a> data.<a href="tqptrcollection.html#setAutoDelete">setAutoDelete</a>(TRUE);
|
||||
ncols = 0;
|
||||
<a name="x2743"></a> line.<a href="tqiodevice.html#open">open</a>(IO_WriteOnly|IO_Truncate);
|
||||
}
|
||||
|
||||
Grapher::~Grapher()
|
||||
{
|
||||
}
|
||||
|
||||
TQPtrList<GraphModel::Datum>& <a name="f571"></a>Grapher::graphData()
|
||||
{
|
||||
return data;
|
||||
}
|
||||
|
||||
GraphModel::ColType <a name="f572"></a>Grapher::colType(int col) const
|
||||
{
|
||||
return coltype[col];
|
||||
}
|
||||
|
||||
int <a name="f573"></a>Grapher::nCols() const
|
||||
{
|
||||
return ncols;
|
||||
}
|
||||
|
||||
|
||||
<a name="x2751"></a>TQNPWidget* Grapher::<a href="tqnpinstance.html#newWindow">newWindow</a>()
|
||||
{
|
||||
// Create a Graph - our subclass of TQNPWidget.
|
||||
Graph *graph = new Graph(*this);
|
||||
|
||||
// Look at the arguments from the EMBED tag.
|
||||
// GRAPHSTYLE chooses pie or bar
|
||||
// FONTFAMILY and FONTSIZE choose the font
|
||||
//
|
||||
const char* style = <a href="tqnpinstance.html#arg">arg</a>("GRAPHSTYLE");
|
||||
if ( style ) graph-><a href="tqwidget.html#setStyle">setStyle</a>(style);
|
||||
|
||||
const char* fontfamily = <a href="tqnpinstance.html#arg">arg</a>("FONTFAMILY");
|
||||
const char* fontsize = <a href="tqnpinstance.html#arg">arg</a>("FONTSIZE");
|
||||
<a name="x2775"></a> int ptsize = fontsize ? atoi(fontsize) : graph-><a href="tqwidget.html#font">font</a>().pointSize();
|
||||
if (fontfamily) graph-><a href="tqwidget.html#setFont">setFont</a>(TQFont(fontfamily, ptsize));
|
||||
|
||||
<a href="tqobject.html#connect">connect</a>(graph, TQ_SIGNAL(aboutPlugin()), this, TQ_SLOT(aboutPlugin()));
|
||||
<a href="tqobject.html#connect">connect</a>(graph, TQ_SIGNAL(aboutData()), this, TQ_SLOT(aboutData()));
|
||||
|
||||
return graph;
|
||||
}
|
||||
|
||||
void <a name="f574"></a>Grapher::consumeLine()
|
||||
{
|
||||
<a name="x2742"></a> line.<a href="tqiodevice.html#close">close</a>();
|
||||
line.<a href="tqiodevice.html#open">open</a>(IO_ReadOnly);
|
||||
|
||||
<a href="tqtextstream.html">TQTextStream</a> ts( &line );
|
||||
|
||||
if (ncols == 0 ) {
|
||||
ncols=0;
|
||||
<a href="tqptrlist.html">TQPtrList</a><ColType> typelist;
|
||||
typelist.<a href="tqptrcollection.html#setAutoDelete">setAutoDelete</a>(TRUE);
|
||||
do {
|
||||
<a href="tqstring.html">TQString</a> typestr;
|
||||
ts >> typestr >> ws;
|
||||
ColType* t = 0;
|
||||
if ( typestr == "num" ) {
|
||||
t = new ColType(Numeric);
|
||||
} else if ( typestr == "label" ) {
|
||||
t = new ColType(Label);
|
||||
}
|
||||
<a name="x2770"></a> if (t) typelist.<a href="tqptrlist.html#append">append</a>(t);
|
||||
<a name="x2774"></a> } while (!ts.<a href="tqtextstream.html#atEnd">atEnd</a>());
|
||||
coltype = new ColType[ncols];
|
||||
for (ColType* t = typelist.<a href="tqptrlist.html#first">first</a>(); t; t = typelist.<a href="tqptrlist.html#next">next</a>()) {
|
||||
coltype[ncols++] = *t;
|
||||
}
|
||||
} else {
|
||||
int col=0;
|
||||
Datum *rowdata = new Datum[ncols];
|
||||
while ( col < ncols && !ts.<a href="tqtextstream.html#atEnd">atEnd</a>() ) {
|
||||
switch (coltype[col]) {
|
||||
case Numeric: {
|
||||
double value;
|
||||
ts >> value >> ws;
|
||||
rowdata[col].dbl = value;
|
||||
break;
|
||||
}
|
||||
case Label: {
|
||||
<a href="tqstring.html">TQString</a>* value = new <a href="tqstring.html">TQString</a>;
|
||||
ts >> *value >> ws;
|
||||
rowdata[col].str = value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
col++;
|
||||
}
|
||||
|
||||
data.<a href="tqptrlist.html#append">append</a>(rowdata);
|
||||
}
|
||||
|
||||
line.<a href="tqiodevice.html#close">close</a>();
|
||||
line.<a href="tqiodevice.html#open">open</a>(IO_WriteOnly|IO_Truncate);
|
||||
}
|
||||
|
||||
<a name="x2752"></a>int Grapher::<a href="tqnpinstance.html#write">write</a>(TQNPStream* /*str*/, int /*offset*/, int len, void* buffer)
|
||||
{
|
||||
// The browser calls this function when data is available on one
|
||||
// of the streams the plugin has requested. Since we are only
|
||||
// processing one stream - the URL in the SRC argument of the EMBED
|
||||
// tag, we assume the TQNPStream is that one. Also, since we do not
|
||||
// override TQNPInstance::writeReady(), we must accepts ALL the data
|
||||
// that is sent to this function.
|
||||
//
|
||||
char* txt = (char*)buffer;
|
||||
for (int i=0; i<len; i++) {
|
||||
char ch = txt[i];
|
||||
switch ( ch ) {
|
||||
case '\n':
|
||||
consumeLine();
|
||||
break;
|
||||
case '\r': // ignore;
|
||||
break;
|
||||
default:
|
||||
<a name="x2744"></a> line.<a href="tqiodevice.html#putch">putch</a>(ch);
|
||||
}
|
||||
}
|
||||
if ( <a href="tqnpinstance.html#widget">widget</a>() )
|
||||
<a href="tqnpinstance.html#widget">widget</a>()->update();
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
void <a name="f575"></a>Grapher::aboutPlugin()
|
||||
{
|
||||
<a href="tqnpinstance.html#getURL">getURL</a>( "http://doc.trolltech.com/netscape-plugin.html", "_blank" );
|
||||
}
|
||||
|
||||
void <a name="f576"></a>Grapher::aboutData()
|
||||
{
|
||||
const char* page = <a href="tqnpinstance.html#arg">arg</a>("DATAPAGE");
|
||||
if (page)
|
||||
<a href="tqnpinstance.html#getURL">getURL</a>( page, "_blank" );
|
||||
else
|
||||
<a name="x2750"></a> TQMessageBox::<a href="tqmessagebox.html#message">message</a>("Help", "No help for this data");
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// GrapherPlugin is the start of everything. It is a TQNPlugin subclass,
|
||||
// and it is responsible for describing the plugin to the browser, and
|
||||
// creating instances of the plugin when it appears in web page.
|
||||
//
|
||||
|
||||
class GrapherPlugin : public <a href="tqnplugin.html">TQNPlugin</a> {
|
||||
public:
|
||||
GrapherPlugin()
|
||||
{
|
||||
}
|
||||
|
||||
<a href="tqnpinstance.html">TQNPInstance</a>* newInstance()
|
||||
{
|
||||
// Make a new Grapher, our subclass of TQNPInstance.
|
||||
return new Grapher;
|
||||
}
|
||||
|
||||
const char* getMIMEDescription() const
|
||||
{
|
||||
// Describe the MIME types which this plugin can
|
||||
// process. Just the concocted "application/x-graphable"
|
||||
// type, with the "g1n" filename extension.
|
||||
//
|
||||
return "application/x-graphable:g1n:Graphable ASCII numeric data";
|
||||
}
|
||||
|
||||
const char * getPluginNameString() const
|
||||
{
|
||||
// The name of the plugin. This is the title string used in
|
||||
// the "About Plugins" page of the browser.
|
||||
//
|
||||
return "TQt-based Graph Plugin";
|
||||
}
|
||||
|
||||
const char * getPluginDescriptionString() const
|
||||
{
|
||||
// A longer description of the plugin.
|
||||
//
|
||||
return "A TQt-based LiveConnected plug-in that graphs numeric data";
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
//
|
||||
// Finally, we provide the implementation of TQNPlugin::create(), to
|
||||
// provide our subclass of TQNPlugin.
|
||||
//
|
||||
|
||||
TQNPlugin* TQNPlugin::create()
|
||||
{
|
||||
return new GrapherPlugin;
|
||||
}
|
||||
|
||||
#include "grapher.moc"
|
||||
</pre>
|
||||
|
||||
<p>See also <a href="nsplugin-examples.html">Netscape Plugin Examples</a>.
|
||||
|
||||
<!-- eof -->
|
||||
<p><address><hr><div align=center>
|
||||
<table width=100% cellspacing=0 border=0><tr>
|
||||
<td>Copyright © 2007
|
||||
<a href="troll.html">Trolltech</a><td align=center><a href="trademarks.html">Trademarks</a>
|
||||
<td align=right><div align=right>TQt 3.3.8</div>
|
||||
</table></div></address></body>
|
||||
</html>
|
@ -1,129 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!-- /home/espenr/tmp/qt-3.3.8-espenr-2499/qt-x11-free-3.3.8/extensions/nsplugin/doc/index.doc:14 -->
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>TQt Netscape Plugin Extension</title>
|
||||
<style type="text/css"><!--
|
||||
fn { margin-left: 1cm; text-indent: -1cm; }
|
||||
a:link { color: #004faf; text-decoration: none }
|
||||
a:visited { color: #672967; text-decoration: none }
|
||||
body { background: #ffffff; color: black; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr bgcolor="#E5E5E5">
|
||||
<td valign=center>
|
||||
<a href="index.html">
|
||||
<font color="#004faf">Home</font></a>
|
||||
| <a href="classes.html">
|
||||
<font color="#004faf">All Classes</font></a>
|
||||
| <a href="mainclasses.html">
|
||||
<font color="#004faf">Main Classes</font></a>
|
||||
| <a href="annotated.html">
|
||||
<font color="#004faf">Annotated</font></a>
|
||||
| <a href="groups.html">
|
||||
<font color="#004faf">Grouped Classes</font></a>
|
||||
| <a href="functions.html">
|
||||
<font color="#004faf">Functions</font></a>
|
||||
</td>
|
||||
<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table><h1 align=center>TQt Netscape Plugin Extension</h1>
|
||||
|
||||
|
||||
<p> <!-- index Netscape --><a name="Netscape"></a>
|
||||
<p> The TQt Netscape Plugin software makes it easy to write browser plugins
|
||||
that can be used on both Unix/Linux and MS-Windows, in Netscape,
|
||||
Mozilla, and any other web browser supporting Netscape's LiveConnect
|
||||
protocol. Modern versions of MSIE do not support this protocol.
|
||||
|
||||
<p> <h2> Information
|
||||
</h2>
|
||||
<a name="1"></a><p> The Netscape Plugin Extension consists of the follow classes:
|
||||
<ul>
|
||||
<li> <a href="tqnplugin.html">TQNPlugin</a>
|
||||
<li> <a href="tqnpinstance.html">TQNPInstance</a>
|
||||
<li> <a href="tqnpwidget.html">TQNPWidget</a>
|
||||
<li> <a href="tqnpstream.html">TQNPStream</a>
|
||||
</ul>
|
||||
<p> <h2> How-to
|
||||
</h2>
|
||||
<a name="2"></a><p> <ol type=1>
|
||||
<li> Download the
|
||||
<a href="http://home.netscape.com/comprod/development_partners/plugin_api/index.html">Plugin SDK from Netscape</a>, and copy the following files from there to
|
||||
<tt>$TQTDIR/extensions/nsplugin/src</tt>
|
||||
<ul>
|
||||
<li> <tt>common/npwin.cpp</tt>
|
||||
<li> <tt>common/npunix.c</tt>
|
||||
<li> <tt>include/npapi.h</tt>
|
||||
<li> <tt>include/npupp.h</tt>
|
||||
<li> <tt>include/jri.h</tt>
|
||||
<li> <tt>include/jri_md.h</tt>
|
||||
<li> <tt>include/jritypes.h</tt>
|
||||
</ul>
|
||||
<li> Build the Netscape Plugin extension library, found in the
|
||||
<tt>extensions/nsplugin/src</tt> directory of your TQt distribution.
|
||||
This produces a static library to be linked with your plugin code.
|
||||
<li> Read the <a href="tqnplugin.html">plugin class documentation</a>, and
|
||||
examine the <a href="nsplugin-examples.html">example plugins</a>.
|
||||
<li> Do most of your development as a stand-alone TQt application - debugging
|
||||
Netscape Plugins is cumbersome. You may want to use <tt>signal(2)</tt>
|
||||
in your plugin to enable core-dumps if your browser disables them.
|
||||
<li> Note the platform-specific build steps below.
|
||||
<li> Read about the raw plugin interface
|
||||
<a href="http://developer.netscape.com/docs/manuals/communicator/plugin/index.htm">in Netscape's handbook.</a>
|
||||
<li> If files viewed by a plugin are provided by an HTTP server
|
||||
(using a <a href="http://...">http://...</a> URL) then
|
||||
the server must be configured to send the correct MIME type
|
||||
for the file, e.g. by editing Apache's <tt>mime.types</tt> file.
|
||||
If the files are viewed via a <a href="file://...">//...</a>
|
||||
URL, then the browser will use the filename extension to decide
|
||||
the file type (and hence the plugin to load) - the user may need
|
||||
to set the filename extension in the Helpers or Applications
|
||||
section of their browser preferences.
|
||||
</ol>
|
||||
<p> <h3> Building under X11
|
||||
</h3>
|
||||
<a name="2-1"></a><p> <ul>
|
||||
<li> The Makefiles in the examples are appropriate for UNIX/X11.
|
||||
<li> The user must install the resulting Shared Object in the Plugins
|
||||
directory of the browser.
|
||||
</ul>
|
||||
<p> <h3> Building under Windows
|
||||
</h3>
|
||||
<a name="2-2"></a><p> <ul>
|
||||
<li> For Netscape plugins to work, TQt needs to be in the system DLL
|
||||
path or be compiled into the plugin as a static library.
|
||||
<li> Plugins must be named <tt>np</tt><em>name</em><tt>.dll</tt>,
|
||||
or the browser will ignore them.
|
||||
<li> The link step must include:
|
||||
<ul>
|
||||
<li> <tt>/def:</tt><em>name</em><tt>.def</tt>
|
||||
<li> <tt>/dll</tt>
|
||||
<li> a compiled resource file defining the
|
||||
file/MIME types accepted by the plugin.
|
||||
</ul>
|
||||
<li> The user must install the resulting DLL in the Plugins directory
|
||||
of the browser.
|
||||
</ul>
|
||||
<p> <h2> Known Bugs and Limitations
|
||||
</h2>
|
||||
<a name="3"></a><p> The TQt-based LiveConnect Plugin binding code has a number of bugs and
|
||||
limitations, but is sufficiently stable for many production
|
||||
applications.
|
||||
<p> <ul>
|
||||
<li> Keyboard input only works in secondary windows (e.g. dialogs created by the plugin).
|
||||
<li> You should not expect modality between the plugin and the browser to work.
|
||||
<li> Netscape 4.78 on Unix/X11 tends to terminate with a bus error.
|
||||
<li> Opaque resize behaviour is erratic due to browser behavior.
|
||||
</ul>
|
||||
<p>
|
||||
<!-- eof -->
|
||||
<p><address><hr><div align=center>
|
||||
<table width=100% cellspacing=0 border=0><tr>
|
||||
<td>Copyright © 2007
|
||||
<a href="troll.html">Trolltech</a><td align=center><a href="trademarks.html">Trademarks</a>
|
||||
<td align=right><div align=right>TQt 3.3.8</div>
|
||||
</table></div></address></body>
|
||||
</html>
|
@ -1,51 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!-- /home/espenr/tmp/qt-3.3.8-espenr-2499/qt-x11-free-3.3.8/doc/indices.doc:460 -->
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>Netscape Plugin Examples</title>
|
||||
<style type="text/css"><!--
|
||||
fn { margin-left: 1cm; text-indent: -1cm; }
|
||||
a:link { color: #004faf; text-decoration: none }
|
||||
a:visited { color: #672967; text-decoration: none }
|
||||
body { background: #ffffff; color: black; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr bgcolor="#E5E5E5">
|
||||
<td valign=center>
|
||||
<a href="index.html">
|
||||
<font color="#004faf">Home</font></a>
|
||||
| <a href="classes.html">
|
||||
<font color="#004faf">All Classes</font></a>
|
||||
| <a href="mainclasses.html">
|
||||
<font color="#004faf">Main Classes</font></a>
|
||||
| <a href="annotated.html">
|
||||
<font color="#004faf">Annotated</font></a>
|
||||
| <a href="groups.html">
|
||||
<font color="#004faf">Grouped Classes</font></a>
|
||||
| <a href="functions.html">
|
||||
<font color="#004faf">Functions</font></a>
|
||||
</td>
|
||||
<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table><h1 align=center>Netscape Plugin Examples</h1>
|
||||
|
||||
|
||||
<p> The following example programs show how to write plugins
|
||||
that can be used with web browsers supporting the LiveConnect
|
||||
protocol.
|
||||
<p> For more information see the <a href="netscape-plugin.html">Plugin Howto</a>.
|
||||
|
||||
<p><table width="100%">
|
||||
<tr bgcolor=#f0f0f0><td><b><a href="grapher-nsplugin-example.html">Grapher Plugin</a></b>
|
||||
<tr bgcolor=#f0f0f0><td><b><a href="trivial-nsplugin-example.html">Trivial Example</a></b>
|
||||
</table>
|
||||
<!-- eof -->
|
||||
<p><address><hr><div align=center>
|
||||
<table width=100% cellspacing=0 border=0><tr>
|
||||
<td>Copyright © 2007
|
||||
<a href="troll.html">Trolltech</a><td align=center><a href="trademarks.html">Trademarks</a>
|
||||
<td align=right><div align=right>TQt 3.3.8</div>
|
||||
</table></div></address></body>
|
||||
</html>
|
@ -1,231 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!-- /home/espenr/tmp/qt-3.3.8-espenr-2499/qt-x11-free-3.3.8/include/tqnp.h:1 -->
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>tqnp.h Include File</title>
|
||||
<style type="text/css"><!--
|
||||
fn { margin-left: 1cm; text-indent: -1cm; }
|
||||
a:link { color: #004faf; text-decoration: none }
|
||||
a:visited { color: #672967; text-decoration: none }
|
||||
body { background: #ffffff; color: black; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr bgcolor="#E5E5E5">
|
||||
<td valign=center>
|
||||
<a href="index.html">
|
||||
<font color="#004faf">Home</font></a>
|
||||
| <a href="classes.html">
|
||||
<font color="#004faf">All Classes</font></a>
|
||||
| <a href="mainclasses.html">
|
||||
<font color="#004faf">Main Classes</font></a>
|
||||
| <a href="annotated.html">
|
||||
<font color="#004faf">Annotated</font></a>
|
||||
| <a href="groups.html">
|
||||
<font color="#004faf">Grouped Classes</font></a>
|
||||
| <a href="functions.html">
|
||||
<font color="#004faf">Functions</font></a>
|
||||
</td>
|
||||
<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table><h1 align=center>tqnp.h</h1>
|
||||
|
||||
<p>This is the verbatim text of the tqnp.h include file. It is provided only for illustration; the copyright remains with Trolltech.
|
||||
<hr>
|
||||
<pre>
|
||||
/****************************************************************************
|
||||
** $Id: qt/tqnp.h 3.3.8 edited Jan 11 14:37 $
|
||||
**
|
||||
** Definition of TQt extension classes for Netscape Plugin support.
|
||||
**
|
||||
** Created : 970601
|
||||
**
|
||||
** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.
|
||||
**
|
||||
** This file is part of the TQt GUI Toolkit.
|
||||
**
|
||||
** This file may be used under the terms of the GNU General Public
|
||||
** License versions 2.0 or 3.0 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||
** packaging of this file. Alternatively you may (at your option) use any
|
||||
** later version of the GNU General Public License if such license has
|
||||
** been publicly approved by Trolltech ASA (or its successors, if any)
|
||||
** and the KDE Free TQt Foundation.
|
||||
**
|
||||
** Please review the following information to ensure GNU General
|
||||
** Public Licensing requirements will be met:
|
||||
** http://trolltech.com/products/qt/licenses/licensing/opensource/.
|
||||
** If you are unsure which license is appropriate for your use, please
|
||||
** review the following information:
|
||||
** http://trolltech.com/products/qt/licenses/licensing/licensingoverview
|
||||
** or contact the sales department at sales@trolltech.com.
|
||||
**
|
||||
** This file may be used under the terms of the Q Public License as
|
||||
** defined by Trolltech ASA and appearing in the file LICENSE.TQPL
|
||||
** included in the packaging of this file. Licensees holding valid TQt
|
||||
** Commercial licenses may use this file in accordance with the TQt
|
||||
** Commercial License Agreement provided with the Software.
|
||||
**
|
||||
** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
|
||||
** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
|
||||
** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted
|
||||
** herein.
|
||||
**
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef TQNP_H
|
||||
#define TQNP_H
|
||||
|
||||
#ifndef QT_H
|
||||
#include "tqwidget.h"
|
||||
#endif // QT_H
|
||||
|
||||
|
||||
struct _NPInstance;
|
||||
struct _NPStream;
|
||||
class TQNPInstance;
|
||||
|
||||
class TQNPStream {
|
||||
public:
|
||||
~TQNPStream();
|
||||
|
||||
const char* url() const;
|
||||
uint end() const;
|
||||
uint lastModified() const;
|
||||
|
||||
const char* type() const;
|
||||
bool seekable() const;
|
||||
bool okay() const;
|
||||
bool complete() const;
|
||||
|
||||
void requestRead(int offset, uint length);
|
||||
int write( int len, void* buffer );
|
||||
|
||||
TQNPInstance* instance() { return inst; }
|
||||
TQNPStream(TQNPInstance*,const char*,_NPStream*,bool);
|
||||
void setOkay(bool);
|
||||
void setComplete(bool);
|
||||
|
||||
private:
|
||||
TQNPInstance* inst;
|
||||
_NPStream* stream;
|
||||
TQString mtype;
|
||||
int seek:1;
|
||||
int isokay:1;
|
||||
int iscomplete:1;
|
||||
};
|
||||
|
||||
class TQNPWidget : public TQWidget {
|
||||
TQ_OBJECT
|
||||
public:
|
||||
TQNPWidget();
|
||||
~TQNPWidget();
|
||||
void enterEvent(TQEvent*);
|
||||
void leaveEvent(TQEvent*);
|
||||
|
||||
virtual void enterInstance();
|
||||
virtual void leaveInstance();
|
||||
|
||||
TQNPInstance* instance();
|
||||
|
||||
private:
|
||||
_NPInstance* pi;
|
||||
};
|
||||
|
||||
class TQNPInstance : public TQObject {
|
||||
TQ_OBJECT
|
||||
public:
|
||||
~TQNPInstance();
|
||||
|
||||
// Arguments passed to EMBED
|
||||
int argc() const;
|
||||
const char* argn(int) const;
|
||||
const char* argv(int) const;
|
||||
enum Reason {
|
||||
ReasonDone = 0,
|
||||
ReasonBreak = 1,
|
||||
ReasonError = 2,
|
||||
ReasonUnknown = -1
|
||||
};
|
||||
const char* arg(const char* name) const;
|
||||
enum InstanceMode { Embed=1, Full=2, Background=3 };
|
||||
InstanceMode mode() const;
|
||||
|
||||
// The browser's name
|
||||
const char* userAgent() const;
|
||||
|
||||
// Your window.
|
||||
virtual TQNPWidget* newWindow();
|
||||
TQNPWidget* widget();
|
||||
|
||||
// Incoming streams (SRC=... tag).
|
||||
// Defaults ignore data.
|
||||
enum StreamMode { Normal=1, Seek=2, AsFile=3, AsFileOnly=4 };
|
||||
virtual bool newStreamCreated(TQNPStream*, StreamMode& smode);
|
||||
virtual int writeReady(TQNPStream*);
|
||||
virtual int write(TQNPStream*, int offset, int len, void* buffer);
|
||||
virtual void streamDestroyed(TQNPStream*);
|
||||
|
||||
void status(const char* msg);
|
||||
void getURLNotify(const char* url, const char* window=0, void*data=0);
|
||||
|
||||
void getURL(const char* url, const char* window=0);
|
||||
void postURL(const char* url, const char* window,
|
||||
uint len, const char* buf, bool file);
|
||||
|
||||
TQNPStream* newStream(const char* mimetype, const char* window,
|
||||
bool as_file=FALSE);
|
||||
virtual void streamAsFile(TQNPStream*, const char* fname);
|
||||
|
||||
void* getJavaPeer() const;
|
||||
|
||||
virtual void notifyURL(const char* url, Reason r, void* notifyData);
|
||||
virtual bool printFullPage();
|
||||
virtual void print(TQPainter*);
|
||||
|
||||
protected:
|
||||
TQNPInstance();
|
||||
|
||||
private:
|
||||
friend class TQNPStream;
|
||||
_NPInstance* pi;
|
||||
};
|
||||
|
||||
|
||||
class TQNPlugin {
|
||||
public:
|
||||
// Write this to return your TQNPlugin derived class.
|
||||
static TQNPlugin* create();
|
||||
|
||||
static TQNPlugin* actual();
|
||||
|
||||
virtual ~TQNPlugin();
|
||||
|
||||
void getVersionInfo(int& plugin_major, int& plugin_minor,
|
||||
int& browser_major, int& browser_minor);
|
||||
|
||||
virtual TQNPInstance* newInstance()=0;
|
||||
virtual const char* getMIMEDescription() const=0;
|
||||
virtual const char* getPluginNameString() const=0;
|
||||
virtual const char* getPluginDescriptionString() const=0;
|
||||
|
||||
virtual void* getJavaClass();
|
||||
virtual void unuseJavaClass();
|
||||
void* getJavaEnv() const;
|
||||
|
||||
protected:
|
||||
TQNPlugin();
|
||||
};
|
||||
|
||||
|
||||
#endif // TQNP_H
|
||||
</pre>
|
||||
<!-- eof -->
|
||||
<p><address><hr><div align=center>
|
||||
<table width=100% cellspacing=0 border=0><tr>
|
||||
<td>Copyright © 2007
|
||||
<a href="troll.html">Trolltech</a><td align=center><a href="trademarks.html">Trademarks</a>
|
||||
<td align=right><div align=right>TQt 3.3.8</div>
|
||||
</table></div></address></body>
|
||||
</html>
|
@ -1,112 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!-- /home/espenr/tmp/qt-3.3.8-espenr-2499/qt-x11-free-3.3.8/include/tqnp.h:97 -->
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>TQNPInstance Member List</title>
|
||||
<style type="text/css"><!--
|
||||
fn { margin-left: 1cm; text-indent: -1cm; }
|
||||
a:link { color: #004faf; text-decoration: none }
|
||||
a:visited { color: #672967; text-decoration: none }
|
||||
body { background: #ffffff; color: black; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr bgcolor="#E5E5E5">
|
||||
<td valign=center>
|
||||
<a href="index.html">
|
||||
<font color="#004faf">Home</font></a>
|
||||
| <a href="classes.html">
|
||||
<font color="#004faf">All Classes</font></a>
|
||||
| <a href="mainclasses.html">
|
||||
<font color="#004faf">Main Classes</font></a>
|
||||
| <a href="annotated.html">
|
||||
<font color="#004faf">Annotated</font></a>
|
||||
| <a href="groups.html">
|
||||
<font color="#004faf">Grouped Classes</font></a>
|
||||
| <a href="functions.html">
|
||||
<font color="#004faf">Functions</font></a>
|
||||
</td>
|
||||
<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table><h1 align=center>Complete Member List for TQNPInstance</h1>
|
||||
|
||||
<p>This is the complete list of member functions for
|
||||
<a href="tqnpinstance.html">TQNPInstance</a>, including inherited members.
|
||||
|
||||
<ul>
|
||||
<li><a href="tqnpinstance.html#TQNPInstance">TQNPInstance</a>()
|
||||
<li><a href="tqnpinstance.html#~TQNPInstance">~TQNPInstance</a>()
|
||||
<li><a href="tqnpinstance.html#arg">arg</a>()
|
||||
<li><a href="tqnpinstance.html#argc">argc</a>()
|
||||
<li><a href="tqnpinstance.html#argn">argn</a>()
|
||||
<li><a href="tqnpinstance.html#argv">argv</a>()
|
||||
<li><a href="tqobject.html#blockSignals">blockSignals</a>()
|
||||
<li><a href="tqobject.html#checkConnectArgs">checkConnectArgs</a>()
|
||||
<li><a href="tqobject.html#child">child</a>()
|
||||
<li><a href="tqobject.html#childEvent">childEvent</a>()
|
||||
<li><a href="tqobject.html#children">children</a>()
|
||||
<li><a href="tqobject.html#className">className</a>()
|
||||
<li><a href="tqobject.html#connect">connect</a>()
|
||||
<li><a href="tqobject.html#connectNotify">connectNotify</a>()
|
||||
<li><a href="tqobject.html#customEvent">customEvent</a>()
|
||||
<li><a href="tqobject.html#deleteLater">deleteLater</a>()
|
||||
<li><a href="tqobject.html#destroyed">destroyed</a>()
|
||||
<li><a href="tqobject.html#disconnect">disconnect</a>()
|
||||
<li><a href="tqobject.html#disconnectNotify">disconnectNotify</a>()
|
||||
<li><a href="tqobject.html#dumpObjectInfo">dumpObjectInfo</a>()
|
||||
<li><a href="tqobject.html#dumpObjectTree">dumpObjectTree</a>()
|
||||
<li><a href="tqobject.html#event">event</a>()
|
||||
<li><a href="tqobject.html#eventFilter">eventFilter</a>()
|
||||
<li><a href="tqnpinstance.html#getJavaPeer">getJavaPeer</a>()
|
||||
<li><a href="tqnpinstance.html#getURL">getURL</a>()
|
||||
<li><a href="tqnpinstance.html#getURLNotify">getURLNotify</a>()
|
||||
<li><a href="tqobject.html#highPriority">highPriority</a>()
|
||||
<li><a href="tqobject.html#inherits">inherits</a>()
|
||||
<li><a href="tqobject.html#insertChild">insertChild</a>()
|
||||
<li><a href="tqobject.html#installEventFilter">installEventFilter</a>()
|
||||
<li><a href="tqobject.html#isA">isA</a>()
|
||||
<li><a href="tqobject.html#isWidgetType">isWidgetType</a>()
|
||||
<li><a href="tqobject.html#killTimer">killTimer</a>()
|
||||
<li><a href="tqobject.html#killTimers">killTimers</a>()
|
||||
<li><a href="tqobject.html#metaObject">metaObject</a>()
|
||||
<li><a href="tqnpinstance.html#mode">mode</a>()
|
||||
<li><a href="tqobject.html#name">name</a>()
|
||||
<li><a href="tqnpinstance.html#newStream">newStream</a>()
|
||||
<li><a href="tqnpinstance.html#newStreamCreated">newStreamCreated</a>()
|
||||
<li><a href="tqnpinstance.html#newWindow">newWindow</a>()
|
||||
<li><a href="tqobject.html#normalizeSignalSlot">normalizeSignalSlot</a>()
|
||||
<li><a href="tqnpinstance.html#notifyURL">notifyURL</a>()
|
||||
<li><a href="tqobject.html#objectTrees">objectTrees</a>()
|
||||
<li><a href="tqobject.html#parent">parent</a>()
|
||||
<li><a href="tqnpinstance.html#postURL">postURL</a>()
|
||||
<li><a href="tqnpinstance.html#print">print</a>()
|
||||
<li><a href="tqnpinstance.html#printFullPage">printFullPage</a>()
|
||||
<li><a href="tqobject.html#property">property</a>()
|
||||
<li><a href="tqobject.html#queryList">queryList</a>()
|
||||
<li><a href="tqobject.html#removeChild">removeChild</a>()
|
||||
<li><a href="tqobject.html#removeEventFilter">removeEventFilter</a>()
|
||||
<li><a href="tqobject.html#sender">sender</a>()
|
||||
<li><a href="tqobject.html#setName">setName</a>()
|
||||
<li><a href="tqobject.html#setProperty">setProperty</a>()
|
||||
<li><a href="tqobject.html#signalsBlocked">signalsBlocked</a>()
|
||||
<li><a href="tqobject.html#startTimer">startTimer</a>()
|
||||
<li><a href="tqnpinstance.html#status">status</a>()
|
||||
<li><a href="tqnpinstance.html#streamAsFile">streamAsFile</a>()
|
||||
<li><a href="tqnpinstance.html#streamDestroyed">streamDestroyed</a>()
|
||||
<li><a href="tqobject.html#timerEvent">timerEvent</a>()
|
||||
<li><a href="tqobject.html#tr">tr</a>()
|
||||
<li><a href="tqobject.html#trUtf8">trUtf8</a>()
|
||||
<li><a href="tqnpinstance.html#userAgent">userAgent</a>()
|
||||
<li><a href="tqnpinstance.html#widget">widget</a>()
|
||||
<li><a href="tqnpinstance.html#write">write</a>()
|
||||
<li><a href="tqnpinstance.html#writeReady">writeReady</a>()
|
||||
</ul>
|
||||
<!-- eof -->
|
||||
<p><address><hr><div align=center>
|
||||
<table width=100% cellspacing=0 border=0><tr>
|
||||
<td>Copyright © 2007
|
||||
<a href="troll.html">Trolltech</a><td align=center><a href="trademarks.html">Trademarks</a>
|
||||
<td align=right><div align=right>TQt 3.3.8</div>
|
||||
</table></div></address></body>
|
||||
</html>
|
@ -1,320 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>TQNPInstance Class</title>
|
||||
<style type="text/css"><!--
|
||||
fn { margin-left: 1cm; text-indent: -1cm; }
|
||||
a:link { color: #004faf; text-decoration: none }
|
||||
a:visited { color: #672967; text-decoration: none }
|
||||
body { background: #ffffff; color: black; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr bgcolor="#E5E5E5">
|
||||
<td valign=center>
|
||||
<a href="index.html">
|
||||
<font color="#004faf">Home</font></a>
|
||||
| <a href="classes.html">
|
||||
<font color="#004faf">All Classes</font></a>
|
||||
| <a href="mainclasses.html">
|
||||
<font color="#004faf">Main Classes</font></a>
|
||||
| <a href="annotated.html">
|
||||
<font color="#004faf">Annotated</font></a>
|
||||
| <a href="groups.html">
|
||||
<font color="#004faf">Grouped Classes</font></a>
|
||||
| <a href="functions.html">
|
||||
<font color="#004faf">Functions</font></a>
|
||||
</td>
|
||||
<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table><h1 align=center>TQNPInstance Class Reference</h1>
|
||||
|
||||
<p>The TQNPInstance class provides a TQObject that is a web browser plugin.
|
||||
<a href="#details">More...</a>
|
||||
<p>This class is part of the <b>TQt Netscape Extension</b>.
|
||||
<p><tt>#include <<a href="tqnp-h.html">tqnp.h</a>></tt>
|
||||
<p>Inherits <a href="tqobject.html">TQObject</a>.
|
||||
<p><a href="tqnpinstance-members.html">List of all member functions.</a>
|
||||
<h2>Public Members</h2>
|
||||
<ul>
|
||||
<li class=fn><a href="#~TQNPInstance"><b>~TQNPInstance</b></a> ()</li>
|
||||
<li class=fn>int <a href="#argc"><b>argc</b></a> () const</li>
|
||||
<li class=fn>const char * <a href="#argn"><b>argn</b></a> ( int i ) const</li>
|
||||
<li class=fn>const char * <a href="#argv"><b>argv</b></a> ( int i ) const</li>
|
||||
<li class=fn>enum <a href="#Reason-enum"><b>Reason</b></a> { ReasonDone = 0, ReasonBreak = 1, ReasonError = 2, ReasonUnknown = -1 }</li>
|
||||
<li class=fn>const char * <a href="#arg"><b>arg</b></a> ( const char * name ) const</li>
|
||||
<li class=fn>enum <a href="#InstanceMode-enum"><b>InstanceMode</b></a> { Embed = 1, Full = 2, Background = 3 }</li>
|
||||
<li class=fn>InstanceMode <a href="#mode"><b>mode</b></a> () const</li>
|
||||
<li class=fn>const char * <a href="#userAgent"><b>userAgent</b></a> () const</li>
|
||||
<li class=fn>virtual TQNPWidget * <a href="#newWindow"><b>newWindow</b></a> ()</li>
|
||||
<li class=fn>TQNPWidget * <a href="#widget"><b>widget</b></a> ()</li>
|
||||
<li class=fn>enum <a href="#StreamMode-enum"><b>StreamMode</b></a> { Normal = 1, Seek = 2, AsFile = 3, AsFileOnly = 4 }</li>
|
||||
<li class=fn>virtual bool <a href="#newStreamCreated"><b>newStreamCreated</b></a> ( TQNPStream *, StreamMode & smode )</li>
|
||||
<li class=fn>virtual int <a href="#writeReady"><b>writeReady</b></a> ( TQNPStream * )</li>
|
||||
<li class=fn>virtual int <a href="#write"><b>write</b></a> ( TQNPStream *, int offset, int len, void * buffer )</li>
|
||||
<li class=fn>virtual void <a href="#streamDestroyed"><b>streamDestroyed</b></a> ( TQNPStream * )</li>
|
||||
<li class=fn>void <a href="#status"><b>status</b></a> ( const char * msg )</li>
|
||||
<li class=fn>void <a href="#getURLNotify"><b>getURLNotify</b></a> ( const char * url, const char * window = 0, void * data = 0 )</li>
|
||||
<li class=fn>void <a href="#getURL"><b>getURL</b></a> ( const char * url, const char * window = 0 )</li>
|
||||
<li class=fn>void <a href="#postURL"><b>postURL</b></a> ( const char * url, const char * window, uint len, const char * buf, bool file )</li>
|
||||
<li class=fn>TQNPStream * <a href="#newStream"><b>newStream</b></a> ( const char * mimetype, const char * window, bool as_file = FALSE )</li>
|
||||
<li class=fn>virtual void <a href="#streamAsFile"><b>streamAsFile</b></a> ( TQNPStream *, const char * fname )</li>
|
||||
<li class=fn>void * <a href="#getJavaPeer"><b>getJavaPeer</b></a> () const</li>
|
||||
<li class=fn>virtual void <a href="#notifyURL"><b>notifyURL</b></a> ( const char * url, Reason r, void * notifyData )</li>
|
||||
<li class=fn>virtual bool <a href="#printFullPage"><b>printFullPage</b></a> ()</li>
|
||||
<li class=fn>virtual void <a href="#print"><b>print</b></a> ( TQPainter * )</li>
|
||||
</ul>
|
||||
<h2>Protected Members</h2>
|
||||
<ul>
|
||||
<li class=fn><a href="#TQNPInstance"><b>TQNPInstance</b></a> ()</li>
|
||||
</ul>
|
||||
<hr><a name="details"></a><h2>Detailed Description</h2>
|
||||
<p> This class is defined in the <b>TQt <a href="netscape-plugin.html#Netscape">Netscape</a> Extension</b>, which can be found in the <tt>qt/extensions</tt> directory. It is not included in the main TQt API.
|
||||
<p>
|
||||
|
||||
The TQNPInstance class provides a <a href="tqobject.html">TQObject</a> that is a web browser plugin.
|
||||
<p>
|
||||
<p> Deriving from TQNPInstance creates an object that represents a
|
||||
single <tt><EMBED></tt> tag in an HTML document.
|
||||
<p> The TQNPInstance is responsible for creating an appropriate
|
||||
<a href="tqnpwidget.html">TQNPWidget</a> window if required (not all plugins have windows), and
|
||||
for interacting with the input/output facilities intrinsic to
|
||||
plugins.
|
||||
<p> Note that there is <em>absolutely no guarantee</em> regarding the order
|
||||
in which functions are called. Sometimes the browser will call
|
||||
<a href="#newWindow">newWindow</a>() first, at other times, <a href="#newStreamCreated">newStreamCreated</a>() will be
|
||||
called first (assuming the <tt><EMBED></tt> tag has a SRC parameter).
|
||||
<p> <em>None of TQt's GUI functionality</em> may be used until after the
|
||||
first call to newWindow(). This includes any use of <a href="tqpaintdevice.html">TQPaintDevice</a>
|
||||
(i.e. <a href="tqpixmap.html">TQPixmap</a>, <a href="tqwidget.html">TQWidget</a>, and all subclasses), <a href="ntqapplication.html">TQApplication</a>, anything
|
||||
related to <a href="tqpainter.html">TQPainter</a> (<a href="tqbrush.html">TQBrush</a>, etc.), fonts, <a href="tqmovie.html">TQMovie</a>, <a href="tqtooltip.html">TQToolTip</a>, etc.
|
||||
Useful classes which specifically <em>can</em> be used are <a href="tqimage.html">TQImage</a>,
|
||||
<a href="tqfile.html">TQFile</a>, and <a href="tqbuffer.html">TQBuffer</a>.
|
||||
<p> This restriction can easily be accommodated by structuring your
|
||||
plugin so that the task of the TQNPInstance is to gather data,
|
||||
while the task of the <a href="tqnpwidget.html">TQNPWidget</a> is to provide a graphical
|
||||
interface to that data.
|
||||
|
||||
<hr><h2>Member Type Documentation</h2>
|
||||
<h3 class=fn><a name="InstanceMode-enum"></a>TQNPInstance::InstanceMode</h3>
|
||||
|
||||
<p> This enum type provides TQt-style names for three #defines in
|
||||
<tt>npapi.h</tt>:
|
||||
<ul>
|
||||
<li><tt>TQNPInstance::Embed</tt> - corresponds to NP_EMBED
|
||||
<li><tt>TQNPInstance::Full</tt> - corresponds to NP_FULL
|
||||
<li><tt>TQNPInstance::Background</tt> - corresponds to NP_BACKGROUND
|
||||
</ul><p>
|
||||
<h3 class=fn><a name="Reason-enum"></a>TQNPInstance::Reason</h3>
|
||||
|
||||
<ul>
|
||||
<li><tt>TQNPInstance::ReasonDone</tt>
|
||||
<li><tt>TQNPInstance::ReasonBreak</tt>
|
||||
<li><tt>TQNPInstance::ReasonError</tt>
|
||||
<li><tt>TQNPInstance::ReasonUnknown</tt>
|
||||
</ul>
|
||||
<h3 class=fn><a name="StreamMode-enum"></a>TQNPInstance::StreamMode</h3>
|
||||
|
||||
<ul>
|
||||
<li><tt>TQNPInstance::Normal</tt>
|
||||
<li><tt>TQNPInstance::Seek</tt>
|
||||
<li><tt>TQNPInstance::AsFile</tt>
|
||||
<li><tt>TQNPInstance::AsFileOnly</tt>
|
||||
</ul>
|
||||
<hr><h2>Member Function Documentation</h2>
|
||||
<h3 class=fn><a name="TQNPInstance"></a>TQNPInstance::TQNPInstance ()<tt> [protected]</tt>
|
||||
</h3>
|
||||
Creates a TQNPInstance.
|
||||
<p> Can only be called from within a derived class created within
|
||||
<a href="tqnplugin.html#newInstance">TQNPlugin::newInstance</a>().
|
||||
|
||||
<h3 class=fn><a name="~TQNPInstance"></a>TQNPInstance::~TQNPInstance ()
|
||||
</h3>
|
||||
Called when the plugin instance is about to be deleted.
|
||||
|
||||
<h3 class=fn>const char * <a name="arg"></a>TQNPInstance::arg ( const char * name ) const
|
||||
</h3>
|
||||
Returns the value of the named arguments, or 0 if no argument
|
||||
called <em>name</em> appears in the <tt><EMBED></tt> tag of this instance.
|
||||
If the argument appears, but has no value assigned, the empty
|
||||
string is returned. In summary:
|
||||
<p> <center><table cellpadding="4" cellspacing="2" border="0">
|
||||
<tr bgcolor="#a2c511"> <th valign="top">Tag <th valign="top">Result
|
||||
<tr bgcolor="#f0f0f0"> <td valign="top"><tt><EMBED ...></tt> <td valign="top">arg("FOO") == 0
|
||||
<tr bgcolor="#d0d0d0"> <td valign="top"><tt><EMBED FOO ...></tt> <td valign="top">arg("FOO") == ""
|
||||
<tr bgcolor="#f0f0f0"> <td valign="top"><tt><EMBED FOO=BAR ...></tt> <td valign="top">arg("FOO") == "BAR"
|
||||
</table></center>
|
||||
|
||||
<h3 class=fn>int <a name="argc"></a>TQNPInstance::argc () const
|
||||
</h3>
|
||||
Returns the number of arguments to the instance. Note that you
|
||||
should not normally rely on the ordering of arguments, and
|
||||
note that the SGML specification does not permit multiple
|
||||
arguments with the same name.
|
||||
<p> <p>See also <a href="#arg">arg</a>() and <a href="#argn">argn</a>().
|
||||
|
||||
<h3 class=fn>const char * <a name="argn"></a>TQNPInstance::argn ( int i ) const
|
||||
</h3>
|
||||
Returns the name of the <em>i</em>-th argument.
|
||||
<p> <p>See also <a href="#argc">argc</a>() and <a href="#argv">argv</a>().
|
||||
|
||||
<h3 class=fn>const char * <a name="argv"></a>TQNPInstance::argv ( int i ) const
|
||||
</h3>
|
||||
Returns the value of the <em>i</em>-th argument.
|
||||
<p> \as <a href="#argc">argc</a>(), <a href="#arg">arg</a>()
|
||||
|
||||
<h3 class=fn>void * <a name="getJavaPeer"></a>TQNPInstance::getJavaPeer () const
|
||||
</h3>
|
||||
Returns the Java object associated with the plugin instance, an
|
||||
object of the <a href="tqnplugin.html#getJavaClass">plugin's Java
|
||||
class</a>, or 0 if the plug-in does not have a Java class,
|
||||
Java is disabled, or an error occurred.
|
||||
<p> The return value is actually a <tt>jref</tt> we use <tt>void*</tt> so as to
|
||||
avoid burdening plugins which do not require Java.
|
||||
<p> <p>See also <a href="tqnplugin.html#getJavaClass">TQNPlugin::getJavaClass</a>() and <a href="tqnplugin.html#getJavaEnv">TQNPlugin::getJavaEnv</a>().
|
||||
|
||||
<h3 class=fn>void <a name="getURL"></a>TQNPInstance::getURL ( const char * url, const char * window = 0 )
|
||||
</h3>
|
||||
Requests that the <em>url</em> be retrieved and sent to the named <em>window</em>. See <a href="netscape-plugin.html#Netscape">Netscape</a>'s JavaScript documentation for an explanation
|
||||
of window names.
|
||||
|
||||
<h3 class=fn>void <a name="getURLNotify"></a>TQNPInstance::getURLNotify ( const char * url, const char * window = 0, void * data = 0 )
|
||||
</h3>
|
||||
Requests that the given <em>url</em> be retrieved and sent to
|
||||
the named <em>window</em>. See <a href="netscape-plugin.html#Netscape">Netscape</a>'s JavaScript documentation for
|
||||
an explanation of window names. Passes the arguments including <em>data</em> to NPN_GetURLNotify.
|
||||
<p>
|
||||
<a href="http://developer.netscape.com/docs/manuals/communicator/plugin/refpgur.htm#npngeturlnotify">Netscape: NPN_GetURLNotify method</a>
|
||||
|
||||
<h3 class=fn><a href="tqnpinstance.html#InstanceMode-enum">InstanceMode</a> <a name="mode"></a>TQNPInstance::mode () const
|
||||
</h3>
|
||||
Returns the mode of the plugin.
|
||||
|
||||
<h3 class=fn><a href="tqnpstream.html">TQNPStream</a> * <a name="newStream"></a>TQNPInstance::newStream ( const char * mimetype, const char * window, bool as_file = FALSE )
|
||||
</h3>
|
||||
<p><b>This function is under development and is subject to change.</b>
|
||||
<p> This function is <em>not tested</em>.
|
||||
<p> Requests the creation of a new data stream <em>from</em> the plugin.
|
||||
The MIME type and window are passed in <em>mimetype</em> and <em>window</em>.
|
||||
<em>as_file</em> holds the <a href="#StreamMode-enum">AsFileOnly</a> flag. It is an interface to the
|
||||
NPN_NewStream function of the <a href="netscape-plugin.html#Netscape">Netscape</a> Plugin API.
|
||||
|
||||
<h3 class=fn>bool <a name="newStreamCreated"></a>TQNPInstance::newStreamCreated ( <a href="tqnpstream.html">TQNPStream</a> *, <a href="tqnpinstance.html#StreamMode-enum">StreamMode</a> & smode )<tt> [virtual]</tt>
|
||||
</h3>
|
||||
|
||||
<p> This function is called when a new stream has been created. The
|
||||
instance should return TRUE if it accepts the processing of the
|
||||
stream. If the instance requires the stream as a file, it should
|
||||
set <em>smode</em> to <a href="#StreamMode-enum">AsFileOnly</a>, in which case the data will be
|
||||
delivered some time later to the <a href="#streamAsFile">streamAsFile</a>() function.
|
||||
Otherwise, the data will be delivered in chunks to the <a href="#write">write</a>()
|
||||
function, which must consume at least as much data as returned
|
||||
by the most recent call to <a href="#writeReady">writeReady</a>().
|
||||
<p> Note that the <a href="#StreamMode-enum">AsFileOnly</a> method is not supported by <a href="netscape-plugin.html#Netscape">Netscape</a>
|
||||
2.0 and MSIE 3.0.
|
||||
<p> The default implementation accepts any stream.
|
||||
|
||||
<h3 class=fn><a href="tqnpwidget.html">TQNPWidget</a> * <a name="newWindow"></a>TQNPInstance::newWindow ()<tt> [virtual]</tt>
|
||||
</h3>
|
||||
Called at most once, at some time after the TQNPInstance is
|
||||
created. If the plugin requires a window, this function should
|
||||
return a derived class of <a href="tqnpwidget.html">TQNPWidget</a> that provides the required
|
||||
interface.
|
||||
|
||||
<p>Example: <a href="grapher-nsplugin-example.html#x2751">grapher/grapher.cpp</a>.
|
||||
<h3 class=fn>void <a name="notifyURL"></a>TQNPInstance::notifyURL ( const char * url, <a href="tqnpinstance.html#Reason-enum">Reason</a> r, void * notifyData )<tt> [virtual]</tt>
|
||||
</h3>
|
||||
<p><b>This function is under development and is subject to change.</b>
|
||||
<p> This function is <em>not tested</em>.
|
||||
<p> Called whenever a <em>url</em> is notified after a call to
|
||||
NPN_GetURLNotify with <em>notifyData</em>. The reason is given in <em>r</em>.
|
||||
<p> It is an encapsulation of the NPP_URLNotify function of the
|
||||
<a href="netscape-plugin.html#Netscape">Netscape</a> Plugin API.
|
||||
<p> See also:
|
||||
<a href="http://developer.netscape.com/docs/manuals/communicator/plugin/refpgur.htm#nppurlnotify">Netscape: NPP_URLNotify method</a>
|
||||
|
||||
<h3 class=fn>void <a name="postURL"></a>TQNPInstance::postURL ( const char * url, const char * window, uint len, const char * buf, bool file )
|
||||
</h3>
|
||||
<p><b>This function is under development and is subject to change.</b>
|
||||
<p> This function is <em>not tested</em>.
|
||||
<p> It is an interface to the NPN_PostURL function of the <a href="netscape-plugin.html#Netscape">Netscape</a>
|
||||
Plugin API.
|
||||
<p> Passes <em>url</em>, <em>window</em>, <em>buf</em>, <em>len</em>, and <em>file</em> to
|
||||
NPN_PostURL.
|
||||
|
||||
<h3 class=fn>void <a name="print"></a>TQNPInstance::print ( <a href="tqpainter.html">TQPainter</a> * )<tt> [virtual]</tt>
|
||||
</h3>
|
||||
<p><b>This function is under development and is subject to change.</b>
|
||||
<p> This function is <em>not tested</em>.
|
||||
<p> Print the instance embedded in a page.
|
||||
<p> It is an encapsulation of the NPP_Print function of the <a href="netscape-plugin.html#Netscape">Netscape</a>
|
||||
Plugin API.
|
||||
|
||||
<h3 class=fn>bool <a name="printFullPage"></a>TQNPInstance::printFullPage ()<tt> [virtual]</tt>
|
||||
</h3>
|
||||
<p><b>This function is under development and is subject to change.</b>
|
||||
<p> This function is <em>not tested</em>.
|
||||
<p> It is an encapsulation of the NPP_Print function of the <a href="netscape-plugin.html#Netscape">Netscape</a>
|
||||
Plugin API.
|
||||
|
||||
<h3 class=fn>void <a name="status"></a>TQNPInstance::status ( const char * msg )
|
||||
</h3>
|
||||
Sets the status message in the browser containing this instance to
|
||||
<em>msg</em>.
|
||||
|
||||
<h3 class=fn>void <a name="streamAsFile"></a>TQNPInstance::streamAsFile ( <a href="tqnpstream.html">TQNPStream</a> *, const char * fname )<tt> [virtual]</tt>
|
||||
</h3>
|
||||
Called when a stream is delivered as a single file called <em>fname</em>
|
||||
rather than as chunks. This may be simpler for a plugin to deal
|
||||
with, but precludes any incremental behavior.
|
||||
<p> Note that the <a href="#StreamMode-enum">AsFileOnly</a> method is not supported by <a href="netscape-plugin.html#Netscape">Netscape</a>
|
||||
2.0 and MSIE 3.0.
|
||||
<p> <p>See also <a href="#newStreamCreated">newStreamCreated</a>() and <a href="#newStream">newStream</a>().
|
||||
|
||||
<h3 class=fn>void <a name="streamDestroyed"></a>TQNPInstance::streamDestroyed ( <a href="tqnpstream.html">TQNPStream</a> * )<tt> [virtual]</tt>
|
||||
</h3>
|
||||
Called when a stream is destroyed. At this point, the stream may
|
||||
be complete() and okay(). If it is not okay(), then an error has
|
||||
occurred. If it is okay(), but not complete(), then the user has
|
||||
cancelled the transmission; do not give an error message in this
|
||||
case.
|
||||
|
||||
<h3 class=fn>const char * <a name="userAgent"></a>TQNPInstance::userAgent () const
|
||||
</h3>
|
||||
Returns the user agent (browser name) containing this instance.
|
||||
|
||||
<h3 class=fn><a href="tqnpwidget.html">TQNPWidget</a> * <a name="widget"></a>TQNPInstance::widget ()
|
||||
</h3>
|
||||
Returns the plugin window created by <a href="#newWindow">newWindow</a>(), if any.
|
||||
|
||||
<h3 class=fn>int <a name="write"></a>TQNPInstance::write ( <a href="tqnpstream.html">TQNPStream</a> *, int offset, int len, void * buffer )<tt> [virtual]</tt>
|
||||
</h3>
|
||||
|
||||
<p> Called when incoming data is available for processing by the
|
||||
instance. The instance <em>must</em> consume at least the amount that it
|
||||
returned in the most recent call to <a href="#writeReady">writeReady</a>(), but it may
|
||||
consume up to the amount given by <em>len</em>. <em>buffer</em> is the data
|
||||
available for consumption. The <em>offset</em> argument is merely an
|
||||
informational value indicating the total amount of data that has
|
||||
been consumed in prior calls.
|
||||
<p> This function should return the amount of data actually consumed.
|
||||
|
||||
<p>Example: <a href="grapher-nsplugin-example.html#x2752">grapher/grapher.cpp</a>.
|
||||
<h3 class=fn>int <a name="writeReady"></a>TQNPInstance::writeReady ( <a href="tqnpstream.html">TQNPStream</a> * )<tt> [virtual]</tt>
|
||||
</h3>
|
||||
Returns the minimum amount of data the instance is willing to
|
||||
receive from the given stream.
|
||||
<p> The default returns a very large value.
|
||||
|
||||
<!-- eof -->
|
||||
<hr><p>
|
||||
This file is part of the <a href="index.html">TQt toolkit</a>.
|
||||
Copyright © 1995-2007
|
||||
<a href="http://www.trolltech.com/">Trolltech</a>. All Rights Reserved.<p><address><hr><div align=center>
|
||||
<table width=100% cellspacing=0 border=0><tr>
|
||||
<td>Copyright © 2007
|
||||
<a href="troll.html">Trolltech</a><td align=center><a href="trademarks.html">Trademarks</a>
|
||||
<td align=right><div align=right>TQt 3.3.8</div>
|
||||
</table></div></address></body>
|
||||
</html>
|
@ -1,58 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!-- /home/espenr/tmp/qt-3.3.8-espenr-2499/qt-x11-free-3.3.8/include/tqnp.h:157 -->
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>TQNPlugin Member List</title>
|
||||
<style type="text/css"><!--
|
||||
fn { margin-left: 1cm; text-indent: -1cm; }
|
||||
a:link { color: #004faf; text-decoration: none }
|
||||
a:visited { color: #672967; text-decoration: none }
|
||||
body { background: #ffffff; color: black; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr bgcolor="#E5E5E5">
|
||||
<td valign=center>
|
||||
<a href="index.html">
|
||||
<font color="#004faf">Home</font></a>
|
||||
| <a href="classes.html">
|
||||
<font color="#004faf">All Classes</font></a>
|
||||
| <a href="mainclasses.html">
|
||||
<font color="#004faf">Main Classes</font></a>
|
||||
| <a href="annotated.html">
|
||||
<font color="#004faf">Annotated</font></a>
|
||||
| <a href="groups.html">
|
||||
<font color="#004faf">Grouped Classes</font></a>
|
||||
| <a href="functions.html">
|
||||
<font color="#004faf">Functions</font></a>
|
||||
</td>
|
||||
<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table><h1 align=center>Complete Member List for TQNPlugin</h1>
|
||||
|
||||
<p>This is the complete list of member functions for
|
||||
<a href="tqnplugin.html">TQNPlugin</a>, including inherited members.
|
||||
|
||||
<ul>
|
||||
<li><a href="tqnplugin.html#TQNPlugin">TQNPlugin</a>()
|
||||
<li><a href="tqnplugin.html#~TQNPlugin">~TQNPlugin</a>()
|
||||
<li><a href="tqnplugin.html#actual">actual</a>()
|
||||
<li><a href="tqnplugin.html#create">create</a>()
|
||||
<li><a href="tqnplugin.html#getJavaClass">getJavaClass</a>()
|
||||
<li><a href="tqnplugin.html#getJavaEnv">getJavaEnv</a>()
|
||||
<li><a href="tqnplugin.html#getMIMEDescription">getMIMEDescription</a>()
|
||||
<li><a href="tqnplugin.html#getPluginDescriptionString">getPluginDescriptionString</a>()
|
||||
<li><a href="tqnplugin.html#getPluginNameString">getPluginNameString</a>()
|
||||
<li><a href="tqnplugin.html#getVersionInfo">getVersionInfo</a>()
|
||||
<li><a href="tqnplugin.html#newInstance">newInstance</a>()
|
||||
<li><a href="tqnplugin.html#unuseJavaClass">unuseJavaClass</a>()
|
||||
</ul>
|
||||
<!-- eof -->
|
||||
<p><address><hr><div align=center>
|
||||
<table width=100% cellspacing=0 border=0><tr>
|
||||
<td>Copyright © 2007
|
||||
<a href="troll.html">Trolltech</a><td align=center><a href="trademarks.html">Trademarks</a>
|
||||
<td align=right><div align=right>TQt 3.3.8</div>
|
||||
</table></div></address></body>
|
||||
</html>
|
@ -1,180 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>TQNPlugin Class</title>
|
||||
<style type="text/css"><!--
|
||||
fn { margin-left: 1cm; text-indent: -1cm; }
|
||||
a:link { color: #004faf; text-decoration: none }
|
||||
a:visited { color: #672967; text-decoration: none }
|
||||
body { background: #ffffff; color: black; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr bgcolor="#E5E5E5">
|
||||
<td valign=center>
|
||||
<a href="index.html">
|
||||
<font color="#004faf">Home</font></a>
|
||||
| <a href="classes.html">
|
||||
<font color="#004faf">All Classes</font></a>
|
||||
| <a href="mainclasses.html">
|
||||
<font color="#004faf">Main Classes</font></a>
|
||||
| <a href="annotated.html">
|
||||
<font color="#004faf">Annotated</font></a>
|
||||
| <a href="groups.html">
|
||||
<font color="#004faf">Grouped Classes</font></a>
|
||||
| <a href="functions.html">
|
||||
<font color="#004faf">Functions</font></a>
|
||||
</td>
|
||||
<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table><h1 align=center>TQNPlugin Class Reference</h1>
|
||||
|
||||
<p>The TQNPlugin class provides the main factory for plugin objects.
|
||||
<a href="#details">More...</a>
|
||||
<p>This class is part of the <b>TQt Netscape Extension</b>.
|
||||
<p><tt>#include <<a href="tqnp-h.html">tqnp.h</a>></tt>
|
||||
<p><a href="tqnplugin-members.html">List of all member functions.</a>
|
||||
<h2>Public Members</h2>
|
||||
<ul>
|
||||
<li class=fn>virtual <a href="#~TQNPlugin"><b>~TQNPlugin</b></a> ()</li>
|
||||
<li class=fn>void <a href="#getVersionInfo"><b>getVersionInfo</b></a> ( int & plugin_major, int & plugin_minor, int & browser_major, int & browser_minor )</li>
|
||||
<li class=fn>virtual TQNPInstance * <a href="#newInstance"><b>newInstance</b></a> () = 0</li>
|
||||
<li class=fn>virtual const char * <a href="#getMIMEDescription"><b>getMIMEDescription</b></a> () const = 0</li>
|
||||
<li class=fn>virtual const char * <a href="#getPluginNameString"><b>getPluginNameString</b></a> () const = 0</li>
|
||||
<li class=fn>virtual const char * <a href="#getPluginDescriptionString"><b>getPluginDescriptionString</b></a> () const = 0</li>
|
||||
<li class=fn>virtual void * <a href="#getJavaClass"><b>getJavaClass</b></a> ()</li>
|
||||
<li class=fn>virtual void <a href="#unuseJavaClass"><b>unuseJavaClass</b></a> ()</li>
|
||||
<li class=fn>void * <a href="#getJavaEnv"><b>getJavaEnv</b></a> () const</li>
|
||||
</ul>
|
||||
<h2>Static Public Members</h2>
|
||||
<ul>
|
||||
<li class=fn>TQNPlugin * <a href="#create"><b>create</b></a> ()</li>
|
||||
<li class=fn>TQNPlugin * <a href="#actual"><b>actual</b></a> ()</li>
|
||||
</ul>
|
||||
<h2>Protected Members</h2>
|
||||
<ul>
|
||||
<li class=fn><a href="#TQNPlugin"><b>TQNPlugin</b></a> ()</li>
|
||||
</ul>
|
||||
<hr><a name="details"></a><h2>Detailed Description</h2>
|
||||
<p> This class is defined in the <b>TQt <a href="netscape-plugin.html#Netscape">Netscape</a> Extension</b>, which can be found in the <tt>qt/extensions</tt> directory. It is not included in the main TQt API.
|
||||
<p>
|
||||
|
||||
The TQNPlugin class provides the main factory for plugin objects.
|
||||
<p>
|
||||
<p> This class is the heart of the plugin. One instance of this object
|
||||
is created when the plugin is <em>first</em> needed, by calling
|
||||
<a href="#create">TQNPlugin::create</a>(), which must be implemented in your plugin code
|
||||
to return some derived class of TQNPlugin. The one TQNPlugin object
|
||||
creates all <a href="tqnpinstance.html">TQNPInstance</a> instances for a web browser running in a
|
||||
single process.
|
||||
<p> Additionally, if TQt is linked to the plugin as a dynamic library,
|
||||
only one instance of <a href="ntqapplication.html">TQApplication</a> will exist <em>across all plugins that have been made with TQt</em>. So, your plugin should tread lightly
|
||||
on global settings. Do not, for example, use
|
||||
<a href="ntqapplication.html#setFont">TQApplication::setFont</a>() - that will change the font in every
|
||||
widget of every TQt-based plugin currently loaded!
|
||||
|
||||
<hr><h2>Member Function Documentation</h2>
|
||||
<h3 class=fn><a name="TQNPlugin"></a>TQNPlugin::TQNPlugin ()<tt> [protected]</tt>
|
||||
</h3>
|
||||
Creates a TQNPlugin. This may only be used by the constructor
|
||||
of the class, derived from TQNPlugin, that is returned by your
|
||||
plugin's implementation of the <a href="#create">TQNPlugin::create</a>() function.
|
||||
|
||||
<h3 class=fn><a name="~TQNPlugin"></a>TQNPlugin::~TQNPlugin ()<tt> [virtual]</tt>
|
||||
</h3>
|
||||
Destroys the TQNPlugin. This is called by the plugin binding code
|
||||
just before the plugin is about to be unloaded from memory. If
|
||||
newWindow() has been called, a <a href="ntqapplication.html">TQApplication</a> will still exist at
|
||||
this time, but will be deleted shortly after, just before the plugin
|
||||
is deleted.
|
||||
|
||||
<h3 class=fn><a href="tqnplugin.html">TQNPlugin</a> * <a name="actual"></a>TQNPlugin::actual ()<tt> [static]</tt>
|
||||
</h3>
|
||||
Returns the plugin most recently returned by <a href="#create">TQNPlugin::create</a>().
|
||||
|
||||
<h3 class=fn><a href="tqnplugin.html">TQNPlugin</a> * <a name="create"></a>TQNPlugin::create ()<tt> [static]</tt>
|
||||
</h3>
|
||||
|
||||
<p> This function must be implemented by your plugin code. It should return a
|
||||
derived class of TQNPlugin.
|
||||
|
||||
<h3 class=fn>void * <a name="getJavaClass"></a>TQNPlugin::getJavaClass ()<tt> [virtual]</tt>
|
||||
</h3>
|
||||
Override this function to return a reference to the Java class that represents
|
||||
the plugin. The default returns 0, indicating no class.
|
||||
<p> If you override this class, you must also override
|
||||
<a href="#unuseJavaClass">TQNPlugin::unuseJavaClass</a>().
|
||||
<p> The return value is actually a <tt>jref</tt>; we use <tt>void*</tt> so as to
|
||||
avoid burdening plugins which do not require Java.
|
||||
<p> <p>See also <a href="#getJavaEnv">getJavaEnv</a>() and <a href="tqnpinstance.html#getJavaPeer">TQNPInstance::getJavaPeer</a>().
|
||||
|
||||
<h3 class=fn>void * <a name="getJavaEnv"></a>TQNPlugin::getJavaEnv () const
|
||||
</h3>
|
||||
Returns a pointer to the Java execution environment, or 0 if
|
||||
either Java is disabled or an error occurred.
|
||||
<p> The return value is actually a <tt>JRIEnv*</tt>; we use <tt>void*</tt> so as
|
||||
to avoid burdening plugins which do not require Java.
|
||||
<p> <p>See also <a href="#getJavaClass">getJavaClass</a>() and <a href="tqnpinstance.html#getJavaPeer">TQNPInstance::getJavaPeer</a>().
|
||||
|
||||
<h3 class=fn>const char * <a name="getMIMEDescription"></a>TQNPlugin::getMIMEDescription () const<tt> [pure virtual]</tt>
|
||||
</h3>
|
||||
|
||||
<p> Override this function to return the MIME description of the data formats
|
||||
supported by your plugin. The format of this string is shown by
|
||||
the following example:
|
||||
<p> <pre>
|
||||
const char* getMIMEDescription() const
|
||||
{
|
||||
return "image/x-png:png:PNG Image;"
|
||||
"image/png:png:PNG Image;"
|
||||
"image/x-portable-bitmap:pbm:PBM Image;"
|
||||
"image/x-portable-graymap:pgm:PGM Image;"
|
||||
"image/x-portable-pixmap:ppm:PPM Image;"
|
||||
"image/bmp:bmp:BMP Image;"
|
||||
"image/x-ms-bmp:bmp:BMP Image;"
|
||||
"image/x-xpixmap:xpm:XPM Image;"
|
||||
"image/xpm:xpm:XPM Image";
|
||||
}
|
||||
</pre>
|
||||
|
||||
|
||||
<h3 class=fn>const char * <a name="getPluginDescriptionString"></a>TQNPlugin::getPluginDescriptionString () const<tt> [pure virtual]</tt>
|
||||
</h3>
|
||||
|
||||
<p> Returns a pointer to the plain-text description of the plugin.
|
||||
|
||||
<h3 class=fn>const char * <a name="getPluginNameString"></a>TQNPlugin::getPluginNameString () const<tt> [pure virtual]</tt>
|
||||
</h3>
|
||||
|
||||
<p> Returns a pointer to the plain-text name of the plugin.
|
||||
|
||||
<h3 class=fn>void <a name="getVersionInfo"></a>TQNPlugin::getVersionInfo ( int & plugin_major, int & plugin_minor, int & browser_major, int & browser_minor )
|
||||
</h3>
|
||||
Populates <em>*</em><em>plugin_major</em> and <em>*</em><em>plugin_minor</em> with the
|
||||
version of the plugin API and populates <em>*</em><em>browser_major</em> and
|
||||
<em>*</em><em>browser_minor</em> with the version of the web browser.
|
||||
|
||||
<h3 class=fn><a href="tqnpinstance.html">TQNPInstance</a> * <a name="newInstance"></a>TQNPlugin::newInstance ()<tt> [pure virtual]</tt>
|
||||
</h3>
|
||||
|
||||
<p> Override this function to return an appropriate derived class of
|
||||
<a href="tqnpinstance.html">TQNPInstance</a>.
|
||||
|
||||
<h3 class=fn>void <a name="unuseJavaClass"></a>TQNPlugin::unuseJavaClass ()<tt> [virtual]</tt>
|
||||
</h3>
|
||||
This function is called when the plugin is shutting down. The
|
||||
function should <em>unuse</em> the Java class returned earlier by
|
||||
<a href="#getJavaClass">getJavaClass</a>().
|
||||
|
||||
<!-- eof -->
|
||||
<hr><p>
|
||||
This file is part of the <a href="index.html">TQt toolkit</a>.
|
||||
Copyright © 1995-2007
|
||||
<a href="http://www.trolltech.com/">Trolltech</a>. All Rights Reserved.<p><address><hr><div align=center>
|
||||
<table width=100% cellspacing=0 border=0><tr>
|
||||
<td>Copyright © 2007
|
||||
<a href="troll.html">Trolltech</a><td align=center><a href="trademarks.html">Trademarks</a>
|
||||
<td align=right><div align=right>TQt 3.3.8</div>
|
||||
</table></div></address></body>
|
||||
</html>
|
@ -1,58 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!-- /home/espenr/tmp/qt-3.3.8-espenr-2499/qt-x11-free-3.3.8/include/tqnp.h:50 -->
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>TQNPStream Member List</title>
|
||||
<style type="text/css"><!--
|
||||
fn { margin-left: 1cm; text-indent: -1cm; }
|
||||
a:link { color: #004faf; text-decoration: none }
|
||||
a:visited { color: #672967; text-decoration: none }
|
||||
body { background: #ffffff; color: black; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr bgcolor="#E5E5E5">
|
||||
<td valign=center>
|
||||
<a href="index.html">
|
||||
<font color="#004faf">Home</font></a>
|
||||
| <a href="classes.html">
|
||||
<font color="#004faf">All Classes</font></a>
|
||||
| <a href="mainclasses.html">
|
||||
<font color="#004faf">Main Classes</font></a>
|
||||
| <a href="annotated.html">
|
||||
<font color="#004faf">Annotated</font></a>
|
||||
| <a href="groups.html">
|
||||
<font color="#004faf">Grouped Classes</font></a>
|
||||
| <a href="functions.html">
|
||||
<font color="#004faf">Functions</font></a>
|
||||
</td>
|
||||
<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table><h1 align=center>Complete Member List for TQNPStream</h1>
|
||||
|
||||
<p>This is the complete list of member functions for
|
||||
<a href="tqnpstream.html">TQNPStream</a>, including inherited members.
|
||||
|
||||
<ul>
|
||||
<li><a href="tqnpstream.html#TQNPStream">TQNPStream</a>()
|
||||
<li><a href="tqnpstream.html#~TQNPStream">~TQNPStream</a>()
|
||||
<li><a href="tqnpstream.html#complete">complete</a>()
|
||||
<li><a href="tqnpstream.html#end">end</a>()
|
||||
<li><a href="tqnpstream.html#instance">instance</a>()
|
||||
<li><a href="tqnpstream.html#lastModified">lastModified</a>()
|
||||
<li><a href="tqnpstream.html#okay">okay</a>()
|
||||
<li><a href="tqnpstream.html#requestRead">requestRead</a>()
|
||||
<li><a href="tqnpstream.html#seekable">seekable</a>()
|
||||
<li><a href="tqnpstream.html#type">type</a>()
|
||||
<li><a href="tqnpstream.html#url">url</a>()
|
||||
<li><a href="tqnpstream.html#write">write</a>()
|
||||
</ul>
|
||||
<!-- eof -->
|
||||
<p><address><hr><div align=center>
|
||||
<table width=100% cellspacing=0 border=0><tr>
|
||||
<td>Copyright © 2007
|
||||
<a href="troll.html">Trolltech</a><td align=center><a href="trademarks.html">Trademarks</a>
|
||||
<td align=right><div align=right>TQt 3.3.8</div>
|
||||
</table></div></address></body>
|
||||
</html>
|
@ -1,129 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>TQNPStream Class</title>
|
||||
<style type="text/css"><!--
|
||||
fn { margin-left: 1cm; text-indent: -1cm; }
|
||||
a:link { color: #004faf; text-decoration: none }
|
||||
a:visited { color: #672967; text-decoration: none }
|
||||
body { background: #ffffff; color: black; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr bgcolor="#E5E5E5">
|
||||
<td valign=center>
|
||||
<a href="index.html">
|
||||
<font color="#004faf">Home</font></a>
|
||||
| <a href="classes.html">
|
||||
<font color="#004faf">All Classes</font></a>
|
||||
| <a href="mainclasses.html">
|
||||
<font color="#004faf">Main Classes</font></a>
|
||||
| <a href="annotated.html">
|
||||
<font color="#004faf">Annotated</font></a>
|
||||
| <a href="groups.html">
|
||||
<font color="#004faf">Grouped Classes</font></a>
|
||||
| <a href="functions.html">
|
||||
<font color="#004faf">Functions</font></a>
|
||||
</td>
|
||||
<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table><h1 align=center>TQNPStream Class Reference</h1>
|
||||
|
||||
<p>The TQNPStream class provides a stream of data provided to a TQNPInstance by the browser.
|
||||
<a href="#details">More...</a>
|
||||
<p>This class is part of the <b>TQt Netscape Extension</b>.
|
||||
<p><tt>#include <<a href="tqnp-h.html">tqnp.h</a>></tt>
|
||||
<p><a href="tqnpstream-members.html">List of all member functions.</a>
|
||||
<h2>Public Members</h2>
|
||||
<ul>
|
||||
<li class=fn><a href="#~TQNPStream"><b>~TQNPStream</b></a> ()</li>
|
||||
<li class=fn>const char * <a href="#url"><b>url</b></a> () const</li>
|
||||
<li class=fn>uint <a href="#end"><b>end</b></a> () const</li>
|
||||
<li class=fn>uint <a href="#lastModified"><b>lastModified</b></a> () const</li>
|
||||
<li class=fn>const char * <a href="#type"><b>type</b></a> () const</li>
|
||||
<li class=fn>bool <a href="#seekable"><b>seekable</b></a> () const</li>
|
||||
<li class=fn>bool <a href="#okay"><b>okay</b></a> () const</li>
|
||||
<li class=fn>bool <a href="#complete"><b>complete</b></a> () const</li>
|
||||
<li class=fn>void <a href="#requestRead"><b>requestRead</b></a> ( int offset, uint length )</li>
|
||||
<li class=fn>int <a href="#write"><b>write</b></a> ( int len, void * buffer )</li>
|
||||
<li class=fn>TQNPInstance * <a href="#instance"><b>instance</b></a> ()</li>
|
||||
<li class=fn><a href="#TQNPStream"><b>TQNPStream</b></a> ( TQNPInstance * in, const char * mt, _NPStream * st, bool se )</li>
|
||||
</ul>
|
||||
<hr><a name="details"></a><h2>Detailed Description</h2>
|
||||
<p> This class is defined in the <b>TQt <a href="netscape-plugin.html#Netscape">Netscape</a> Extension</b>, which can be found in the <tt>qt/extensions</tt> directory. It is not included in the main TQt API.
|
||||
<p>
|
||||
|
||||
The TQNPStream class provides a stream of data provided to a <a href="tqnpinstance.html">TQNPInstance</a> by the browser.
|
||||
<p>
|
||||
<p> Note that this is neither a <a href="tqtextstream.html">TQTextStream</a> nor a <a href="tqdatastream.html">TQDataStream</a>.
|
||||
<p> <p>See also <a href="tqnpinstance.html#write">TQNPInstance::write</a>() and <a href="tqnpinstance.html#newStreamCreated">TQNPInstance::newStreamCreated</a>().
|
||||
|
||||
<hr><h2>Member Function Documentation</h2>
|
||||
<h3 class=fn><a name="TQNPStream"></a>TQNPStream::TQNPStream ( <a href="tqnpinstance.html">TQNPInstance</a> * in, const char * mt, _NPStream * st, bool se )
|
||||
</h3>
|
||||
Creates a stream. Plugins should not call this; they should call
|
||||
<a href="tqnpinstance.html#newStream">TQNPInstance::newStream</a>() if they need a stream.
|
||||
<p> Takes a <a href="tqnpinstance.html">TQNPInstance</a> <em>in</em>, MIME type <em>mt</em>, a pointer to an
|
||||
_NPStream <em>st</em> and a seekable flag <em>se</em>.
|
||||
|
||||
<h3 class=fn><a name="~TQNPStream"></a>TQNPStream::~TQNPStream ()
|
||||
</h3>
|
||||
Destroys the stream.
|
||||
|
||||
<h3 class=fn>bool <a name="complete"></a>TQNPStream::complete () const
|
||||
</h3>
|
||||
Returns TRUE if the stream has received all the data from the
|
||||
source; otherwise returns FALSE.
|
||||
|
||||
<h3 class=fn>uint <a name="end"></a>TQNPStream::end () const
|
||||
</h3>
|
||||
Returns the length of the stream in bytes. The function might
|
||||
return 0 for streams of unknown length.
|
||||
|
||||
<h3 class=fn><a href="tqnpinstance.html">TQNPInstance</a> * <a name="instance"></a>TQNPStream::instance ()
|
||||
</h3>
|
||||
|
||||
<p> Returns the <a href="tqnpinstance.html">TQNPInstance</a> for which this stream was created.
|
||||
|
||||
<h3 class=fn>uint <a name="lastModified"></a>TQNPStream::lastModified () const
|
||||
</h3>
|
||||
Returns the time when the source of the stream was last modified.
|
||||
|
||||
<h3 class=fn>bool <a name="okay"></a>TQNPStream::okay () const
|
||||
</h3>
|
||||
Returns TRUE if no errors have occurred on the stream; otherwise
|
||||
returns FALSE.
|
||||
|
||||
<h3 class=fn>void <a name="requestRead"></a>TQNPStream::requestRead ( int offset, uint length )
|
||||
</h3>
|
||||
Requests the section of the stream, of <em>length</em> bytes from <em>offset</em>, be sent to the <a href="tqnpinstance.html#write">TQNPInstance::write</a>() function of the
|
||||
<a href="#instance">instance</a>() of this stream.
|
||||
|
||||
<h3 class=fn>bool <a name="seekable"></a>TQNPStream::seekable () const
|
||||
</h3>
|
||||
Returns TRUE if the stream is seekable; otherwise returns FALSE.
|
||||
|
||||
<h3 class=fn>const char * <a name="type"></a>TQNPStream::type () const
|
||||
</h3>
|
||||
Returns the MIME type of the stream.
|
||||
|
||||
<h3 class=fn>const char * <a name="url"></a>TQNPStream::url () const
|
||||
</h3>
|
||||
Returns the URL from which the stream was created.
|
||||
|
||||
<h3 class=fn>int <a name="write"></a>TQNPStream::write ( int len, void * buffer )
|
||||
</h3>
|
||||
Writes <em>len</em> bytes from <em>buffer</em> <em>to</em> the stream.
|
||||
|
||||
<!-- eof -->
|
||||
<hr><p>
|
||||
This file is part of the <a href="index.html">TQt toolkit</a>.
|
||||
Copyright © 1995-2007
|
||||
<a href="http://www.trolltech.com/">Trolltech</a>. All Rights Reserved.<p><address><hr><div align=center>
|
||||
<table width=100% cellspacing=0 border=0><tr>
|
||||
<td>Copyright © 2007
|
||||
<a href="troll.html">Trolltech</a><td align=center><a href="trademarks.html">Trademarks</a>
|
||||
<td align=right><div align=right>TQt 3.3.8</div>
|
||||
</table></div></address></body>
|
||||
</html>
|
@ -1,340 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!-- /home/espenr/tmp/qt-3.3.8-espenr-2499/qt-x11-free-3.3.8/include/tqnp.h:80 -->
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>TQNPWidget Member List</title>
|
||||
<style type="text/css"><!--
|
||||
fn { margin-left: 1cm; text-indent: -1cm; }
|
||||
a:link { color: #004faf; text-decoration: none }
|
||||
a:visited { color: #672967; text-decoration: none }
|
||||
body { background: #ffffff; color: black; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr bgcolor="#E5E5E5">
|
||||
<td valign=center>
|
||||
<a href="index.html">
|
||||
<font color="#004faf">Home</font></a>
|
||||
| <a href="classes.html">
|
||||
<font color="#004faf">All Classes</font></a>
|
||||
| <a href="mainclasses.html">
|
||||
<font color="#004faf">Main Classes</font></a>
|
||||
| <a href="annotated.html">
|
||||
<font color="#004faf">Annotated</font></a>
|
||||
| <a href="groups.html">
|
||||
<font color="#004faf">Grouped Classes</font></a>
|
||||
| <a href="functions.html">
|
||||
<font color="#004faf">Functions</font></a>
|
||||
</td>
|
||||
<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table><h1 align=center>Complete Member List for TQNPWidget</h1>
|
||||
|
||||
<p>This is the complete list of member functions for
|
||||
<a href="tqnpwidget.html">TQNPWidget</a>, including inherited members.
|
||||
|
||||
<ul>
|
||||
<li><a href="tqnpwidget.html#TQNPWidget">TQNPWidget</a>()
|
||||
<li><a href="tqnpwidget.html#~TQNPWidget">~TQNPWidget</a>()
|
||||
<li><a href="tqwidget.html#acceptDrops">acceptDrops</a>()
|
||||
<li><a href="tqwidget.html#adjustSize">adjustSize</a>()
|
||||
<li><a href="tqwidget.html#autoMask">autoMask</a>()
|
||||
<li><a href="tqwidget.html#backgroundBrush">backgroundBrush</a>()
|
||||
<li><a href="tqwidget.html#backgroundColor">backgroundColor</a>()
|
||||
<li><a href="tqwidget.html#backgroundMode">backgroundMode</a>()
|
||||
<li><a href="tqwidget.html#backgroundOrigin">backgroundOrigin</a>()
|
||||
<li><a href="tqwidget.html#backgroundPixmap">backgroundPixmap</a>()
|
||||
<li><a href="tqwidget.html#baseSize">baseSize</a>()
|
||||
<li><a href="tqobject.html#blockSignals">blockSignals</a>()
|
||||
<li><a href="tqwidget.html#caption">caption</a>()
|
||||
<li><a href="tqobject.html#checkConnectArgs">checkConnectArgs</a>()
|
||||
<li><a href="tqobject.html#child">child</a>()
|
||||
<li><a href="tqwidget.html#childAt">childAt</a>()
|
||||
<li><a href="tqobject.html#childEvent">childEvent</a>()
|
||||
<li><a href="tqobject.html#children">children</a>()
|
||||
<li><a href="tqwidget.html#childrenRect">childrenRect</a>()
|
||||
<li><a href="tqwidget.html#childrenRegion">childrenRegion</a>()
|
||||
<li><a href="tqobject.html#className">className</a>()
|
||||
<li><a href="tqwidget.html#clearFocus">clearFocus</a>()
|
||||
<li><a href="tqwidget.html#clearMask">clearMask</a>()
|
||||
<li><a href="tqwidget.html#clearWFlags">clearWFlags</a>()
|
||||
<li><a href="tqwidget.html#clipRegion">clipRegion</a>()
|
||||
<li><a href="tqwidget.html#close">close</a>()
|
||||
<li><a href="tqwidget.html#closeEvent">closeEvent</a>()
|
||||
<li><a href="tqpaintdevice.html#cmd">cmd</a>()
|
||||
<li><a href="tqwidget.html#colorGroup">colorGroup</a>()
|
||||
<li><a href="tqobject.html#connect">connect</a>()
|
||||
<li><a href="tqobject.html#connectNotify">connectNotify</a>()
|
||||
<li><a href="tqwidget.html#constPolish">constPolish</a>()
|
||||
<li><a href="tqwidget.html#contextMenuEvent">contextMenuEvent</a>()
|
||||
<li><a href="tqwidget.html#create">create</a>()
|
||||
<li><a href="tqwidget.html#cursor">cursor</a>()
|
||||
<li><a href="tqobject.html#customEvent">customEvent</a>()
|
||||
<li><a href="tqwidget.html#customWhatsThis">customWhatsThis</a>()
|
||||
<li><a href="tqobject.html#deleteLater">deleteLater</a>()
|
||||
<li><a href="tqwidget.html#destroy">destroy</a>()
|
||||
<li><a href="tqobject.html#destroyed">destroyed</a>()
|
||||
<li><a href="tqobject.html#disconnect">disconnect</a>()
|
||||
<li><a href="tqobject.html#disconnectNotify">disconnectNotify</a>()
|
||||
<li><a href="tqwidget.html#dragEnterEvent">dragEnterEvent</a>()
|
||||
<li><a href="tqwidget.html#dragLeaveEvent">dragLeaveEvent</a>()
|
||||
<li><a href="tqwidget.html#dragMoveEvent">dragMoveEvent</a>()
|
||||
<li><a href="tqwidget.html#drawText">drawText</a>()
|
||||
<li><a href="tqwidget.html#dropEvent">dropEvent</a>()
|
||||
<li><a href="tqobject.html#dumpObjectInfo">dumpObjectInfo</a>()
|
||||
<li><a href="tqobject.html#dumpObjectTree">dumpObjectTree</a>()
|
||||
<li><a href="tqwidget.html#enabledChange">enabledChange</a>()
|
||||
<li><a href="tqwidget.html#enterEvent">enterEvent</a>()
|
||||
<li><a href="tqnpwidget.html#enterInstance">enterInstance</a>()
|
||||
<li><a href="tqwidget.html#erase">erase</a>()
|
||||
<li><a href="tqwidget.html#eraseColor">eraseColor</a>()
|
||||
<li><a href="tqwidget.html#erasePixmap">erasePixmap</a>()
|
||||
<li><a href="tqwidget.html#event">event</a>()
|
||||
<li><a href="tqobject.html#eventFilter">eventFilter</a>()
|
||||
<li><a href="tqwidget.html#find">find</a>()
|
||||
<li><a href="tqwidget.html#focusData">focusData</a>()
|
||||
<li><a href="tqwidget.html#focusInEvent">focusInEvent</a>()
|
||||
<li><a href="tqwidget.html#focusNextPrevChild">focusNextPrevChild</a>()
|
||||
<li><a href="tqwidget.html#focusOutEvent">focusOutEvent</a>()
|
||||
<li><a href="tqwidget.html#focusPolicy">focusPolicy</a>()
|
||||
<li><a href="tqwidget.html#focusProxy">focusProxy</a>()
|
||||
<li><a href="tqwidget.html#focusWidget">focusWidget</a>()
|
||||
<li><a href="tqwidget.html#font">font</a>()
|
||||
<li><a href="tqwidget.html#fontChange">fontChange</a>()
|
||||
<li><a href="tqwidget.html#fontInfo">fontInfo</a>()
|
||||
<li><a href="tqwidget.html#fontMetrics">fontMetrics</a>()
|
||||
<li><a href="tqwidget.html#foregroundColor">foregroundColor</a>()
|
||||
<li><a href="tqwidget.html#frameGeometry">frameGeometry</a>()
|
||||
<li><a href="tqwidget.html#frameSize">frameSize</a>()
|
||||
<li><a href="tqwidget.html#geometry">geometry</a>()
|
||||
<li><a href="tqwidget.html#getWFlags">getWFlags</a>()
|
||||
<li><a href="tqwidget.html#grabKeyboard">grabKeyboard</a>()
|
||||
<li><a href="tqwidget.html#grabMouse">grabMouse</a>()
|
||||
<li><a href="tqpaintdevice.html#handle">handle</a>()
|
||||
<li><a href="tqwidget.html#hasFocus">hasFocus</a>()
|
||||
<li><a href="tqwidget.html#hasMouse">hasMouse</a>()
|
||||
<li><a href="tqwidget.html#hasMouseTracking">hasMouseTracking</a>()
|
||||
<li><a href="tqwidget.html#height">height</a>()
|
||||
<li><a href="tqwidget.html#heightForWidth">heightForWidth</a>()
|
||||
<li><a href="tqwidget.html#hide">hide</a>()
|
||||
<li><a href="tqwidget.html#hideEvent">hideEvent</a>()
|
||||
<li><a href="tqobject.html#highPriority">highPriority</a>()
|
||||
<li><a href="tqwidget.html#icon">icon</a>()
|
||||
<li><a href="tqwidget.html#iconText">iconText</a>()
|
||||
<li><a href="tqwidget.html#iconify">iconify</a>()
|
||||
<li><a href="tqwidget.html#imComposeEvent">imComposeEvent</a>()
|
||||
<li><a href="tqwidget.html#imEndEvent">imEndEvent</a>()
|
||||
<li><a href="tqwidget.html#imStartEvent">imStartEvent</a>()
|
||||
<li><a href="tqobject.html#inherits">inherits</a>()
|
||||
<li><a href="tqobject.html#insertChild">insertChild</a>()
|
||||
<li><a href="tqobject.html#installEventFilter">installEventFilter</a>()
|
||||
<li><a href="tqnpwidget.html#instance">instance</a>()
|
||||
<li><a href="tqobject.html#isA">isA</a>()
|
||||
<li><a href="tqwidget.html#isActiveWindow">isActiveWindow</a>()
|
||||
<li><a href="tqwidget.html#isDesktop">isDesktop</a>()
|
||||
<li><a href="tqwidget.html#isDialog">isDialog</a>()
|
||||
<li><a href="tqwidget.html#isEnabled">isEnabled</a>()
|
||||
<li><a href="tqwidget.html#isEnabledTo">isEnabledTo</a>()
|
||||
<li><a href="tqwidget.html#isEnabledToTLW">isEnabledToTLW</a>()
|
||||
<li><a href="tqpaintdevice.html#isExtDev">isExtDev</a>()
|
||||
<li><a href="tqwidget.html#isFocusEnabled">isFocusEnabled</a>()
|
||||
<li><a href="tqwidget.html#isFullScreen">isFullScreen</a>()
|
||||
<li><a href="tqwidget.html#isHidden">isHidden</a>()
|
||||
<li><a href="tqwidget.html#isInputMethodEnabled">isInputMethodEnabled</a>()
|
||||
<li><a href="tqwidget.html#isMaximized">isMaximized</a>()
|
||||
<li><a href="tqwidget.html#isMinimized">isMinimized</a>()
|
||||
<li><a href="tqwidget.html#isModal">isModal</a>()
|
||||
<li><a href="tqwidget.html#isPopup">isPopup</a>()
|
||||
<li><a href="tqwidget.html#isShown">isShown</a>()
|
||||
<li><a href="tqwidget.html#isTopLevel">isTopLevel</a>()
|
||||
<li><a href="tqwidget.html#isUpdatesEnabled">isUpdatesEnabled</a>()
|
||||
<li><a href="tqwidget.html#isVisible">isVisible</a>()
|
||||
<li><a href="tqwidget.html#isVisibleTo">isVisibleTo</a>()
|
||||
<li><a href="tqwidget.html#isVisibleToTLW">isVisibleToTLW</a>()
|
||||
<li><a href="tqobject.html#isWidgetType">isWidgetType</a>()
|
||||
<li><a href="tqwidget.html#keyPressEvent">keyPressEvent</a>()
|
||||
<li><a href="tqwidget.html#keyReleaseEvent">keyReleaseEvent</a>()
|
||||
<li><a href="tqwidget.html#keyboardGrabber">keyboardGrabber</a>()
|
||||
<li><a href="tqobject.html#killTimer">killTimer</a>()
|
||||
<li><a href="tqobject.html#killTimers">killTimers</a>()
|
||||
<li><a href="tqwidget.html#layout">layout</a>()
|
||||
<li><a href="tqwidget.html#leaveEvent">leaveEvent</a>()
|
||||
<li><a href="tqnpwidget.html#leaveInstance">leaveInstance</a>()
|
||||
<li><a href="tqwidget.html#lower">lower</a>()
|
||||
<li><a href="tqwidget.html#macEvent">macEvent</a>()
|
||||
<li><a href="tqwidget.html#mapFrom">mapFrom</a>()
|
||||
<li><a href="tqwidget.html#mapFromGlobal">mapFromGlobal</a>()
|
||||
<li><a href="tqwidget.html#mapFromParent">mapFromParent</a>()
|
||||
<li><a href="tqwidget.html#mapTo">mapTo</a>()
|
||||
<li><a href="tqwidget.html#mapToGlobal">mapToGlobal</a>()
|
||||
<li><a href="tqwidget.html#mapToParent">mapToParent</a>()
|
||||
<li><a href="tqwidget.html#maximumHeight">maximumHeight</a>()
|
||||
<li><a href="tqwidget.html#maximumSize">maximumSize</a>()
|
||||
<li><a href="tqwidget.html#maximumWidth">maximumWidth</a>()
|
||||
<li><a href="tqobject.html#metaObject">metaObject</a>()
|
||||
<li><a href="tqwidget.html#metric">metric</a>()
|
||||
<li><a href="tqwidget.html#microFocusHint">microFocusHint</a>()
|
||||
<li><a href="tqwidget.html#minimumHeight">minimumHeight</a>()
|
||||
<li><a href="tqwidget.html#minimumSize">minimumSize</a>()
|
||||
<li><a href="tqwidget.html#minimumSizeHint">minimumSizeHint</a>()
|
||||
<li><a href="tqwidget.html#minimumWidth">minimumWidth</a>()
|
||||
<li><a href="tqwidget.html#mouseDoubleClickEvent">mouseDoubleClickEvent</a>()
|
||||
<li><a href="tqwidget.html#mouseGrabber">mouseGrabber</a>()
|
||||
<li><a href="tqwidget.html#mouseMoveEvent">mouseMoveEvent</a>()
|
||||
<li><a href="tqwidget.html#mousePressEvent">mousePressEvent</a>()
|
||||
<li><a href="tqwidget.html#mouseReleaseEvent">mouseReleaseEvent</a>()
|
||||
<li><a href="tqwidget.html#move">move</a>()
|
||||
<li><a href="tqwidget.html#moveEvent">moveEvent</a>()
|
||||
<li><a href="tqobject.html#name">name</a>()
|
||||
<li><a href="tqobject.html#normalizeSignalSlot">normalizeSignalSlot</a>()
|
||||
<li><a href="tqobject.html#objectTrees">objectTrees</a>()
|
||||
<li><a href="tqwidget.html#ownCursor">ownCursor</a>()
|
||||
<li><a href="tqwidget.html#ownFont">ownFont</a>()
|
||||
<li><a href="tqwidget.html#ownPalette">ownPalette</a>()
|
||||
<li><a href="tqwidget.html#paintEvent">paintEvent</a>()
|
||||
<li><a href="tqpaintdevice.html#paintingActive">paintingActive</a>()
|
||||
<li><a href="tqwidget.html#palette">palette</a>()
|
||||
<li><a href="tqwidget.html#paletteBackgroundColor">paletteBackgroundColor</a>()
|
||||
<li><a href="tqwidget.html#paletteBackgroundPixmap">paletteBackgroundPixmap</a>()
|
||||
<li><a href="tqwidget.html#paletteChange">paletteChange</a>()
|
||||
<li><a href="tqwidget.html#paletteForegroundColor">paletteForegroundColor</a>()
|
||||
<li><a href="tqobject.html#parent">parent</a>()
|
||||
<li><a href="tqwidget.html#parentWidget">parentWidget</a>()
|
||||
<li><a href="tqwidget.html#polish">polish</a>()
|
||||
<li><a href="tqwidget.html#pos">pos</a>()
|
||||
<li><a href="tqobject.html#property">property</a>()
|
||||
<li><a href="tqobject.html#queryList">queryList</a>()
|
||||
<li><a href="tqwidget.html#raise">raise</a>()
|
||||
<li><a href="tqwidget.html#recreate">recreate</a>()
|
||||
<li><a href="tqwidget.html#rect">rect</a>()
|
||||
<li><a href="tqwidget.html#releaseKeyboard">releaseKeyboard</a>()
|
||||
<li><a href="tqwidget.html#releaseMouse">releaseMouse</a>()
|
||||
<li><a href="tqobject.html#removeChild">removeChild</a>()
|
||||
<li><a href="tqobject.html#removeEventFilter">removeEventFilter</a>()
|
||||
<li><a href="tqwidget.html#repaint">repaint</a>()
|
||||
<li><a href="tqwidget.html#reparent">reparent</a>()
|
||||
<li><a href="tqwidget.html#resetInputContext">resetInputContext</a>()
|
||||
<li><a href="tqwidget.html#resize">resize</a>()
|
||||
<li><a href="tqwidget.html#resizeEvent">resizeEvent</a>()
|
||||
<li><a href="tqwidget.html#scroll">scroll</a>()
|
||||
<li><a href="tqobject.html#sender">sender</a>()
|
||||
<li><a href="tqwidget.html#setAcceptDrops">setAcceptDrops</a>()
|
||||
<li><a href="tqwidget.html#setActiveWindow">setActiveWindow</a>()
|
||||
<li><a href="tqwidget.html#setAutoMask">setAutoMask</a>()
|
||||
<li><a href="tqwidget.html#setBackgroundColor">setBackgroundColor</a>()
|
||||
<li><a href="tqwidget.html#setBackgroundMode">setBackgroundMode</a>()
|
||||
<li><a href="tqwidget.html#setBackgroundOrigin">setBackgroundOrigin</a>()
|
||||
<li><a href="tqwidget.html#setBackgroundPixmap">setBackgroundPixmap</a>()
|
||||
<li><a href="tqwidget.html#setBaseSize">setBaseSize</a>()
|
||||
<li><a href="tqwidget.html#setCaption">setCaption</a>()
|
||||
<li><a href="tqwidget.html#setCursor">setCursor</a>()
|
||||
<li><a href="tqwidget.html#setDisabled">setDisabled</a>()
|
||||
<li><a href="tqwidget.html#setEnabled">setEnabled</a>()
|
||||
<li><a href="tqwidget.html#setEraseColor">setEraseColor</a>()
|
||||
<li><a href="tqwidget.html#setErasePixmap">setErasePixmap</a>()
|
||||
<li><a href="tqwidget.html#setFixedHeight">setFixedHeight</a>()
|
||||
<li><a href="tqwidget.html#setFixedSize">setFixedSize</a>()
|
||||
<li><a href="tqwidget.html#setFixedWidth">setFixedWidth</a>()
|
||||
<li><a href="tqwidget.html#setFocus">setFocus</a>()
|
||||
<li><a href="tqwidget.html#setFocusPolicy">setFocusPolicy</a>()
|
||||
<li><a href="tqwidget.html#setFocusProxy">setFocusProxy</a>()
|
||||
<li><a href="tqwidget.html#setFont">setFont</a>()
|
||||
<li><a href="tqwidget.html#setGeometry">setGeometry</a>()
|
||||
<li><a href="tqwidget.html#setHidden">setHidden</a>()
|
||||
<li><a href="tqwidget.html#setIcon">setIcon</a>()
|
||||
<li><a href="tqwidget.html#setIconText">setIconText</a>()
|
||||
<li><a href="tqwidget.html#setInputMethodEnabled">setInputMethodEnabled</a>()
|
||||
<li><a href="tqwidget.html#setKeyCompression">setKeyCompression</a>()
|
||||
<li><a href="tqwidget.html#setMask">setMask</a>()
|
||||
<li><a href="tqwidget.html#setMaximumHeight">setMaximumHeight</a>()
|
||||
<li><a href="tqwidget.html#setMaximumSize">setMaximumSize</a>()
|
||||
<li><a href="tqwidget.html#setMaximumWidth">setMaximumWidth</a>()
|
||||
<li><a href="tqwidget.html#setMicroFocusHint">setMicroFocusHint</a>()
|
||||
<li><a href="tqwidget.html#setMinimumHeight">setMinimumHeight</a>()
|
||||
<li><a href="tqwidget.html#setMinimumSize">setMinimumSize</a>()
|
||||
<li><a href="tqwidget.html#setMinimumWidth">setMinimumWidth</a>()
|
||||
<li><a href="tqwidget.html#setMouseTracking">setMouseTracking</a>()
|
||||
<li><a href="tqobject.html#setName">setName</a>()
|
||||
<li><a href="tqwidget.html#setPalette">setPalette</a>()
|
||||
<li><a href="tqwidget.html#setPaletteBackgroundColor">setPaletteBackgroundColor</a>()
|
||||
<li><a href="tqwidget.html#setPaletteBackgroundPixmap">setPaletteBackgroundPixmap</a>()
|
||||
<li><a href="tqwidget.html#setPaletteForegroundColor">setPaletteForegroundColor</a>()
|
||||
<li><a href="tqobject.html#setProperty">setProperty</a>()
|
||||
<li><a href="tqwidget.html#setShown">setShown</a>()
|
||||
<li><a href="tqwidget.html#setSizeIncrement">setSizeIncrement</a>()
|
||||
<li><a href="tqwidget.html#setSizePolicy">setSizePolicy</a>()
|
||||
<li><a href="tqwidget.html#setStyle">setStyle</a>()
|
||||
<li><a href="tqwidget.html#setTabOrder">setTabOrder</a>()
|
||||
<li><a href="tqwidget.html#setUpdatesEnabled">setUpdatesEnabled</a>()
|
||||
<li><a href="tqwidget.html#setWFlags">setWFlags</a>()
|
||||
<li><a href="tqwidget.html#setWindowOpacity">setWindowOpacity</a>()
|
||||
<li><a href="tqwidget.html#setWindowState">setWindowState</a>()
|
||||
<li><a href="tqwidget.html#show">show</a>()
|
||||
<li><a href="tqwidget.html#showEvent">showEvent</a>()
|
||||
<li><a href="tqwidget.html#showFullScreen">showFullScreen</a>()
|
||||
<li><a href="tqwidget.html#showMaximized">showMaximized</a>()
|
||||
<li><a href="tqwidget.html#showMinimized">showMinimized</a>()
|
||||
<li><a href="tqwidget.html#showNormal">showNormal</a>()
|
||||
<li><a href="tqobject.html#signalsBlocked">signalsBlocked</a>()
|
||||
<li><a href="tqwidget.html#size">size</a>()
|
||||
<li><a href="tqwidget.html#sizeHint">sizeHint</a>()
|
||||
<li><a href="tqwidget.html#sizeIncrement">sizeIncrement</a>()
|
||||
<li><a href="tqwidget.html#sizePolicy">sizePolicy</a>()
|
||||
<li><a href="tqwidget.html#stackUnder">stackUnder</a>()
|
||||
<li><a href="tqobject.html#startTimer">startTimer</a>()
|
||||
<li><a href="tqwidget.html#style">style</a>()
|
||||
<li><a href="tqwidget.html#styleChange">styleChange</a>()
|
||||
<li><a href="tqwidget.html#tabletEvent">tabletEvent</a>()
|
||||
<li><a href="tqwidget.html#testWFlags">testWFlags</a>()
|
||||
<li><a href="tqobject.html#timerEvent">timerEvent</a>()
|
||||
<li><a href="tqwidget.html#topLevelWidget">topLevelWidget</a>()
|
||||
<li><a href="tqobject.html#tr">tr</a>()
|
||||
<li><a href="tqobject.html#trUtf8">trUtf8</a>()
|
||||
<li><a href="tqwidget.html#unsetCursor">unsetCursor</a>()
|
||||
<li><a href="tqwidget.html#unsetFont">unsetFont</a>()
|
||||
<li><a href="tqwidget.html#unsetPalette">unsetPalette</a>()
|
||||
<li><a href="tqwidget.html#update">update</a>()
|
||||
<li><a href="tqwidget.html#updateGeometry">updateGeometry</a>()
|
||||
<li><a href="tqwidget.html#updateMask">updateMask</a>()
|
||||
<li><a href="tqwidget.html#visibleRect">visibleRect</a>()
|
||||
<li><a href="tqwidget.html#wheelEvent">wheelEvent</a>()
|
||||
<li><a href="tqwidget.html#width">width</a>()
|
||||
<li><a href="tqwidget.html#winEvent">winEvent</a>()
|
||||
<li><a href="tqwidget.html#winId">winId</a>()
|
||||
<li><a href="tqwidget.html#windowActivationChange">windowActivationChange</a>()
|
||||
<li><a href="tqwidget.html#windowOpacity">windowOpacity</a>()
|
||||
<li><a href="tqwidget.html#windowState">windowState</a>()
|
||||
<li><a href="tqwidget.html#x">x</a>()
|
||||
<li><a href="tqpaintdevice.html#x11AppCells">x11AppCells</a>()
|
||||
<li><a href="tqpaintdevice.html#x11AppColormap">x11AppColormap</a>()
|
||||
<li><a href="tqpaintdevice.html#x11AppDefaultColormap">x11AppDefaultColormap</a>()
|
||||
<li><a href="tqpaintdevice.html#x11AppDefaultVisual">x11AppDefaultVisual</a>()
|
||||
<li><a href="tqpaintdevice.html#x11AppDepth">x11AppDepth</a>()
|
||||
<li><a href="tqpaintdevice.html#x11AppDisplay">x11AppDisplay</a>()
|
||||
<li><a href="tqpaintdevice.html#x11AppDpiX">x11AppDpiX</a>()
|
||||
<li><a href="tqpaintdevice.html#x11AppDpiY">x11AppDpiY</a>()
|
||||
<li><a href="tqpaintdevice.html#x11AppRootWindow">x11AppRootWindow</a>()
|
||||
<li><a href="tqpaintdevice.html#x11AppScreen">x11AppScreen</a>()
|
||||
<li><a href="tqpaintdevice.html#x11AppVisual">x11AppVisual</a>()
|
||||
<li><a href="tqpaintdevice.html#x11Cells">x11Cells</a>()
|
||||
<li><a href="tqpaintdevice.html#x11Colormap">x11Colormap</a>()
|
||||
<li><a href="tqpaintdevice.html#x11DefaultColormap">x11DefaultColormap</a>()
|
||||
<li><a href="tqpaintdevice.html#x11DefaultVisual">x11DefaultVisual</a>()
|
||||
<li><a href="tqpaintdevice.html#x11Depth">x11Depth</a>()
|
||||
<li><a href="tqpaintdevice.html#x11Display">x11Display</a>()
|
||||
<li><a href="tqwidget.html#x11Event">x11Event</a>()
|
||||
<li><a href="tqpaintdevice.html#x11Screen">x11Screen</a>()
|
||||
<li><a href="tqpaintdevice.html#x11SetAppDpiX">x11SetAppDpiX</a>()
|
||||
<li><a href="tqpaintdevice.html#x11SetAppDpiY">x11SetAppDpiY</a>()
|
||||
<li><a href="tqpaintdevice.html#x11Visual">x11Visual</a>()
|
||||
<li><a href="tqwidget.html#y">y</a>()
|
||||
</ul>
|
||||
<!-- eof -->
|
||||
<p><address><hr><div align=center>
|
||||
<table width=100% cellspacing=0 border=0><tr>
|
||||
<td>Copyright © 2007
|
||||
<a href="troll.html">Trolltech</a><td align=center><a href="trademarks.html">Trademarks</a>
|
||||
<td align=right><div align=right>TQt 3.3.8</div>
|
||||
</table></div></address></body>
|
||||
</html>
|
@ -1,126 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>TQNPWidget Class</title>
|
||||
<style type="text/css"><!--
|
||||
fn { margin-left: 1cm; text-indent: -1cm; }
|
||||
a:link { color: #004faf; text-decoration: none }
|
||||
a:visited { color: #672967; text-decoration: none }
|
||||
body { background: #ffffff; color: black; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr bgcolor="#E5E5E5">
|
||||
<td valign=center>
|
||||
<a href="index.html">
|
||||
<font color="#004faf">Home</font></a>
|
||||
| <a href="classes.html">
|
||||
<font color="#004faf">All Classes</font></a>
|
||||
| <a href="mainclasses.html">
|
||||
<font color="#004faf">Main Classes</font></a>
|
||||
| <a href="annotated.html">
|
||||
<font color="#004faf">Annotated</font></a>
|
||||
| <a href="groups.html">
|
||||
<font color="#004faf">Grouped Classes</font></a>
|
||||
| <a href="functions.html">
|
||||
<font color="#004faf">Functions</font></a>
|
||||
</td>
|
||||
<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table><h1 align=center>TQNPWidget Class Reference</h1>
|
||||
|
||||
<p>The TQNPWidget class provides a TQWidget that is a web browser plugin window.
|
||||
<a href="#details">More...</a>
|
||||
<p>This class is part of the <b>TQt Netscape Extension</b>.
|
||||
<p><tt>#include <<a href="tqnp-h.html">tqnp.h</a>></tt>
|
||||
<p>Inherits <a href="tqwidget.html">TQWidget</a>.
|
||||
<p><a href="tqnpwidget-members.html">List of all member functions.</a>
|
||||
<h2>Public Members</h2>
|
||||
<ul>
|
||||
<li class=fn><a href="#TQNPWidget"><b>TQNPWidget</b></a> ()</li>
|
||||
<li class=fn><a href="#~TQNPWidget"><b>~TQNPWidget</b></a> ()</li>
|
||||
<li class=fn>virtual void <a href="#enterInstance"><b>enterInstance</b></a> ()</li>
|
||||
<li class=fn>virtual void <a href="#leaveInstance"><b>leaveInstance</b></a> ()</li>
|
||||
<li class=fn>TQNPInstance * <a href="#instance"><b>instance</b></a> ()</li>
|
||||
</ul>
|
||||
<hr><a name="details"></a><h2>Detailed Description</h2>
|
||||
<p> This class is defined in the <b>TQt <a href="netscape-plugin.html#Netscape">Netscape</a> Extension</b>, which can be found in the <tt>qt/extensions</tt> directory. It is not included in the main TQt API.
|
||||
<p>
|
||||
|
||||
The TQNPWidget class provides a <a href="tqwidget.html">TQWidget</a> that is a web browser plugin window.
|
||||
<p>
|
||||
<p> Derive from TQNPWidget to create a widget that can be used as a
|
||||
web browser plugin window, or create one and add child widgets.
|
||||
Instances of TQNPWidget may only be created when
|
||||
<a href="tqnpinstance.html#newWindow">TQNPInstance::newWindow</a>() is called by the browser.
|
||||
<p> A common way to develop a plugin widget is to develop it as a
|
||||
stand-alone application window, then make it a <em>child</em> of a
|
||||
plugin widget to use it as a browser plugin. The technique is:
|
||||
<p> <pre>
|
||||
class MyPluginWindow : public TQNPWidget
|
||||
{
|
||||
<a href="tqwidget.html">TQWidget</a>* child;
|
||||
public:
|
||||
MyPluginWindow()
|
||||
{
|
||||
// Some widget that is normally used as a top-level widget
|
||||
child = new MyIndependentlyDevelopedWidget();
|
||||
|
||||
// Use the background color of the web page
|
||||
child-><a href="tqwidget.html#setBackgroundColor">setBackgroundColor</a>( <a href="tqwidget.html#backgroundColor">backgroundColor</a>() );
|
||||
|
||||
// Fill the plugin widget
|
||||
child-><a href="tqwidget.html#setGeometry">setGeometry</a>( 0, 0, width(), height() );
|
||||
}
|
||||
|
||||
void resizeEvent(TQResizeEvent*)
|
||||
{
|
||||
// Fill the plugin widget
|
||||
child-><a href="tqwidget.html#resize">resize</a>(<a href="tqwidget.html#size">size</a>());
|
||||
}
|
||||
};
|
||||
</pre>
|
||||
|
||||
<p> The default implementation is an empty window.
|
||||
|
||||
<hr><h2>Member Function Documentation</h2>
|
||||
<h3 class=fn><a name="TQNPWidget"></a>TQNPWidget::TQNPWidget ()
|
||||
</h3>
|
||||
Creates a TQNPWidget.
|
||||
|
||||
<h3 class=fn><a name="~TQNPWidget"></a>TQNPWidget::~TQNPWidget ()
|
||||
</h3>
|
||||
Destroys the window. This will be called by the plugin binding
|
||||
code when the window is no longer required. The web browser will
|
||||
delete windows when they leave the page. The bindings will change
|
||||
the <a href="tqwidget.html#winId">TQWidget::winId</a>() of the window when the window is resized, but
|
||||
this should not affect normal widget behavior.
|
||||
|
||||
<h3 class=fn>void <a name="enterInstance"></a>TQNPWidget::enterInstance ()<tt> [virtual]</tt>
|
||||
</h3>
|
||||
Called when the mouse enters the plugin window. Does nothing by
|
||||
default.
|
||||
|
||||
<p>Example: <a href="grapher-nsplugin-example.html#x2753">grapher/grapher.cpp</a>.
|
||||
<h3 class=fn><a href="tqnpinstance.html">TQNPInstance</a> * <a name="instance"></a>TQNPWidget::instance ()
|
||||
</h3>
|
||||
Returns the instance for which this widget is the plugin window.
|
||||
|
||||
<h3 class=fn>void <a name="leaveInstance"></a>TQNPWidget::leaveInstance ()<tt> [virtual]</tt>
|
||||
</h3>
|
||||
Called when the mouse leaves the plugin window. Does nothing by
|
||||
default.
|
||||
|
||||
<p>Example: <a href="grapher-nsplugin-example.html#x2754">grapher/grapher.cpp</a>.
|
||||
<!-- eof -->
|
||||
<hr><p>
|
||||
This file is part of the <a href="index.html">TQt toolkit</a>.
|
||||
Copyright © 1995-2007
|
||||
<a href="http://www.trolltech.com/">Trolltech</a>. All Rights Reserved.<p><address><hr><div align=center>
|
||||
<table width=100% cellspacing=0 border=0><tr>
|
||||
<td>Copyright © 2007
|
||||
<a href="troll.html">Trolltech</a><td align=center><a href="trademarks.html">Trademarks</a>
|
||||
<td align=right><div align=right>TQt 3.3.8</div>
|
||||
</table></div></address></body>
|
||||
</html>
|
@ -1,125 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!-- /home/espenr/tmp/qt-3.3.8-espenr-2499/qt-x11-free-3.3.8/extensions/nsplugin/examples/trivial/trivial.doc:1 -->
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>Trivial Example</title>
|
||||
<style type="text/css"><!--
|
||||
fn { margin-left: 1cm; text-indent: -1cm; }
|
||||
a:link { color: #004faf; text-decoration: none }
|
||||
a:visited { color: #672967; text-decoration: none }
|
||||
body { background: #ffffff; color: black; }
|
||||
--></style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr bgcolor="#E5E5E5">
|
||||
<td valign=center>
|
||||
<a href="index.html">
|
||||
<font color="#004faf">Home</font></a>
|
||||
| <a href="classes.html">
|
||||
<font color="#004faf">All Classes</font></a>
|
||||
| <a href="mainclasses.html">
|
||||
<font color="#004faf">Main Classes</font></a>
|
||||
| <a href="annotated.html">
|
||||
<font color="#004faf">Annotated</font></a>
|
||||
| <a href="groups.html">
|
||||
<font color="#004faf">Grouped Classes</font></a>
|
||||
| <a href="functions.html">
|
||||
<font color="#004faf">Functions</font></a>
|
||||
</td>
|
||||
<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table><h1 align=center>Trivial Example</h1>
|
||||
|
||||
|
||||
|
||||
<p> This example is trivial, and thus useful for
|
||||
investigating problems you might have installing the
|
||||
extension.
|
||||
<p> To build the example, you must first build the
|
||||
<a href="netscape-plugin.html">TQt Netscape Plugin Extension</a> library.
|
||||
Then type <tt>make</tt> in <tt>extensions/nsplugin/examples/trivial/</tt>
|
||||
and copy the resulting <tt>trivial.so</tt> or <tt>nptrivial.dll</tt>
|
||||
to the Plugins directory of your WWW browser.
|
||||
<p> <EMBED TYPE=trivial/very WIDTH=100 HEIGHT=100>
|
||||
<p> <hr>
|
||||
Implementation:
|
||||
<p> <pre>// TQt stuff
|
||||
#include "tqnp.h"
|
||||
#include <<a href="tqpainter-h.html">tqpainter.h</a>>
|
||||
#include <<a href="tqmessagebox-h.html">tqmessagebox.h</a>>
|
||||
|
||||
class Trivial : public <a href="tqnpwidget.html">TQNPWidget</a> {
|
||||
<a href="metaobjects.html#TQ_OBJECT">TQ_OBJECT</a>
|
||||
public:
|
||||
void mouseReleaseEvent(TQMouseEvent* event)
|
||||
{
|
||||
<a name="x2736"></a> TQMessageBox::<a href="tqmessagebox.html#aboutTQt">aboutTQt</a>(this);
|
||||
}
|
||||
|
||||
void paintEvent(TQPaintEvent* event)
|
||||
{
|
||||
<a href="tqpainter.html">TQPainter</a> p(this);
|
||||
<a name="x2739"></a> p.<a href="tqpainter.html#setClipRect">setClipRect</a>(event->rect());
|
||||
int w = width();
|
||||
<a name="x2737"></a> p.<a href="tqpainter.html#drawRect">drawRect</a>(rect());
|
||||
<a name="x2738"></a> p.<a href="tqpainter.html#drawText">drawText</a>(w/8, 0, w-w/4, height(), AlignCenter|WordBreak, "Trivial!");
|
||||
}
|
||||
};
|
||||
|
||||
class TrivialInstance : public <a href="tqnpinstance.html">TQNPInstance</a> {
|
||||
TQ_OBJECT
|
||||
public:
|
||||
<a href="tqnpwidget.html">TQNPWidget</a>* newWindow()
|
||||
{
|
||||
return new Trivial;
|
||||
}
|
||||
|
||||
void print(TQPainter* p)
|
||||
{
|
||||
p-><a href="tqpainter.html#drawText">drawText</a>(0,0,"Hello");
|
||||
}
|
||||
};
|
||||
|
||||
class TrivialPlugin : public <a href="tqnplugin.html">TQNPlugin</a> {
|
||||
public:
|
||||
<a href="tqnpinstance.html">TQNPInstance</a>* newInstance()
|
||||
{
|
||||
return new TrivialInstance;
|
||||
}
|
||||
|
||||
const char* getMIMEDescription() const
|
||||
{
|
||||
return "trivial/very:xxx:Trivial and useless";
|
||||
}
|
||||
|
||||
const char * getPluginNameString() const
|
||||
{
|
||||
return "Trivial TQt-based Plugin";
|
||||
}
|
||||
|
||||
const char * getPluginDescriptionString() const
|
||||
{
|
||||
return "A TQt-based LiveConnected plug-in that does nothing";
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
TQNPlugin* TQNPlugin::create()
|
||||
{
|
||||
return new TrivialPlugin;
|
||||
}
|
||||
|
||||
#include "trivial.moc"
|
||||
</pre>
|
||||
|
||||
<p>See also <a href="nsplugin-examples.html">Netscape Plugin Examples</a>.
|
||||
|
||||
<!-- eof -->
|
||||
<p><address><hr><div align=center>
|
||||
<table width=100% cellspacing=0 border=0><tr>
|
||||
<td>Copyright © 2007
|
||||
<a href="troll.html">Trolltech</a><td align=center><a href="trademarks.html">Trademarks</a>
|
||||
<td align=right><div align=right>TQt 3.3.8</div>
|
||||
</table></div></address></body>
|
||||
</html>
|
@ -1 +0,0 @@
|
||||
.so man3/tqnpinstance.3qt
|
@ -1 +0,0 @@
|
||||
.so man3/tqnpstream.3qt
|
@ -1 +0,0 @@
|
||||
.so man3/tqnpwidget.3qt
|
@ -1 +0,0 @@
|
||||
.so man3/tqnplugin.3qt
|
@ -1,290 +0,0 @@
|
||||
'\" t
|
||||
.TH TQNPInstance 3qt "2 February 2007" "Trolltech AS" \" -*- nroff -*-
|
||||
.\" Copyright 1992-2007 Trolltech ASA. All rights reserved. See the
|
||||
.\" license file included in the distribution for a complete license
|
||||
.\" statement.
|
||||
.\"
|
||||
.ad l
|
||||
.nh
|
||||
.SH NAME
|
||||
TQNPInstance \- TQObject that is a web browser plugin
|
||||
.SH SYNOPSIS
|
||||
This class is part of the \fBQt Netscape Extension\fR.
|
||||
.PP
|
||||
\fC#include <tqnp.h>\fR
|
||||
.PP
|
||||
Inherits TQObject.
|
||||
.PP
|
||||
.SS "Public Members"
|
||||
.in +1c
|
||||
.ti -1c
|
||||
.BI "\fB~TQNPInstance\fR ()"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "int \fBargc\fR () const"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "const char * \fBargn\fR ( int i ) const"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "const char * \fBargv\fR ( int i ) const"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "enum \fBReason\fR { ReasonDone = 0, ReasonBreak = 1, ReasonError = 2, ReasonUnknown = -1 }"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "const char * \fBarg\fR ( const char * name ) const"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "enum \fBInstanceMode\fR { Embed = 1, Full = 2, Background = 3 }"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "InstanceMode \fBmode\fR () const"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "const char * \fBuserAgent\fR () const"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "virtual TQNPWidget * \fBnewWindow\fR ()"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "TQNPWidget * \fBwidget\fR ()"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "enum \fBStreamMode\fR { Normal = 1, Seek = 2, AsFile = 3, AsFileOnly = 4 }"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "virtual bool \fBnewStreamCreated\fR ( TQNPStream *, StreamMode & smode )"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "virtual int \fBwriteReady\fR ( TQNPStream * )"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "virtual int \fBwrite\fR ( TQNPStream *, int offset, int len, void * buffer )"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "virtual void \fBstreamDestroyed\fR ( TQNPStream * )"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "void \fBstatus\fR ( const char * msg )"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "void \fBgetURLNotify\fR ( const char * url, const char * window = 0, void * data = 0 )"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "void \fBgetURL\fR ( const char * url, const char * window = 0 )"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "void \fBpostURL\fR ( const char * url, const char * window, uint len, const char * buf, bool file )"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "TQNPStream * \fBnewStream\fR ( const char * mimetype, const char * window, bool as_file = FALSE )"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "virtual void \fBstreamAsFile\fR ( TQNPStream *, const char * fname )"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "void * \fBgetJavaPeer\fR () const"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "virtual void \fBnotifyURL\fR ( const char * url, Reason r, void * notifyData )"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "virtual bool \fBprintFullPage\fR ()"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "virtual void \fBprint\fR ( TQPainter * )"
|
||||
.br
|
||||
.in -1c
|
||||
.SS "Protected Members"
|
||||
.in +1c
|
||||
.ti -1c
|
||||
.BI "\fBTQNPInstance\fR ()"
|
||||
.br
|
||||
.in -1c
|
||||
.SH DESCRIPTION
|
||||
This class is defined in the \fBQt Netscape Extension\fR, which can be found in the \fCqt/extensions\fR directory. It is not included in the main TQt API.
|
||||
.PP
|
||||
The TQNPInstance class provides a TQObject that is a web browser plugin.
|
||||
.PP
|
||||
Deriving from TQNPInstance creates an object that represents a single \fC<EMBED>\fR tag in an HTML document.
|
||||
.PP
|
||||
The TQNPInstance is responsible for creating an appropriate TQNPWidget window if required (not all plugins have windows), and for interacting with the input/output facilities intrinsic to plugins.
|
||||
.PP
|
||||
Note that there is \fIabsolutely no guarantee\fR regarding the order in which functions are called. Sometimes the browser will call newWindow() first, at other times, newStreamCreated() will be called first (assuming the \fC<EMBED>\fR tag has a SRC parameter).
|
||||
.PP
|
||||
\fINone of Qt's GUI functionality\fR may be used until after the first call to newWindow(). This includes any use of TQPaintDevice (i.e. TQPixmap, TQWidget, and all subclasses), QApplication, anything related to TQPainter (TQBrush, etc.), fonts, TQMovie, TQToolTip, etc. Useful classes which specifically \fIcan\fR be used are TQImage, TQFile, and TQBuffer.
|
||||
.PP
|
||||
This restriction can easily be accommodated by structuring your plugin so that the task of the TQNPInstance is to gather data, while the task of the TQNPWidget is to provide a graphical interface to that data.
|
||||
.SS "Member Type Documentation"
|
||||
.SH "TQNPInstance::InstanceMode"
|
||||
This enum type provides Qt-style names for three #defines in \fCnpapi.h\fR:
|
||||
.TP
|
||||
\fCTQNPInstance::Embed\fR - corresponds to NP_EMBED
|
||||
.TP
|
||||
\fCTQNPInstance::Full\fR - corresponds to NP_FULL
|
||||
.TP
|
||||
\fCTQNPInstance::Background\fR - corresponds to NP_BACKGROUND
|
||||
.SH "TQNPInstance::Reason"
|
||||
.TP
|
||||
\fCTQNPInstance::ReasonDone\fR
|
||||
.TP
|
||||
\fCTQNPInstance::ReasonBreak\fR
|
||||
.TP
|
||||
\fCTQNPInstance::ReasonError\fR
|
||||
.TP
|
||||
\fCTQNPInstance::ReasonUnknown\fR
|
||||
.SH "TQNPInstance::StreamMode"
|
||||
.TP
|
||||
\fCTQNPInstance::Normal\fR
|
||||
.TP
|
||||
\fCTQNPInstance::Seek\fR
|
||||
.TP
|
||||
\fCTQNPInstance::AsFile\fR
|
||||
.TP
|
||||
\fCTQNPInstance::AsFileOnly\fR
|
||||
.SH MEMBER FUNCTION DOCUMENTATION
|
||||
.SH "TQNPInstance::TQNPInstance ()\fC [protected]\fR"
|
||||
Creates a TQNPInstance.
|
||||
.PP
|
||||
Can only be called from within a derived class created within TQNPlugin::newInstance().
|
||||
.SH "TQNPInstance::~TQNPInstance ()"
|
||||
Called when the plugin instance is about to be deleted.
|
||||
.SH "const char * TQNPInstance::arg ( const char * name ) const"
|
||||
Returns the value of the named arguments, or 0 if no argument called \fIname\fR appears in the \fC<EMBED>\fR tag of this instance. If the argument appears, but has no value assigned, the empty string is returned. In summary:
|
||||
.PP
|
||||
<center>.nf
|
||||
.TS
|
||||
l
|
||||
-
|
||||
l.
|
||||
Tag Result
|
||||
arg("FOO") == 0
|
||||
arg("FOO") == ""
|
||||
|
||||
.TE
|
||||
.fi
|
||||
</center>
|
||||
.SH "int TQNPInstance::argc () const"
|
||||
Returns the number of arguments to the instance. Note that you should not normally rely on the ordering of arguments, and note that the SGML specification does not permit multiple arguments with the same name.
|
||||
.PP
|
||||
See also arg() and argn().
|
||||
.SH "const char * TQNPInstance::argn ( int i ) const"
|
||||
Returns the name of the \fIi\fR-th argument.
|
||||
.PP
|
||||
See also argc() and argv().
|
||||
.SH "const char * TQNPInstance::argv ( int i ) const"
|
||||
Returns the value of the \fIi\fR-th argument.
|
||||
.PP
|
||||
\\as argc(), arg()
|
||||
.SH "void * TQNPInstance::getJavaPeer () const"
|
||||
Returns the Java object associated with the plugin instance, an object of the plugin's Java class, or 0 if the plug-in does not have a Java class, Java is disabled, or an error occurred.
|
||||
.PP
|
||||
The return value is actually a \fCjref\fR we use \fCvoid*\fR so as to avoid burdening plugins which do not require Java.
|
||||
.PP
|
||||
See also TQNPlugin::getJavaClass() and TQNPlugin::getJavaEnv().
|
||||
.SH "void TQNPInstance::getURL ( const char * url, const char * window = 0 )"
|
||||
Requests that the \fIurl\fR be retrieved and sent to the named \fIwindow\fR. See Netscape's JavaScript documentation for an explanation of window names.
|
||||
.SH "void TQNPInstance::getURLNotify ( const char * url, const char * window = 0, void * data = 0 )"
|
||||
Requests that the given \fIurl\fR be retrieved and sent to the named \fIwindow\fR. See Netscape's JavaScript documentation for an explanation of window names. Passes the arguments including \fIdata\fR to NPN_GetURLNotify.
|
||||
.PP
|
||||
Netscape: NPN_GetURLNotify method
|
||||
.SH "InstanceMode TQNPInstance::mode () const"
|
||||
Returns the mode of the plugin.
|
||||
.SH "TQNPStream * TQNPInstance::newStream ( const char * mimetype, const char * window, bool as_file = FALSE )"
|
||||
\fBThis function is under development and is subject to change.\fR
|
||||
.PP
|
||||
This function is \fInot tested\fR.
|
||||
.PP
|
||||
Requests the creation of a new data stream \fIfrom\fR the plugin. The MIME type and window are passed in \fImimetype\fR and \fIwindow\fR. \fIas_file\fR holds the AsFileOnly flag. It is an interface to the NPN_NewStream function of the Netscape Plugin API.
|
||||
.SH "bool TQNPInstance::newStreamCreated ( TQNPStream *, StreamMode & smode )\fC [virtual]\fR"
|
||||
This function is called when a new stream has been created. The instance should return TRUE if it accepts the processing of the stream. If the instance requires the stream as a file, it should set \fIsmode\fR to AsFileOnly, in which case the data will be delivered some time later to the streamAsFile() function. Otherwise, the data will be delivered in chunks to the write() function, which must consume at least as much data as returned by the most recent call to writeReady().
|
||||
.PP
|
||||
Note that the AsFileOnly method is not supported by Netscape 2.0 and MSIE 3.0.
|
||||
.PP
|
||||
The default implementation accepts any stream.
|
||||
.SH "TQNPWidget * TQNPInstance::newWindow ()\fC [virtual]\fR"
|
||||
Called at most once, at some time after the TQNPInstance is created. If the plugin requires a window, this function should return a derived class of TQNPWidget that provides the required interface.
|
||||
.PP
|
||||
Example: grapher/grapher.cpp.
|
||||
.SH "void TQNPInstance::notifyURL ( const char * url, Reason r, void * notifyData )\fC [virtual]\fR"
|
||||
\fBThis function is under development and is subject to change.\fR
|
||||
.PP
|
||||
This function is \fInot tested\fR.
|
||||
.PP
|
||||
Called whenever a \fIurl\fR is notified after a call to NPN_GetURLNotify with \fInotifyData\fR. The reason is given in \fIr\fR.
|
||||
.PP
|
||||
It is an encapsulation of the NPP_URLNotify function of the Netscape Plugin API.
|
||||
.PP
|
||||
See also: Netscape: NPP_URLNotify method
|
||||
.SH "void TQNPInstance::postURL ( const char * url, const char * window, uint len, const char * buf, bool file )"
|
||||
\fBThis function is under development and is subject to change.\fR
|
||||
.PP
|
||||
This function is \fInot tested\fR.
|
||||
.PP
|
||||
It is an interface to the NPN_PostURL function of the Netscape Plugin API.
|
||||
.PP
|
||||
Passes \fIurl\fR, \fIwindow\fR, \fIbuf\fR, \fIlen\fR, and \fIfile\fR to NPN_PostURL.
|
||||
.SH "void TQNPInstance::print ( TQPainter * )\fC [virtual]\fR"
|
||||
\fBThis function is under development and is subject to change.\fR
|
||||
.PP
|
||||
This function is \fInot tested\fR.
|
||||
.PP
|
||||
Print the instance embedded in a page.
|
||||
.PP
|
||||
It is an encapsulation of the NPP_Print function of the Netscape Plugin API.
|
||||
.SH "bool TQNPInstance::printFullPage ()\fC [virtual]\fR"
|
||||
\fBThis function is under development and is subject to change.\fR
|
||||
.PP
|
||||
This function is \fInot tested\fR.
|
||||
.PP
|
||||
It is an encapsulation of the NPP_Print function of the Netscape Plugin API.
|
||||
.SH "void TQNPInstance::status ( const char * msg )"
|
||||
Sets the status message in the browser containing this instance to \fImsg\fR.
|
||||
.SH "void TQNPInstance::streamAsFile ( TQNPStream *, const char * fname )\fC [virtual]\fR"
|
||||
Called when a stream is delivered as a single file called \fIfname\fR rather than as chunks. This may be simpler for a plugin to deal with, but precludes any incremental behavior.
|
||||
.PP
|
||||
Note that the AsFileOnly method is not supported by Netscape 2.0 and MSIE 3.0.
|
||||
.PP
|
||||
See also newStreamCreated() and newStream().
|
||||
.SH "void TQNPInstance::streamDestroyed ( TQNPStream * )\fC [virtual]\fR"
|
||||
Called when a stream is destroyed. At this point, the stream may be complete() and okay(). If it is not okay(), then an error has occurred. If it is okay(), but not complete(), then the user has cancelled the transmission; do not give an error message in this case.
|
||||
.SH "const char * TQNPInstance::userAgent () const"
|
||||
Returns the user agent (browser name) containing this instance.
|
||||
.SH "TQNPWidget * TQNPInstance::widget ()"
|
||||
Returns the plugin window created by newWindow(), if any.
|
||||
.SH "int TQNPInstance::write ( TQNPStream *, int offset, int len, void * buffer )\fC [virtual]\fR"
|
||||
Called when incoming data is available for processing by the instance. The instance \fImust\fR consume at least the amount that it returned in the most recent call to writeReady(), but it may consume up to the amount given by \fIlen\fR. \fIbuffer\fR is the data available for consumption. The \fIoffset\fR argument is merely an informational value indicating the total amount of data that has been consumed in prior calls.
|
||||
.PP
|
||||
This function should return the amount of data actually consumed.
|
||||
.PP
|
||||
Example: grapher/grapher.cpp.
|
||||
.SH "int TQNPInstance::writeReady ( TQNPStream * )\fC [virtual]\fR"
|
||||
Returns the minimum amount of data the instance is willing to receive from the given stream.
|
||||
.PP
|
||||
The default returns a very large value.
|
||||
|
||||
.SH "SEE ALSO"
|
||||
.BR http://doc.trolltech.com/tqnpinstance.html
|
||||
.BR http://www.trolltech.com/faq/tech.html
|
||||
.SH COPYRIGHT
|
||||
Copyright 1992-2007 Trolltech ASA, http://www.trolltech.com. See the
|
||||
license file included in the distribution for a complete license
|
||||
statement.
|
||||
.SH AUTHOR
|
||||
Generated automatically from the source code.
|
||||
.SH BUGS
|
||||
If you find a bug in Qt, please report it as described in
|
||||
.BR http://doc.trolltech.com/bughowto.html .
|
||||
Good bug reports help us to help you. Thank you.
|
||||
.P
|
||||
The definitive TQt documentation is provided in HTML format; it is
|
||||
located at $TQTDIR/doc/html and can be read using TQt Assistant or with
|
||||
a web browser. This man page is provided as a convenience for those
|
||||
users who prefer man pages, although this format is not officially
|
||||
supported by Trolltech.
|
||||
.P
|
||||
If you find errors in this manual page, please report them to
|
||||
.BR qt-bugs@trolltech.com .
|
||||
Please include the name of the manual page (tqnpinstance.3qt) and the Qt
|
||||
version (3.3.8).
|
@ -1,157 +0,0 @@
|
||||
'\" t
|
||||
.TH TQNPlugin 3qt "2 February 2007" "Trolltech AS" \" -*- nroff -*-
|
||||
.\" Copyright 1992-2007 Trolltech ASA. All rights reserved. See the
|
||||
.\" license file included in the distribution for a complete license
|
||||
.\" statement.
|
||||
.\"
|
||||
.ad l
|
||||
.nh
|
||||
.SH NAME
|
||||
TQNPlugin \- The main factory for plugin objects
|
||||
.SH SYNOPSIS
|
||||
This class is part of the \fBQt Netscape Extension\fR.
|
||||
.PP
|
||||
\fC#include <tqnp.h>\fR
|
||||
.PP
|
||||
.SS "Public Members"
|
||||
.in +1c
|
||||
.ti -1c
|
||||
.BI "virtual \fB~TQNPlugin\fR ()"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "void \fBgetVersionInfo\fR ( int & plugin_major, int & plugin_minor, int & browser_major, int & browser_minor )"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "virtual TQNPInstance * \fBnewInstance\fR () = 0"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "virtual const char * \fBgetMIMEDescription\fR () const = 0"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "virtual const char * \fBgetPluginNameString\fR () const = 0"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "virtual const char * \fBgetPluginDescriptionString\fR () const = 0"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "virtual void * \fBgetJavaClass\fR ()"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "virtual void \fBunuseJavaClass\fR ()"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "void * \fBgetJavaEnv\fR () const"
|
||||
.br
|
||||
.in -1c
|
||||
.SS "Static Public Members"
|
||||
.in +1c
|
||||
.ti -1c
|
||||
.BI "TQNPlugin * \fBcreate\fR ()"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "TQNPlugin * \fBactual\fR ()"
|
||||
.br
|
||||
.in -1c
|
||||
.SS "Protected Members"
|
||||
.in +1c
|
||||
.ti -1c
|
||||
.BI "\fBTQNPlugin\fR ()"
|
||||
.br
|
||||
.in -1c
|
||||
.SH DESCRIPTION
|
||||
This class is defined in the \fBQt Netscape Extension\fR, which can be found in the \fCqt/extensions\fR directory. It is not included in the main TQt API.
|
||||
.PP
|
||||
The TQNPlugin class provides the main factory for plugin objects.
|
||||
.PP
|
||||
This class is the heart of the plugin. One instance of this object is created when the plugin is \fIfirst\fR needed, by calling TQNPlugin::create(), which must be implemented in your plugin code to return some derived class of TQNPlugin. The one TQNPlugin object creates all TQNPInstance instances for a web browser running in a single process.
|
||||
.PP
|
||||
Additionally, if TQt is linked to the plugin as a dynamic library, only one instance of QApplication will exist \fIacross all plugins that have been made with Qt\fR. So, your plugin should tread lightly on global settings. Do not, for example, use QApplication::setFont() - that will change the font in every widget of every Qt-based plugin currently loaded!
|
||||
.SH MEMBER FUNCTION DOCUMENTATION
|
||||
.SH "TQNPlugin::TQNPlugin ()\fC [protected]\fR"
|
||||
Creates a TQNPlugin. This may only be used by the constructor of the class, derived from TQNPlugin, that is returned by your plugin's implementation of the TQNPlugin::create() function.
|
||||
.SH "TQNPlugin::~TQNPlugin ()\fC [virtual]\fR"
|
||||
Destroys the TQNPlugin. This is called by the plugin binding code just before the plugin is about to be unloaded from memory. If newWindow() has been called, a QApplication will still exist at this time, but will be deleted shortly after, just before the plugin is deleted.
|
||||
.SH "TQNPlugin * TQNPlugin::actual ()\fC [static]\fR"
|
||||
Returns the plugin most recently returned by TQNPlugin::create().
|
||||
.SH "TQNPlugin * TQNPlugin::create ()\fC [static]\fR"
|
||||
This function must be implemented by your plugin code. It should return a derived class of TQNPlugin.
|
||||
.SH "void * TQNPlugin::getJavaClass ()\fC [virtual]\fR"
|
||||
Override this function to return a reference to the Java class that represents the plugin. The default returns 0, indicating no class.
|
||||
.PP
|
||||
If you override this class, you must also override TQNPlugin::unuseJavaClass().
|
||||
.PP
|
||||
The return value is actually a \fCjref\fR; we use \fCvoid*\fR so as to avoid burdening plugins which do not require Java.
|
||||
.PP
|
||||
See also getJavaEnv() and TQNPInstance::getJavaPeer().
|
||||
.SH "void * TQNPlugin::getJavaEnv () const"
|
||||
Returns a pointer to the Java execution environment, or 0 if either Java is disabled or an error occurred.
|
||||
.PP
|
||||
The return value is actually a \fCJRIEnv*\fR; we use \fCvoid*\fR so as to avoid burdening plugins which do not require Java.
|
||||
.PP
|
||||
See also getJavaClass() and TQNPInstance::getJavaPeer().
|
||||
.SH "const char * TQNPlugin::getMIMEDescription () const\fC [pure virtual]\fR"
|
||||
Override this function to return the MIME description of the data formats supported by your plugin. The format of this string is shown by the following example:
|
||||
.PP
|
||||
.nf
|
||||
.br
|
||||
const char* getMIMEDescription() const
|
||||
.br
|
||||
{
|
||||
.br
|
||||
return "image/x-png:png:PNG Image;"
|
||||
.br
|
||||
"image/png:png:PNG Image;"
|
||||
.br
|
||||
"image/x-portable-bitmap:pbm:PBM Image;"
|
||||
.br
|
||||
"image/x-portable-graymap:pgm:PGM Image;"
|
||||
.br
|
||||
"image/x-portable-pixmap:ppm:PPM Image;"
|
||||
.br
|
||||
"image/bmp:bmp:BMP Image;"
|
||||
.br
|
||||
"image/x-ms-bmp:bmp:BMP Image;"
|
||||
.br
|
||||
"image/x-xpixmap:xpm:XPM Image;"
|
||||
.br
|
||||
"image/xpm:xpm:XPM Image";
|
||||
.br
|
||||
}
|
||||
.fi
|
||||
.SH "const char * TQNPlugin::getPluginDescriptionString () const\fC [pure virtual]\fR"
|
||||
Returns a pointer to the plain-text description of the plugin.
|
||||
.SH "const char * TQNPlugin::getPluginNameString () const\fC [pure virtual]\fR"
|
||||
Returns a pointer to the plain-text name of the plugin.
|
||||
.SH "void TQNPlugin::getVersionInfo ( int & plugin_major, int & plugin_minor, int & browser_major, int & browser_minor )"
|
||||
Populates \fI*\fR\fIplugin_major\fR and \fI*\fR\fIplugin_minor\fR with the version of the plugin API and populates \fI*\fR\fIbrowser_major\fR and \fI*\fR\fIbrowser_minor\fR with the version of the web browser.
|
||||
.SH "TQNPInstance * TQNPlugin::newInstance ()\fC [pure virtual]\fR"
|
||||
Override this function to return an appropriate derived class of TQNPInstance.
|
||||
.SH "void TQNPlugin::unuseJavaClass ()\fC [virtual]\fR"
|
||||
This function is called when the plugin is shutting down. The
|
||||
function should \fIunuse\fR the Java class returned earlier by
|
||||
getJavaClass().
|
||||
|
||||
.SH "SEE ALSO"
|
||||
.BR http://doc.trolltech.com/tqnplugin.html
|
||||
.BR http://www.trolltech.com/faq/tech.html
|
||||
.SH COPYRIGHT
|
||||
Copyright 1992-2007 Trolltech ASA, http://www.trolltech.com. See the
|
||||
license file included in the distribution for a complete license
|
||||
statement.
|
||||
.SH AUTHOR
|
||||
Generated automatically from the source code.
|
||||
.SH BUGS
|
||||
If you find a bug in Qt, please report it as described in
|
||||
.BR http://doc.trolltech.com/bughowto.html .
|
||||
Good bug reports help us to help you. Thank you.
|
||||
.P
|
||||
The definitive TQt documentation is provided in HTML format; it is
|
||||
located at $TQTDIR/doc/html and can be read using TQt Assistant or with
|
||||
a web browser. This man page is provided as a convenience for those
|
||||
users who prefer man pages, although this format is not officially
|
||||
supported by Trolltech.
|
||||
.P
|
||||
If you find errors in this manual page, please report them to
|
||||
.BR qt-bugs@trolltech.com .
|
||||
Please include the name of the manual page (tqnplugin.3qt) and the Qt
|
||||
version (3.3.8).
|
@ -1,114 +0,0 @@
|
||||
'\" t
|
||||
.TH TQNPStream 3qt "2 February 2007" "Trolltech AS" \" -*- nroff -*-
|
||||
.\" Copyright 1992-2007 Trolltech ASA. All rights reserved. See the
|
||||
.\" license file included in the distribution for a complete license
|
||||
.\" statement.
|
||||
.\"
|
||||
.ad l
|
||||
.nh
|
||||
.SH NAME
|
||||
TQNPStream \- Stream of data provided to a TQNPInstance by the browser
|
||||
.SH SYNOPSIS
|
||||
This class is part of the \fBQt Netscape Extension\fR.
|
||||
.PP
|
||||
\fC#include <tqnp.h>\fR
|
||||
.PP
|
||||
.SS "Public Members"
|
||||
.in +1c
|
||||
.ti -1c
|
||||
.BI "\fB~TQNPStream\fR ()"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "const char * \fBurl\fR () const"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "uint \fBend\fR () const"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "uint \fBlastModified\fR () const"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "const char * \fBtype\fR () const"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "bool \fBseekable\fR () const"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "bool \fBokay\fR () const"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "bool \fBcomplete\fR () const"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "void \fBrequestRead\fR ( int offset, uint length )"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "int \fBwrite\fR ( int len, void * buffer )"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "TQNPInstance * \fBinstance\fR ()"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "\fBTQNPStream\fR ( TQNPInstance * in, const char * mt, _NPStream * st, bool se )"
|
||||
.br
|
||||
.in -1c
|
||||
.SH DESCRIPTION
|
||||
This class is defined in the \fBQt Netscape Extension\fR, which can be found in the \fCqt/extensions\fR directory. It is not included in the main TQt API.
|
||||
.PP
|
||||
The TQNPStream class provides a stream of data provided to a TQNPInstance by the browser.
|
||||
.PP
|
||||
Note that this is neither a TQTextStream nor a TQDataStream.
|
||||
.PP
|
||||
See also TQNPInstance::write() and TQNPInstance::newStreamCreated().
|
||||
.SH MEMBER FUNCTION DOCUMENTATION
|
||||
.SH "TQNPStream::TQNPStream ( TQNPInstance * in, const char * mt, _NPStream * st, bool se )"
|
||||
Creates a stream. Plugins should not call this; they should call TQNPInstance::newStream() if they need a stream.
|
||||
.PP
|
||||
Takes a TQNPInstance \fIin\fR, MIME type \fImt\fR, a pointer to an _NPStream \fIst\fR and a seekable flag \fIse\fR.
|
||||
.SH "TQNPStream::~TQNPStream ()"
|
||||
Destroys the stream.
|
||||
.SH "bool TQNPStream::complete () const"
|
||||
Returns TRUE if the stream has received all the data from the source; otherwise returns FALSE.
|
||||
.SH "uint TQNPStream::end () const"
|
||||
Returns the length of the stream in bytes. The function might return 0 for streams of unknown length.
|
||||
.SH "TQNPInstance * TQNPStream::instance ()"
|
||||
Returns the TQNPInstance for which this stream was created.
|
||||
.SH "uint TQNPStream::lastModified () const"
|
||||
Returns the time when the source of the stream was last modified.
|
||||
.SH "bool TQNPStream::okay () const"
|
||||
Returns TRUE if no errors have occurred on the stream; otherwise returns FALSE.
|
||||
.SH "void TQNPStream::requestRead ( int offset, uint length )"
|
||||
Requests the section of the stream, of \fIlength\fR bytes from \fIoffset\fR, be sent to the TQNPInstance::write() function of the instance() of this stream.
|
||||
.SH "bool TQNPStream::seekable () const"
|
||||
Returns TRUE if the stream is seekable; otherwise returns FALSE.
|
||||
.SH "const char * TQNPStream::type () const"
|
||||
Returns the MIME type of the stream.
|
||||
.SH "const char * TQNPStream::url () const"
|
||||
Returns the URL from which the stream was created.
|
||||
.SH "int TQNPStream::write ( int len, void * buffer )"
|
||||
Writes \fIlen\fR bytes from \fIbuffer\fR \fIto\fR the stream.
|
||||
|
||||
.SH "SEE ALSO"
|
||||
.BR http://doc.trolltech.com/tqnpstream.html
|
||||
.BR http://www.trolltech.com/faq/tech.html
|
||||
.SH COPYRIGHT
|
||||
Copyright 1992-2007 Trolltech ASA, http://www.trolltech.com. See the
|
||||
license file included in the distribution for a complete license
|
||||
statement.
|
||||
.SH AUTHOR
|
||||
Generated automatically from the source code.
|
||||
.SH BUGS
|
||||
If you find a bug in Qt, please report it as described in
|
||||
.BR http://doc.trolltech.com/bughowto.html .
|
||||
Good bug reports help us to help you. Thank you.
|
||||
.P
|
||||
The definitive TQt documentation is provided in HTML format; it is
|
||||
located at $TQTDIR/doc/html and can be read using TQt Assistant or with
|
||||
a web browser. This man page is provided as a convenience for those
|
||||
users who prefer man pages, although this format is not officially
|
||||
supported by Trolltech.
|
||||
.P
|
||||
If you find errors in this manual page, please report them to
|
||||
.BR qt-bugs@trolltech.com .
|
||||
Please include the name of the manual page (tqnpstream.3qt) and the Qt
|
||||
version (3.3.8).
|
@ -1,129 +0,0 @@
|
||||
'\" t
|
||||
.TH TQNPWidget 3qt "2 February 2007" "Trolltech AS" \" -*- nroff -*-
|
||||
.\" Copyright 1992-2007 Trolltech ASA. All rights reserved. See the
|
||||
.\" license file included in the distribution for a complete license
|
||||
.\" statement.
|
||||
.\"
|
||||
.ad l
|
||||
.nh
|
||||
.SH NAME
|
||||
TQNPWidget \- TQWidget that is a web browser plugin window
|
||||
.SH SYNOPSIS
|
||||
This class is part of the \fBQt Netscape Extension\fR.
|
||||
.PP
|
||||
\fC#include <tqnp.h>\fR
|
||||
.PP
|
||||
Inherits TQWidget.
|
||||
.PP
|
||||
.SS "Public Members"
|
||||
.in +1c
|
||||
.ti -1c
|
||||
.BI "\fBTQNPWidget\fR ()"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "\fB~TQNPWidget\fR ()"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "virtual void \fBenterInstance\fR ()"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "virtual void \fBleaveInstance\fR ()"
|
||||
.br
|
||||
.ti -1c
|
||||
.BI "TQNPInstance * \fBinstance\fR ()"
|
||||
.br
|
||||
.in -1c
|
||||
.SH DESCRIPTION
|
||||
This class is defined in the \fBQt Netscape Extension\fR, which can be found in the \fCqt/extensions\fR directory. It is not included in the main TQt API.
|
||||
.PP
|
||||
The TQNPWidget class provides a TQWidget that is a web browser plugin window.
|
||||
.PP
|
||||
Derive from TQNPWidget to create a widget that can be used as a web browser plugin window, or create one and add child widgets. Instances of TQNPWidget may only be created when TQNPInstance::newWindow() is called by the browser.
|
||||
.PP
|
||||
A common way to develop a plugin widget is to develop it as a stand-alone application window, then make it a \fIchild\fR of a plugin widget to use it as a browser plugin. The technique is:
|
||||
.PP
|
||||
.nf
|
||||
.br
|
||||
class MyPluginWindow : public TQNPWidget
|
||||
.br
|
||||
{
|
||||
.br
|
||||
TQWidget* child;
|
||||
.br
|
||||
public:
|
||||
.br
|
||||
MyPluginWindow()
|
||||
.br
|
||||
{
|
||||
.br
|
||||
// Some widget that is normally used as a top-level widget
|
||||
.br
|
||||
child = new MyIndependentlyDevelopedWidget();
|
||||
.br
|
||||
.br
|
||||
// Use the background color of the web page
|
||||
.br
|
||||
child->setBackgroundColor( backgroundColor() );
|
||||
.br
|
||||
.br
|
||||
// Fill the plugin widget
|
||||
.br
|
||||
child->setGeometry( 0, 0, width(), height() );
|
||||
.br
|
||||
}
|
||||
.br
|
||||
.br
|
||||
void resizeEvent(TQResizeEvent*)
|
||||
.br
|
||||
{
|
||||
.br
|
||||
// Fill the plugin widget
|
||||
.br
|
||||
child->resize(size());
|
||||
.br
|
||||
}
|
||||
.br
|
||||
};
|
||||
.fi
|
||||
.PP
|
||||
The default implementation is an empty window.
|
||||
.SH MEMBER FUNCTION DOCUMENTATION
|
||||
.SH "TQNPWidget::TQNPWidget ()"
|
||||
Creates a TQNPWidget.
|
||||
.SH "TQNPWidget::~TQNPWidget ()"
|
||||
Destroys the window. This will be called by the plugin binding code when the window is no longer required. The web browser will delete windows when they leave the page. The bindings will change the TQWidget::winId() of the window when the window is resized, but this should not affect normal widget behavior.
|
||||
.SH "void TQNPWidget::enterInstance ()\fC [virtual]\fR"
|
||||
Called when the mouse enters the plugin window. Does nothing by default.
|
||||
.PP
|
||||
Example: grapher/grapher.cpp.
|
||||
.SH "TQNPInstance * TQNPWidget::instance ()"
|
||||
Returns the instance for which this widget is the plugin window.
|
||||
.SH "void TQNPWidget::leaveInstance ()\fC [virtual]\fR"
|
||||
Called when the mouse leaves the plugin window. Does nothing by default.
|
||||
.PP
|
||||
Example: grapher/grapher.cpp.
|
||||
|
||||
.SH "SEE ALSO"
|
||||
.BR http://doc.trolltech.com/tqnpwidget.html
|
||||
.BR http://www.trolltech.com/faq/tech.html
|
||||
.SH COPYRIGHT
|
||||
Copyright 1992-2007 Trolltech ASA, http://www.trolltech.com. See the
|
||||
license file included in the distribution for a complete license
|
||||
statement.
|
||||
.SH AUTHOR
|
||||
Generated automatically from the source code.
|
||||
.SH BUGS
|
||||
If you find a bug in Qt, please report it as described in
|
||||
.BR http://doc.trolltech.com/bughowto.html .
|
||||
Good bug reports help us to help you. Thank you.
|
||||
.P
|
||||
The definitive TQt documentation is provided in HTML format; it is
|
||||
located at $TQTDIR/doc/html and can be read using TQt Assistant or with
|
||||
a web browser. This man page is provided as a convenience for those
|
||||
users who prefer man pages, although this format is not officially
|
||||
supported by Trolltech.
|
||||
.P
|
||||
If you find errors in this manual page, please report them to
|
||||
.BR qt-bugs@trolltech.com .
|
||||
Please include the name of the manual page (tqnpwidget.3qt) and the Qt
|
||||
version (3.3.8).
|
@ -1,5 +0,0 @@
|
||||
TEMPLATE = subdirs
|
||||
|
||||
contains( QT_PRODUCT, qt-(enterprise|internal|eval) ) {
|
||||
x11: SUBDIRS = motif
|
||||
}
|
@ -1,111 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Index page
|
||||
**
|
||||
** Copyright (C) 1995-2008 Trolltech ASA. All rights reserved.
|
||||
**
|
||||
*****************************************************************************/
|
||||
|
||||
#if defined(QT_DEBUG)
|
||||
#endif
|
||||
|
||||
/*! \page netscape-plugin.html
|
||||
|
||||
\title TQt Netscape Plugin Extension
|
||||
\keyword Netscape
|
||||
|
||||
The TQt Netscape Plugin software makes it easy to write browser plugins
|
||||
that can be used on both Unix/Linux and MS-Windows, in Netscape,
|
||||
Mozilla, and any other web browser supporting Netscape's LiveConnect
|
||||
protocol. Modern versions of MSIE do not support this protocol.
|
||||
|
||||
\section1 Information
|
||||
|
||||
The Netscape Plugin Extension consists of the follow classes:
|
||||
\list
|
||||
\i \l TQNPlugin
|
||||
\i \l TQNPInstance
|
||||
\i \l TQNPWidget
|
||||
\i \l TQNPStream
|
||||
\endlist
|
||||
|
||||
\section1 How-to
|
||||
|
||||
\list 1
|
||||
\i Download the
|
||||
\link http://home.netscape.com/comprod/development_partners/plugin_api/index.html
|
||||
Plugin SDK from Netscape \endlink, and copy the following files from there to
|
||||
\c{$TQTDIR/extensions/nsplugin/src}
|
||||
\list
|
||||
\i \c common/npwin.cpp
|
||||
\i \c common/npunix.c
|
||||
\i \c include/npapi.h
|
||||
\i \c include/npupp.h
|
||||
\i \c include/jri.h
|
||||
\i \c include/jri_md.h
|
||||
\i \c include/jritypes.h
|
||||
\endlist
|
||||
\i Build the Netscape Plugin extension library, found in the
|
||||
\c{extensions/nsplugin/src} directory of your TQt distribution.
|
||||
This produces a static library to be linked with your plugin code.
|
||||
\i Read the \link tqnplugin.html plugin class documentation \endlink, and
|
||||
examine the \link nsplugin-examples.html example plugins \endlink.
|
||||
\i Do most of your development as a stand-alone TQt application - debugging
|
||||
Netscape Plugins is cumbersome. You may want to use \c{signal(2)}
|
||||
in your plugin to enable core-dumps if your browser disables them.
|
||||
\i Note the platform-specific build steps below.
|
||||
\i Read about the raw plugin interface
|
||||
\link http://developer.netscape.com/docs/manuals/communicator/plugin/index.htm
|
||||
in Netscape's handbook. \endlink
|
||||
\i If files viewed by a plugin are provided by an HTTP server
|
||||
(using a \c{http://...} URL) then
|
||||
the server must be configured to send the correct MIME type
|
||||
for the file, e.g. by editing Apache's \c{mime.types} file.
|
||||
If the files are viewed via a \c{file://...}
|
||||
URL, then the browser will use the filename extension to decide
|
||||
the file type (and hence the plugin to load) - the user may need
|
||||
to set the filename extension in the Helpers or Applications
|
||||
section of their browser preferences.
|
||||
\endlist
|
||||
|
||||
|
||||
\section2 Building under X11
|
||||
|
||||
\list
|
||||
\i The Makefiles in the examples are appropriate for UNIX/X11.
|
||||
\i The user must install the resulting Shared Object in the Plugins
|
||||
directory of the browser.
|
||||
\endlist
|
||||
|
||||
\section2 Building under Windows
|
||||
|
||||
\list
|
||||
\i For Netscape plugins to work, TQt needs to be in the system DLL
|
||||
path or be compiled into the plugin as a static library.
|
||||
\i Plugins must be named \c{np}\e{name}\c{.dll},
|
||||
or the browser will ignore them.
|
||||
\i The link step must include:
|
||||
\list
|
||||
\i \c{/def:}\e{name}\c{.def}
|
||||
\i \c{/dll}
|
||||
\i a compiled resource file defining the
|
||||
file/MIME types accepted by the plugin.
|
||||
\endlist
|
||||
\i The user must install the resulting DLL in the Plugins directory
|
||||
of the browser.
|
||||
\endlist
|
||||
|
||||
\section1 Known Bugs and Limitations
|
||||
|
||||
The Qt-based LiveConnect Plugin binding code has a number of bugs and
|
||||
limitations, but is sufficiently stable for many production
|
||||
applications.
|
||||
|
||||
\list
|
||||
\i Keyboard input only works in secondary windows (e.g. dialogs created by the plugin).
|
||||
\i You should not expect modality between the plugin and the browser to work.
|
||||
\i Netscape 4.78 on Unix/X11 tends to terminate with a bus error.
|
||||
\i Opaque resize behaviour is erratic due to browser behavior.
|
||||
\endlist
|
||||
|
||||
*/
|
@ -1,7 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
echo "Content-type: application/x-graphable"
|
||||
echo
|
||||
|
||||
cat graph.g1n
|
||||
# ./slowcat < graph.g1n
|
@ -1,8 +0,0 @@
|
||||
num label
|
||||
10 A
|
||||
24 B
|
||||
12 C
|
||||
7 D
|
||||
34 E
|
||||
15 F
|
||||
19 G
|
@ -1,619 +0,0 @@
|
||||
// Include TQt Netscape Plugin classes.
|
||||
#include "tqnp.h"
|
||||
|
||||
// Include other TQt classes.
|
||||
#include <tqpainter.h>
|
||||
#include <tqtextstream.h>
|
||||
#include <tqbuffer.h>
|
||||
#include <tqpixmap.h>
|
||||
#include <tqmenubar.h>
|
||||
#include <tqpushbutton.h>
|
||||
#include <tqptrlist.h>
|
||||
#include <tqmessagebox.h>
|
||||
|
||||
// Include some C library functions.
|
||||
#include <math.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifndef M_PI // Some math.h don't include this.
|
||||
#define M_PI 3.14159265358979323846264338327950288
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
//
|
||||
// GraphModel is a simple abstract class that describes
|
||||
// a table of numeric and text data.
|
||||
//
|
||||
|
||||
class GraphModel {
|
||||
public:
|
||||
enum ColType { Numeric, Label };
|
||||
|
||||
union Datum {
|
||||
double dbl;
|
||||
TQString* str;
|
||||
};
|
||||
|
||||
virtual TQPtrList<Datum>& graphData()=0;
|
||||
virtual ColType colType(int col) const=0;
|
||||
virtual int nCols() const=0;
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// Graph is a widget subclass that displays a GraphModel.
|
||||
// Since the widget is a TQNPWidget, it can be used as a plugin window,
|
||||
// returned by Grapher::newWindow() below.
|
||||
//
|
||||
|
||||
class Graph : public TQNPWidget {
|
||||
TQ_OBJECT
|
||||
public:
|
||||
// Constructs a Graph to display a GraphModel
|
||||
//
|
||||
Graph(GraphModel&);
|
||||
~Graph();
|
||||
|
||||
// Two styles are available - Pie and Bar graph
|
||||
//
|
||||
enum Style { Pie, Bar };
|
||||
static const char* styleName[];
|
||||
void setStyle(Style);
|
||||
void setStyle(const char*);
|
||||
|
||||
// Timer event processing rotates the pie graph
|
||||
//
|
||||
void timerEvent(TQTimerEvent*);
|
||||
|
||||
// These functions are provided by TQNPWidget - we override
|
||||
// them to hide and show the plugin menubar.
|
||||
//
|
||||
void enterInstance();
|
||||
void leaveInstance();
|
||||
|
||||
// Paint the graph...
|
||||
//
|
||||
void paintEvent(TQPaintEvent*);
|
||||
//
|
||||
// ... as either a "Loading" message, a Bar graph, a Pie graph,
|
||||
// or an error message.
|
||||
//
|
||||
void paintWait(TQPaintEvent*);
|
||||
void paintBar(TQPaintEvent*);
|
||||
void paintPie(TQPaintEvent*);
|
||||
void paintError(const char*);
|
||||
|
||||
signals:
|
||||
// Signals emitted when the Help menus are selected.
|
||||
void aboutPlugin();
|
||||
void aboutData();
|
||||
|
||||
private:
|
||||
GraphModel& model;
|
||||
TQMenuBar *menubar;
|
||||
Style style;
|
||||
TQPopupMenu* stylemenu;
|
||||
int pieRotationTimer;
|
||||
int pieRotation;
|
||||
TQPixmap pm;
|
||||
|
||||
private slots:
|
||||
void setStyleFromMenu(int id);
|
||||
};
|
||||
|
||||
|
||||
Graph::Graph( GraphModel& mdl ) :
|
||||
model(mdl),
|
||||
style(Bar),
|
||||
pieRotationTimer(0),
|
||||
pieRotation(0)
|
||||
{
|
||||
// Create a menubar for the widget
|
||||
//
|
||||
menubar = new TQMenuBar( this );
|
||||
stylemenu = new TQPopupMenu;
|
||||
stylemenu->setCheckable(TRUE);
|
||||
for ( Style s = Pie; styleName[s]; s = Style(s+1)) {
|
||||
stylemenu->insertItem(styleName[s], s+100);
|
||||
}
|
||||
connect(stylemenu, TQ_SIGNAL(activated(int)),
|
||||
this, TQ_SLOT(setStyleFromMenu(int)));
|
||||
setStyle(Pie);
|
||||
|
||||
menubar->insertItem("Style", stylemenu);
|
||||
menubar->insertSeparator();
|
||||
|
||||
TQPopupMenu* help = new TQPopupMenu;
|
||||
help->insertItem( "About plugin...", this, TQ_SIGNAL(aboutPlugin()) );
|
||||
help->insertItem( "About data...", this, TQ_SIGNAL(aboutData()) );
|
||||
menubar->insertItem("Help", help);
|
||||
menubar->hide();
|
||||
}
|
||||
|
||||
Graph::~Graph()
|
||||
{
|
||||
}
|
||||
|
||||
void Graph::setStyle(Style s)
|
||||
{
|
||||
if (style != s) {
|
||||
if (pieRotationTimer)
|
||||
killTimer(pieRotationTimer);
|
||||
stylemenu->setItemChecked(100+style, FALSE);
|
||||
style = s;
|
||||
if ( style == Pie )
|
||||
pieRotationTimer = startTimer( 80 );
|
||||
else
|
||||
pieRotationTimer = 0;
|
||||
stylemenu->setItemChecked(100+style, TRUE);
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
void Graph::timerEvent(TQTimerEvent*)
|
||||
{
|
||||
pieRotation = ( pieRotation + 6 ) % 360; repaint(FALSE);
|
||||
}
|
||||
|
||||
void Graph::setStyle(const char* stext)
|
||||
{
|
||||
for ( Style s = Pie; styleName[s]; s = Style(s+1) ) {
|
||||
if ( tqstricmp(stext,styleName[s])==0 ) {
|
||||
setStyle(s);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Graph::enterInstance()
|
||||
{
|
||||
menubar->show();
|
||||
}
|
||||
|
||||
void Graph::leaveInstance()
|
||||
{
|
||||
menubar->hide();
|
||||
}
|
||||
|
||||
void Graph::paintError(const char* e)
|
||||
{
|
||||
TQPainter p(this);
|
||||
int w = width();
|
||||
p.drawText(w/8, 0, w-w/4, height(), AlignCenter|WordBreak, e);
|
||||
}
|
||||
|
||||
void Graph::paintBar(TQPaintEvent* event)
|
||||
{
|
||||
if ( model.colType(0) != GraphModel::Numeric ) {
|
||||
paintError("First column not numeric, cannot draw bar graph\n");
|
||||
return;
|
||||
}
|
||||
|
||||
TQPtrList<GraphModel::Datum>& data = model.graphData();
|
||||
|
||||
double max = 0.0;
|
||||
|
||||
for (GraphModel::Datum* rowdata = data.first();
|
||||
rowdata; rowdata = data.next())
|
||||
{
|
||||
if (rowdata[0].dbl > max) max = rowdata[0].dbl;
|
||||
}
|
||||
|
||||
const uint w = width();
|
||||
const uint h = height();
|
||||
|
||||
TQPainter p(this);
|
||||
|
||||
p.setClipRect(event->rect());
|
||||
|
||||
if ( w > data.count() ) {
|
||||
// More pixels than data
|
||||
int x = 0;
|
||||
int i = 0;
|
||||
TQFontMetrics fm=fontMetrics();
|
||||
int fh = fm.height();
|
||||
|
||||
for (GraphModel::Datum* rowdata = data.first();
|
||||
rowdata; rowdata = data.next())
|
||||
{
|
||||
TQColor c;
|
||||
c.setHsv( (i * 255)/data.count(), 255, 255 );// rainbow effect
|
||||
p.setBrush(c);
|
||||
int bw = (w-w/4-x)/(data.count()-i);
|
||||
int bh = int((h-h/4-1)*rowdata[0].dbl/max);
|
||||
p.drawRect( w/8+x, h-h/8-1-bh, bw, bh );
|
||||
|
||||
i++;
|
||||
x+=bw;
|
||||
}
|
||||
} else {
|
||||
// More data than pixels
|
||||
int x = 0;
|
||||
int i = 0;
|
||||
double av = 0.0;
|
||||
int n = 0;
|
||||
for (GraphModel::Datum* rowdata = data.first(); rowdata;
|
||||
rowdata = data.next())
|
||||
{
|
||||
int bx = i*w/data.count();
|
||||
|
||||
if (bx > x) {
|
||||
TQColor c;
|
||||
c.setHsv( (x * 255)/w, 255, 255 );// rainbow effect
|
||||
p.setPen(c);
|
||||
int bh = int(h*av/n/max);
|
||||
|
||||
p.drawLine(x,h-1,x,h-bh);
|
||||
|
||||
av = 0.0;
|
||||
n = 0;
|
||||
x = bx;
|
||||
}
|
||||
|
||||
av += rowdata[0].dbl;
|
||||
n++;
|
||||
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Graph::paintPie(TQPaintEvent* event)
|
||||
{
|
||||
if ( model.colType(0) != GraphModel::Numeric ) {
|
||||
paintError("First column not numeric, cannot draw pie graph\n");
|
||||
return;
|
||||
}
|
||||
|
||||
TQPtrList<GraphModel::Datum>& data = model.graphData();
|
||||
|
||||
double total = 0.0;
|
||||
|
||||
GraphModel::Datum* rowdata;
|
||||
|
||||
for (rowdata = data.first();
|
||||
rowdata; rowdata = data.next())
|
||||
{
|
||||
total += rowdata[0].dbl;
|
||||
}
|
||||
|
||||
// Only use first column for pie chart
|
||||
if ( !total ) return;
|
||||
|
||||
int apos = (pieRotation-90)*16;
|
||||
|
||||
const int w = width();
|
||||
const int h = height();
|
||||
|
||||
const int xd = w - w/5;
|
||||
const int yd = h - h/5;
|
||||
|
||||
pm.resize(width(),height());
|
||||
pm.fill(backgroundColor());
|
||||
TQPainter p(&pm);
|
||||
p.setFont(font());
|
||||
|
||||
p.setClipRect(event->rect());
|
||||
|
||||
int i = 0;
|
||||
|
||||
for (rowdata = data.first();
|
||||
rowdata; rowdata = data.next())
|
||||
{
|
||||
TQColor c;
|
||||
|
||||
c.setHsv( ( i * 255)/data.count(), 255, 255 );// rainbow effect
|
||||
p.setBrush( c ); // solid fill with color c
|
||||
|
||||
int a = int(( rowdata[0].dbl * 360.0 ) / total * 16.0 + 0.5);
|
||||
p.drawPie( w/10, h/10, xd, yd, -apos, -a );
|
||||
apos += a;
|
||||
i++;
|
||||
}
|
||||
|
||||
if (model.colType(1) == GraphModel::Label) {
|
||||
double apos = (pieRotation-90)*M_PI/180;
|
||||
|
||||
for (rowdata = data.first();
|
||||
rowdata; rowdata = data.next())
|
||||
{
|
||||
double a = rowdata[0].dbl * 360 / total * M_PI / 180;
|
||||
int x = int(cos(apos+a/2)*w*5/16 + w/2 + 0.5);
|
||||
int y = int(sin(apos+a/2)*h*5/16 + h/2 + 0.5);
|
||||
|
||||
// ### This causes a crash, so comment out for now
|
||||
/*p.drawText(x-w/8, y-h/8, w/4, h/4,
|
||||
WordBreak|AlignCenter,
|
||||
*rowdata[1].str);*/
|
||||
apos += a;
|
||||
}
|
||||
}
|
||||
|
||||
TQPainter p2(this);
|
||||
p2.setClipRect(event->rect());
|
||||
p2.drawPixmap(0,0,pm);
|
||||
}
|
||||
|
||||
void Graph::paintWait(TQPaintEvent*)
|
||||
{
|
||||
TQPainter p(this);
|
||||
p.drawText(rect(), AlignCenter, "Loading...");
|
||||
}
|
||||
|
||||
void Graph::paintEvent(TQPaintEvent* event)
|
||||
{
|
||||
if (!model.nCols()) {
|
||||
paintWait(event);
|
||||
} else {
|
||||
switch (style) {
|
||||
case Pie:
|
||||
paintPie(event);
|
||||
break;
|
||||
case Bar:
|
||||
paintBar(event);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Graph::setStyleFromMenu(int id)
|
||||
{
|
||||
setStyle(Style(id-100));
|
||||
}
|
||||
|
||||
const char* Graph::styleName[] = { "Pie", "Bar", 0 };
|
||||
|
||||
|
||||
//
|
||||
// Grapher is a subclass of TQNPInstance, and so it can be returned
|
||||
// by GrapherPlugin::newInstance(). A TQNPInstance represents the
|
||||
// plugin, distinctly from the plugin window.
|
||||
//
|
||||
// Grapher is also a GraphModel, because it loads graph data from
|
||||
// the net. When Grapher creates a window in newWindow(), it creates
|
||||
// a Graph widget to display the GraphModel that is the Grapher itself.
|
||||
//
|
||||
|
||||
class Grapher : public TQNPInstance, GraphModel {
|
||||
TQ_OBJECT
|
||||
public:
|
||||
// Create a Grapher - all Grapher plugins are created
|
||||
// by one GrapherPlugin object.
|
||||
//
|
||||
Grapher();
|
||||
~Grapher();
|
||||
|
||||
// We override this TQNPInstance function to create our
|
||||
// own subclass of TQNPWidget, a Graph widget.
|
||||
//
|
||||
TQNPWidget* newWindow();
|
||||
|
||||
// We override this TQNPInstance function to process the
|
||||
// incoming graph data.
|
||||
//
|
||||
int write(TQNPStream* /*str*/, int /*offset*/, int len, void* buffer);
|
||||
|
||||
private:
|
||||
// Grapher is a GraphModel, so it implements the pure virtual
|
||||
// functions of that class.
|
||||
//
|
||||
TQPtrList<Datum>& graphData();
|
||||
ColType colType(int col) const;
|
||||
int nCols() const;
|
||||
|
||||
void consumeLine();
|
||||
TQPtrList<Datum> data;
|
||||
TQBuffer line;
|
||||
int ncols;
|
||||
ColType *coltype;
|
||||
|
||||
private slots:
|
||||
// Slots that are connected to the Graph menu items.
|
||||
//
|
||||
void aboutPlugin();
|
||||
void aboutData();
|
||||
};
|
||||
|
||||
Grapher::Grapher()
|
||||
{
|
||||
data.setAutoDelete(TRUE);
|
||||
ncols = 0;
|
||||
line.open(IO_WriteOnly|IO_Truncate);
|
||||
}
|
||||
|
||||
Grapher::~Grapher()
|
||||
{
|
||||
}
|
||||
|
||||
TQPtrList<GraphModel::Datum>& Grapher::graphData()
|
||||
{
|
||||
return data;
|
||||
}
|
||||
|
||||
GraphModel::ColType Grapher::colType(int col) const
|
||||
{
|
||||
return coltype[col];
|
||||
}
|
||||
|
||||
int Grapher::nCols() const
|
||||
{
|
||||
return ncols;
|
||||
}
|
||||
|
||||
|
||||
TQNPWidget* Grapher::newWindow()
|
||||
{
|
||||
// Create a Graph - our subclass of TQNPWidget.
|
||||
Graph *graph = new Graph(*this);
|
||||
|
||||
// Look at the arguments from the EMBED tag.
|
||||
// GRAPHSTYLE chooses pie or bar
|
||||
// FONTFAMILY and FONTSIZE choose the font
|
||||
//
|
||||
const char* style = arg("GRAPHSTYLE");
|
||||
if ( style ) graph->setStyle(style);
|
||||
|
||||
const char* fontfamily = arg("FONTFAMILY");
|
||||
const char* fontsize = arg("FONTSIZE");
|
||||
int ptsize = fontsize ? atoi(fontsize) : graph->font().pointSize();
|
||||
if (fontfamily) graph->setFont(TQFont(fontfamily, ptsize));
|
||||
|
||||
connect(graph, TQ_SIGNAL(aboutPlugin()), this, TQ_SLOT(aboutPlugin()));
|
||||
connect(graph, TQ_SIGNAL(aboutData()), this, TQ_SLOT(aboutData()));
|
||||
|
||||
return graph;
|
||||
}
|
||||
|
||||
void Grapher::consumeLine()
|
||||
{
|
||||
line.close();
|
||||
line.open(IO_ReadOnly);
|
||||
|
||||
TQTextStream ts( &line );
|
||||
|
||||
if (ncols == 0 ) {
|
||||
ncols=0;
|
||||
TQPtrList<ColType> typelist;
|
||||
typelist.setAutoDelete(TRUE);
|
||||
do {
|
||||
TQString typestr;
|
||||
ts >> typestr >> ws;
|
||||
ColType* t = 0;
|
||||
if ( typestr == "num" ) {
|
||||
t = new ColType(Numeric);
|
||||
} else if ( typestr == "label" ) {
|
||||
t = new ColType(Label);
|
||||
}
|
||||
if (t) typelist.append(t);
|
||||
} while (!ts.atEnd());
|
||||
coltype = new ColType[ncols];
|
||||
for (ColType* t = typelist.first(); t; t = typelist.next()) {
|
||||
coltype[ncols++] = *t;
|
||||
}
|
||||
} else {
|
||||
int col=0;
|
||||
Datum *rowdata = new Datum[ncols];
|
||||
while ( col < ncols && !ts.atEnd() ) {
|
||||
switch (coltype[col]) {
|
||||
case Numeric: {
|
||||
double value;
|
||||
ts >> value >> ws;
|
||||
rowdata[col].dbl = value;
|
||||
break;
|
||||
}
|
||||
case Label: {
|
||||
TQString* value = new TQString;
|
||||
ts >> *value >> ws;
|
||||
rowdata[col].str = value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
col++;
|
||||
}
|
||||
|
||||
data.append(rowdata);
|
||||
}
|
||||
|
||||
line.close();
|
||||
line.open(IO_WriteOnly|IO_Truncate);
|
||||
}
|
||||
|
||||
int Grapher::write(TQNPStream* /*str*/, int /*offset*/, int len, void* buffer)
|
||||
{
|
||||
// The browser calls this function when data is available on one
|
||||
// of the streams the plugin has requested. Since we are only
|
||||
// processing one stream - the URL in the SRC argument of the EMBED
|
||||
// tag, we assume the TQNPStream is that one. Also, since we do not
|
||||
// override TQNPInstance::writeReady(), we must accepts ALL the data
|
||||
// that is sent to this function.
|
||||
//
|
||||
char* txt = (char*)buffer;
|
||||
for (int i=0; i<len; i++) {
|
||||
char ch = txt[i];
|
||||
switch ( ch ) {
|
||||
case '\n':
|
||||
consumeLine();
|
||||
break;
|
||||
case '\r': // ignore;
|
||||
break;
|
||||
default:
|
||||
line.putch(ch);
|
||||
}
|
||||
}
|
||||
if ( widget() )
|
||||
widget()->update();
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
void Grapher::aboutPlugin()
|
||||
{
|
||||
getURL( "http://doc.trolltech.com/netscape-plugin.html", "_blank" );
|
||||
}
|
||||
|
||||
void Grapher::aboutData()
|
||||
{
|
||||
const char* page = arg("DATAPAGE");
|
||||
if (page)
|
||||
getURL( page, "_blank" );
|
||||
else
|
||||
TQMessageBox::message("Help", "No help for this data");
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// GrapherPlugin is the start of everything. It is a TQNPlugin subclass,
|
||||
// and it is responsible for describing the plugin to the browser, and
|
||||
// creating instances of the plugin when it appears in web page.
|
||||
//
|
||||
|
||||
class GrapherPlugin : public TQNPlugin {
|
||||
public:
|
||||
GrapherPlugin()
|
||||
{
|
||||
}
|
||||
|
||||
TQNPInstance* newInstance()
|
||||
{
|
||||
// Make a new Grapher, our subclass of TQNPInstance.
|
||||
return new Grapher;
|
||||
}
|
||||
|
||||
const char* getMIMEDescription() const
|
||||
{
|
||||
// Describe the MIME types which this plugin can
|
||||
// process. Just the concocted "application/x-graphable"
|
||||
// type, with the "g1n" filename extension.
|
||||
//
|
||||
return "application/x-graphable:g1n:Graphable ASCII numeric data";
|
||||
}
|
||||
|
||||
const char * getPluginNameString() const
|
||||
{
|
||||
// The name of the plugin. This is the title string used in
|
||||
// the "About Plugins" page of the browser.
|
||||
//
|
||||
return "TQt-based Graph Plugin";
|
||||
}
|
||||
|
||||
const char * getPluginDescriptionString() const
|
||||
{
|
||||
// A longer description of the plugin.
|
||||
//
|
||||
return "A TQt-based LiveConnected plug-in that graphs numeric data";
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
//
|
||||
// Finally, we provide the implementation of TQNPlugin::create(), to
|
||||
// provide our subclass of TQNPlugin.
|
||||
//
|
||||
|
||||
TQNPlugin* TQNPlugin::create()
|
||||
{
|
||||
return new GrapherPlugin;
|
||||
}
|
||||
|
||||
#include "grapher.moc"
|
@ -1,9 +0,0 @@
|
||||
LIBRARY npgrapher.dll
|
||||
|
||||
CODE PRELOAD MOVEABLE DISCARDABLE
|
||||
DATA PRELOAD SINGLE
|
||||
|
||||
EXPORTS
|
||||
NP_GetEntryPoints @1
|
||||
NP_Initialize @2
|
||||
NP_Shutdown @3
|
@ -1,64 +0,0 @@
|
||||
/*! \page grapher-nsplugin-example.html
|
||||
\ingroup nsplugin-examples
|
||||
|
||||
\title Grapher Plugin
|
||||
|
||||
This example graphs data from a simple text file. It
|
||||
demonstrates the use of the TQNPInstance::writeReady()
|
||||
and TQNPInstance::write() functions.
|
||||
|
||||
To build the example, you must first build the
|
||||
<a href=nsplugin.html>TQt Netscape Plugin Extension</a> library.
|
||||
Then type <tt>make</tt> in <tt>extensions/nsplugin/examples/grapher/</tt>
|
||||
and copy the resulting <tt>grapher.so</tt> or <tt>npgrapher.dll</tt>
|
||||
to the Plugins directory of your WWW browser.
|
||||
|
||||
<EMBED ALIGN=LEFT WIDTH=49% HEIGHT=300 SRC=graph.g1n
|
||||
graphstyle=pie fontfamily=times fontsize=18>
|
||||
|
||||
The text file it accepts as input has a title line, then
|
||||
a sequence of lines with a number, then a string. The
|
||||
plugin displays a pie chart of the numbers, each segment
|
||||
labelled by the associated string. The user can select
|
||||
a bar chart view of the same data by selecting from the
|
||||
menu that appears when they point at the plugin.
|
||||
|
||||
The HTML tag used to embed the graph is:
|
||||
<small>
|
||||
<pre>
|
||||
<EMBED
|
||||
SRC=graph.g1n
|
||||
ALIGN=LEFT
|
||||
WIDTH=49% HEIGHT=300
|
||||
graphstyle=pie fontfamily=times
|
||||
fontsize=18>
|
||||
</pre>
|
||||
</small>
|
||||
Note that some HTML arguments (which we have capitalized here)
|
||||
are interpreted by the browser, while others are used by the
|
||||
plugin.
|
||||
|
||||
<br clear>
|
||||
With the simplicity and cross-platform nature of Qt-based plugins,
|
||||
pages like <a href="http://www.netcraft.com/survey/">Netcraft's
|
||||
Server Graphs</a> can be provided much more efficiently for both
|
||||
the service provider and consumer. Data need not be converted
|
||||
to an image at the server.
|
||||
|
||||
<br clear>
|
||||
<hr>
|
||||
Implementation:
|
||||
|
||||
\include grapher/grapher.cpp
|
||||
*/
|
||||
|
||||
/*! \plainpage graph.g1n
|
||||
num label
|
||||
10 A
|
||||
24 B
|
||||
12 C
|
||||
7 D
|
||||
34 E
|
||||
15 F
|
||||
19 G
|
||||
*/
|
@ -1,12 +0,0 @@
|
||||
TEMPLATE = lib
|
||||
TARGET = grapher
|
||||
win32:TARGET = npgrapher
|
||||
|
||||
CONFIG += qt dll release
|
||||
LIBS += -lqnp
|
||||
unix:LIBS += -lXt
|
||||
|
||||
HEADERS =
|
||||
SOURCES = grapher.cpp
|
||||
DEF_FILE = grapher.def
|
||||
RC_FILE = grapher.rc
|
@ -1,36 +0,0 @@
|
||||
|
||||
1 VERSIONINFO
|
||||
FILEVERSION 1,0,0,1
|
||||
PRODUCTVERSION 1,0,0,1
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x4L
|
||||
FILETYPE 0x2L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904e4"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "Trolltech\0"
|
||||
VALUE "FileDescription", "grapher\0"
|
||||
VALUE "FileExtents", "g1n\0"
|
||||
VALUE "FileOpenName", "Graphable data (*.g1n)\0"
|
||||
VALUE "FileVersion", "1, 0, 0, 1\0"
|
||||
VALUE "InternalName", "grapher\0"
|
||||
VALUE "LegalCopyright", "Copyright © 1997-2008 Trolltech ASA\0"
|
||||
VALUE "MIMEType", "application/x-graphable\0"
|
||||
VALUE "OriginalFilename", "grapher.dll\0"
|
||||
VALUE "ProductName", "Trolltech grapher\0"
|
||||
VALUE "ProductVersion", "1, 0, 0, 1\0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1252
|
||||
END
|
||||
END
|
@ -1,67 +0,0 @@
|
||||
// TQt stuff
|
||||
#include "tqnp.h"
|
||||
#include <tqpainter.h>
|
||||
#include <tqmessagebox.h>
|
||||
|
||||
class Trivial : public TQNPWidget {
|
||||
TQ_OBJECT
|
||||
public:
|
||||
void mouseReleaseEvent(TQMouseEvent* event)
|
||||
{
|
||||
TQMessageBox::aboutTQt(this);
|
||||
}
|
||||
|
||||
void paintEvent(TQPaintEvent* event)
|
||||
{
|
||||
TQPainter p(this);
|
||||
p.setClipRect(event->rect());
|
||||
int w = width();
|
||||
p.drawRect(rect());
|
||||
p.drawText(w/8, 0, w-w/4, height(), AlignCenter|WordBreak, "Trivial!");
|
||||
}
|
||||
};
|
||||
|
||||
class TrivialInstance : public TQNPInstance {
|
||||
TQ_OBJECT
|
||||
public:
|
||||
TQNPWidget* newWindow()
|
||||
{
|
||||
return new Trivial;
|
||||
}
|
||||
|
||||
void print(TQPainter* p)
|
||||
{
|
||||
p->drawText(0,0,"Hello");
|
||||
}
|
||||
};
|
||||
|
||||
class TrivialPlugin : public TQNPlugin {
|
||||
public:
|
||||
TQNPInstance* newInstance()
|
||||
{
|
||||
return new TrivialInstance;
|
||||
}
|
||||
|
||||
const char* getMIMEDescription() const
|
||||
{
|
||||
return "trivial/very:xxx:Trivial and useless";
|
||||
}
|
||||
|
||||
const char * getPluginNameString() const
|
||||
{
|
||||
return "Trivial TQt-based Plugin";
|
||||
}
|
||||
|
||||
const char * getPluginDescriptionString() const
|
||||
{
|
||||
return "A TQt-based LiveConnected plug-in that does nothing";
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
TQNPlugin* TQNPlugin::create()
|
||||
{
|
||||
return new TrivialPlugin;
|
||||
}
|
||||
|
||||
#include "trivial.moc"
|
@ -1,9 +0,0 @@
|
||||
LIBRARY nptrivial.dll
|
||||
|
||||
CODE PRELOAD MOVEABLE DISCARDABLE
|
||||
DATA PRELOAD SINGLE
|
||||
|
||||
EXPORTS
|
||||
NP_GetEntryPoints @1
|
||||
NP_Initialize @2
|
||||
NP_Shutdown @3
|
@ -1,22 +0,0 @@
|
||||
/*! \page trivial-nsplugin-example.html
|
||||
\ingroup nsplugin-examples
|
||||
|
||||
\title Trivial Example
|
||||
|
||||
This example is trivial, and thus useful for
|
||||
investigating problems you might have installing the
|
||||
extension.
|
||||
|
||||
To build the example, you must first build the
|
||||
\link netscape-plugin.html TQt Netscape Plugin Extension\endlink library.
|
||||
Then type \c{make} in \c{extensions/nsplugin/examples/trivial/}
|
||||
and copy the resulting \c{trivial.so} or \c{nptrivial.dll}
|
||||
to the Plugins directory of your WWW browser.
|
||||
|
||||
<EMBED TYPE=trivial/very WIDTH=100 HEIGHT=100>
|
||||
|
||||
<hr>
|
||||
Implementation:
|
||||
|
||||
\include trivial/trivial.cpp
|
||||
*/
|
@ -1,12 +0,0 @@
|
||||
TEMPLATE = lib
|
||||
TARGET = trivial
|
||||
win32:TARGET = nptrivial
|
||||
|
||||
CONFIG += qt dll release
|
||||
LIBS += -lqnp
|
||||
unix:LIBS += -lXt
|
||||
|
||||
HEADERS =
|
||||
SOURCES = trivial.cpp
|
||||
DEF_FILE = trivial.def
|
||||
RC_FILE = trivial.rc
|
@ -1,36 +0,0 @@
|
||||
|
||||
1 VERSIONINFO
|
||||
FILEVERSION 1,0,0,1
|
||||
PRODUCTVERSION 1,0,0,1
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x4L
|
||||
FILETYPE 0x2L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904e4"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "Trolltech\0"
|
||||
VALUE "FileDescription", "trivial\0"
|
||||
VALUE "FileExtents", "xxx\0"
|
||||
VALUE "FileOpenName", "Nothing (*.xxx)\0"
|
||||
VALUE "FileVersion", "1, 0, 0, 1\0"
|
||||
VALUE "InternalName", "trivial\0"
|
||||
VALUE "LegalCopyright", "Copyright © 1997-2006 Trolltech ASA\0"
|
||||
VALUE "MIMEType", "trivial/very\0"
|
||||
VALUE "OriginalFilename", "trivial.dll\0"
|
||||
VALUE "ProductName", "Trolltech trivial\0"
|
||||
VALUE "ProductVersion", "1, 0, 0, 1\0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1252
|
||||
END
|
||||
END
|
@ -1,637 +0,0 @@
|
||||
/*******************************************************************************
|
||||
* Java Runtime Interface
|
||||
* Copyright (c) 1996 Netscape Communications Corporation. All rights reserved.
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef JRI_H
|
||||
#define JRI_H
|
||||
|
||||
#include "jritypes.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/*******************************************************************************
|
||||
* JRIEnv
|
||||
******************************************************************************/
|
||||
|
||||
/* The type of the JRIEnv interface. */
|
||||
typedef struct JRIEnvInterface JRIEnvInterface;
|
||||
|
||||
/* The type of a JRIEnv instance. */
|
||||
typedef const JRIEnvInterface* JRIEnv;
|
||||
|
||||
/*******************************************************************************
|
||||
* JRIEnv Operations
|
||||
******************************************************************************/
|
||||
|
||||
#define JRI_LoadClass(env, buf, bufLen) \
|
||||
(((*(env))->LoadClass)(env, JRI_LoadClass_op, buf, bufLen))
|
||||
|
||||
#define JRI_FindClass(env, name) \
|
||||
(((*(env))->FindClass)(env, JRI_FindClass_op, name))
|
||||
|
||||
#define JRI_Throw(env, obj) \
|
||||
(((*(env))->Throw)(env, JRI_Throw_op, obj))
|
||||
|
||||
#define JRI_ThrowNew(env, clazz, message) \
|
||||
(((*(env))->ThrowNew)(env, JRI_ThrowNew_op, clazz, message))
|
||||
|
||||
#define JRI_ExceptionOccurred(env) \
|
||||
(((*(env))->ExceptionOccurred)(env, JRI_ExceptionOccurred_op))
|
||||
|
||||
#define JRI_ExceptionDescribe(env) \
|
||||
(((*(env))->ExceptionDescribe)(env, JRI_ExceptionDescribe_op))
|
||||
|
||||
#define JRI_ExceptionClear(env) \
|
||||
(((*(env))->ExceptionClear)(env, JRI_ExceptionClear_op))
|
||||
|
||||
#define JRI_NewGlobalRef(env, ref) \
|
||||
(((*(env))->NewGlobalRef)(env, JRI_NewGlobalRef_op, ref))
|
||||
|
||||
#define JRI_DisposeGlobalRef(env, gref) \
|
||||
(((*(env))->DisposeGlobalRef)(env, JRI_DisposeGlobalRef_op, gref))
|
||||
|
||||
#define JRI_GetGlobalRef(env, gref) \
|
||||
(((*(env))->GetGlobalRef)(env, JRI_GetGlobalRef_op, gref))
|
||||
|
||||
#define JRI_SetGlobalRef(env, gref, ref) \
|
||||
(((*(env))->SetGlobalRef)(env, JRI_SetGlobalRef_op, gref, ref))
|
||||
|
||||
#define JRI_IsSameObject(env, a, b) \
|
||||
(((*(env))->IsSameObject)(env, JRI_IsSameObject_op, a, b))
|
||||
|
||||
#define JRI_NewObject(env) ((*(env))->NewObject)
|
||||
#define JRI_NewObjectV(env, clazz, methodID, args) \
|
||||
(((*(env))->NewObjectV)(env, JRI_NewObject_op_va_list, clazz, methodID, args))
|
||||
#define JRI_NewObjectA(env, clazz, method, args) \
|
||||
(((*(env))->NewObjectA)(env, JRI_NewObject_op_array, clazz, methodID, args))
|
||||
|
||||
#define JRI_GetObjectClass(env, obj) \
|
||||
(((*(env))->GetObjectClass)(env, JRI_GetObjectClass_op, obj))
|
||||
|
||||
#define JRI_IsInstanceOf(env, obj, clazz) \
|
||||
(((*(env))->IsInstanceOf)(env, JRI_IsInstanceOf_op, obj, clazz))
|
||||
|
||||
#define JRI_GetMethodID(env, clazz, name, sig) \
|
||||
(((*(env))->GetMethodID)(env, JRI_GetMethodID_op, clazz, name, sig))
|
||||
|
||||
#define JRI_CallMethod(env) ((*(env))->CallMethod)
|
||||
#define JRI_CallMethodV(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodV)(env, JRI_CallMethod_op_va_list, obj, methodID, args))
|
||||
#define JRI_CallMethodA(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodA)(env, JRI_CallMethod_op_array, obj, methodID, args))
|
||||
|
||||
#define JRI_CallMethodBoolean(env) ((*(env))->CallMethodBoolean)
|
||||
#define JRI_CallMethodBooleanV(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodBooleanV)(env, JRI_CallMethodBoolean_op_va_list, obj, methodID, args))
|
||||
#define JRI_CallMethodBooleanA(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodBooleanA)(env, JRI_CallMethodBoolean_op_array, obj, methodID, args))
|
||||
|
||||
#define JRI_CallMethodByte(env) ((*(env))->CallMethodByte)
|
||||
#define JRI_CallMethodByteV(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodByteV)(env, JRI_CallMethodByte_op_va_list, obj, methodID, args))
|
||||
#define JRI_CallMethodByteA(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodByteA)(env, JRI_CallMethodByte_op_array, obj, methodID, args))
|
||||
|
||||
#define JRI_CallMethodChar(env) ((*(env))->CallMethodChar)
|
||||
#define JRI_CallMethodCharV(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodCharV)(env, JRI_CallMethodChar_op_va_list, obj, methodID, args))
|
||||
#define JRI_CallMethodCharA(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodCharA)(env, JRI_CallMethodChar_op_array, obj, methodID, args))
|
||||
|
||||
#define JRI_CallMethodShort(env) ((*(env))->CallMethodShort)
|
||||
#define JRI_CallMethodShortV(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodShortV)(env, JRI_CallMethodShort_op_va_list, obj, methodID, args))
|
||||
#define JRI_CallMethodShortA(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodShortA)(env, JRI_CallMethodShort_op_array, obj, methodID, args))
|
||||
|
||||
#define JRI_CallMethodInt(env) ((*(env))->CallMethodInt)
|
||||
#define JRI_CallMethodIntV(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodIntV)(env, JRI_CallMethodInt_op_va_list, obj, methodID, args))
|
||||
#define JRI_CallMethodIntA(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodIntA)(env, JRI_CallMethodInt_op_array, obj, methodID, args))
|
||||
|
||||
#define JRI_CallMethodLong(env) ((*(env))->CallMethodLong)
|
||||
#define JRI_CallMethodLongV(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodLongV)(env, JRI_CallMethodLong_op_va_list, obj, methodID, args))
|
||||
#define JRI_CallMethodLongA(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodLongA)(env, JRI_CallMethodLong_op_array, obj, methodID, args))
|
||||
|
||||
#define JRI_CallMethodFloat(env) ((*(env))->CallMethodFloat)
|
||||
#define JRI_CallMethodFloatV(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodFloatV)(env, JRI_CallMethodFloat_op_va_list, obj, methodID, args))
|
||||
#define JRI_CallMethodFloatA(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodFloatA)(env, JRI_CallMethodFloat_op_array, obj, methodID, args))
|
||||
|
||||
#define JRI_CallMethodDouble(env) ((*(env))->CallMethodDouble)
|
||||
#define JRI_CallMethodDoubleV(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodDoubleV)(env, JRI_CallMethodDouble_op_va_list, obj, methodID, args))
|
||||
#define JRI_CallMethodDoubleA(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodDoubleA)(env, JRI_CallMethodDouble_op_array, obj, methodID, args))
|
||||
|
||||
#define JRI_GetFieldID(env, clazz, name, sig) \
|
||||
(((*(env))->GetFieldID)(env, JRI_GetFieldID_op, clazz, name, sig))
|
||||
|
||||
#define JRI_GetField(env, obj, fieldID) \
|
||||
(((*(env))->GetField)(env, JRI_GetField_op, obj, fieldID))
|
||||
|
||||
#define JRI_GetFieldBoolean(env, obj, fieldID) \
|
||||
(((*(env))->GetFieldBoolean)(env, JRI_GetFieldBoolean_op, obj, fieldID))
|
||||
|
||||
#define JRI_GetFieldByte(env, obj, fieldID) \
|
||||
(((*(env))->GetFieldByte)(env, JRI_GetFieldByte_op, obj, fieldID))
|
||||
|
||||
#define JRI_GetFieldChar(env, obj, fieldID) \
|
||||
(((*(env))->GetFieldChar)(env, JRI_GetFieldChar_op, obj, fieldID))
|
||||
|
||||
#define JRI_GetFieldShort(env, obj, fieldID) \
|
||||
(((*(env))->GetFieldShort)(env, JRI_GetFieldShort_op, obj, fieldID))
|
||||
|
||||
#define JRI_GetFieldInt(env, obj, fieldID) \
|
||||
(((*(env))->GetFieldInt)(env, JRI_GetFieldInt_op, obj, fieldID))
|
||||
|
||||
#define JRI_GetFieldLong(env, obj, fieldID) \
|
||||
(((*(env))->GetFieldLong)(env, JRI_GetFieldLong_op, obj, fieldID))
|
||||
|
||||
#define JRI_GetFieldFloat(env, obj, fieldID) \
|
||||
(((*(env))->GetFieldFloat)(env, JRI_GetFieldFloat_op, obj, fieldID))
|
||||
|
||||
#define JRI_GetFieldDouble(env, obj, fieldID) \
|
||||
(((*(env))->GetFieldDouble)(env, JRI_GetFieldDouble_op, obj, fieldID))
|
||||
|
||||
#define JRI_SetField(env, obj, fieldID, value) \
|
||||
(((*(env))->SetField)(env, JRI_SetField_op, obj, fieldID, value))
|
||||
|
||||
#define JRI_SetFieldBoolean(env, obj, fieldID, value) \
|
||||
(((*(env))->SetFieldBoolean)(env, JRI_SetFieldBoolean_op, obj, fieldID, value))
|
||||
|
||||
#define JRI_SetFieldByte(env, obj, fieldID, value) \
|
||||
(((*(env))->SetFieldByte)(env, JRI_SetFieldByte_op, obj, fieldID, value))
|
||||
|
||||
#define JRI_SetFieldChar(env, obj, fieldID, value) \
|
||||
(((*(env))->SetFieldChar)(env, JRI_SetFieldChar_op, obj, fieldID, value))
|
||||
|
||||
#define JRI_SetFieldShort(env, obj, fieldID, value) \
|
||||
(((*(env))->SetFieldShort)(env, JRI_SetFieldShort_op, obj, fieldID, value))
|
||||
|
||||
#define JRI_SetFieldInt(env, obj, fieldID, value) \
|
||||
(((*(env))->SetFieldInt)(env, JRI_SetFieldInt_op, obj, fieldID, value))
|
||||
|
||||
#define JRI_SetFieldLong(env, obj, fieldID, value) \
|
||||
(((*(env))->SetFieldLong)(env, JRI_SetFieldLong_op, obj, fieldID, value))
|
||||
|
||||
#define JRI_SetFieldFloat(env, obj, fieldID, value) \
|
||||
(((*(env))->SetFieldFloat)(env, JRI_SetFieldFloat_op, obj, fieldID, value))
|
||||
|
||||
#define JRI_SetFieldDouble(env, obj, fieldID, value) \
|
||||
(((*(env))->SetFieldDouble)(env, JRI_SetFieldDouble_op, obj, fieldID, value))
|
||||
|
||||
#define JRI_IsSubclassOf(env, a, b) \
|
||||
(((*(env))->IsSubclassOf)(env, JRI_IsSubclassOf_op, a, b))
|
||||
|
||||
#define JRI_GetStaticMethodID(env, clazz, name, sig) \
|
||||
(((*(env))->GetStaticMethodID)(env, JRI_GetStaticMethodID_op, clazz, name, sig))
|
||||
|
||||
#define JRI_CallStaticMethod(env) ((*(env))->CallStaticMethod)
|
||||
#define JRI_CallStaticMethodV(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodV)(env, JRI_CallStaticMethod_op_va_list, clazz, methodID, args))
|
||||
#define JRI_CallStaticMethodA(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodA)(env, JRI_CallStaticMethod_op_array, clazz, methodID, args))
|
||||
|
||||
#define JRI_CallStaticMethodBoolean(env) ((*(env))->CallStaticMethodBoolean)
|
||||
#define JRI_CallStaticMethodBooleanV(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodBooleanV)(env, JRI_CallStaticMethodBoolean_op_va_list, clazz, methodID, args))
|
||||
#define JRI_CallStaticMethodBooleanA(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodBooleanA)(env, JRI_CallStaticMethodBoolean_op_array, clazz, methodID, args))
|
||||
|
||||
#define JRI_CallStaticMethodByte(env) ((*(env))->CallStaticMethodByte)
|
||||
#define JRI_CallStaticMethodByteV(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodByteV)(env, JRI_CallStaticMethodByte_op_va_list, clazz, methodID, args))
|
||||
#define JRI_CallStaticMethodByteA(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodByteA)(env, JRI_CallStaticMethodByte_op_array, clazz, methodID, args))
|
||||
|
||||
#define JRI_CallStaticMethodChar(env) ((*(env))->CallStaticMethodChar)
|
||||
#define JRI_CallStaticMethodCharV(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodCharV)(env, JRI_CallStaticMethodChar_op_va_list, clazz, methodID, args))
|
||||
#define JRI_CallStaticMethodCharA(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodCharA)(env, JRI_CallStaticMethodChar_op_array, clazz, methodID, args))
|
||||
|
||||
#define JRI_CallStaticMethodShort(env) ((*(env))->CallStaticMethodShort)
|
||||
#define JRI_CallStaticMethodShortV(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodShortV)(env, JRI_CallStaticMethodShort_op_va_list, clazz, methodID, args))
|
||||
#define JRI_CallStaticMethodShortA(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodShortA)(env, JRI_CallStaticMethodShort_op_array, clazz, methodID, args))
|
||||
|
||||
#define JRI_CallStaticMethodInt(env) ((*(env))->CallStaticMethodInt)
|
||||
#define JRI_CallStaticMethodIntV(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodIntV)(env, JRI_CallStaticMethodInt_op_va_list, clazz, methodID, args))
|
||||
#define JRI_CallStaticMethodIntA(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodIntA)(env, JRI_CallStaticMethodInt_op_array, clazz, methodID, args))
|
||||
|
||||
#define JRI_CallStaticMethodLong(env) ((*(env))->CallStaticMethodLong)
|
||||
#define JRI_CallStaticMethodLongV(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodLongV)(env, JRI_CallStaticMethodLong_op_va_list, clazz, methodID, args))
|
||||
#define JRI_CallStaticMethodLongA(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodLongA)(env, JRI_CallStaticMethodLong_op_array, clazz, methodID, args))
|
||||
|
||||
#define JRI_CallStaticMethodFloat(env) ((*(env))->CallStaticMethodFloat)
|
||||
#define JRI_CallStaticMethodFloatV(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodFloatV)(env, JRI_CallStaticMethodFloat_op_va_list, clazz, methodID, args))
|
||||
#define JRI_CallStaticMethodFloatA(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodFloatA)(env, JRI_CallStaticMethodFloat_op_array, clazz, methodID, args))
|
||||
|
||||
#define JRI_CallStaticMethodDouble(env) ((*(env))->CallStaticMethodDouble)
|
||||
#define JRI_CallStaticMethodDoubleV(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodDoubleV)(env, JRI_CallStaticMethodDouble_op_va_list, clazz, methodID, args))
|
||||
#define JRI_CallStaticMethodDoubleA(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodDoubleA)(env, JRI_CallStaticMethodDouble_op_array, clazz, methodID, args))
|
||||
|
||||
#define JRI_GetStaticFieldID(env, clazz, name, sig) \
|
||||
(((*(env))->GetStaticFieldID)(env, JRI_GetStaticFieldID_op, clazz, name, sig))
|
||||
|
||||
#define JRI_GetStaticField(env, clazz, fieldID) \
|
||||
(((*(env))->GetStaticField)(env, JRI_GetStaticField_op, clazz, fieldID))
|
||||
|
||||
#define JRI_GetStaticFieldBoolean(env, clazz, fieldID) \
|
||||
(((*(env))->GetStaticFieldBoolean)(env, JRI_GetStaticFieldBoolean_op, clazz, fieldID))
|
||||
|
||||
#define JRI_GetStaticFieldByte(env, clazz, fieldID) \
|
||||
(((*(env))->GetStaticFieldByte)(env, JRI_GetStaticFieldByte_op, clazz, fieldID))
|
||||
|
||||
#define JRI_GetStaticFieldChar(env, clazz, fieldID) \
|
||||
(((*(env))->GetStaticFieldChar)(env, JRI_GetStaticFieldChar_op, clazz, fieldID))
|
||||
|
||||
#define JRI_GetStaticFieldShort(env, clazz, fieldID) \
|
||||
(((*(env))->GetStaticFieldShort)(env, JRI_GetStaticFieldShort_op, clazz, fieldID))
|
||||
|
||||
#define JRI_GetStaticFieldInt(env, clazz, fieldID) \
|
||||
(((*(env))->GetStaticFieldInt)(env, JRI_GetStaticFieldInt_op, clazz, fieldID))
|
||||
|
||||
#define JRI_GetStaticFieldLong(env, clazz, fieldID) \
|
||||
(((*(env))->GetStaticFieldLong)(env, JRI_GetStaticFieldLong_op, clazz, fieldID))
|
||||
|
||||
#define JRI_GetStaticFieldFloat(env, clazz, fieldID) \
|
||||
(((*(env))->GetStaticFieldFloat)(env, JRI_GetStaticFieldFloat_op, clazz, fieldID))
|
||||
|
||||
#define JRI_GetStaticFieldDouble(env, clazz, fieldID) \
|
||||
(((*(env))->GetStaticFieldDouble)(env, JRI_GetStaticFieldDouble_op, clazz, fieldID))
|
||||
|
||||
#define JRI_SetStaticField(env, clazz, fieldID, value) \
|
||||
(((*(env))->SetStaticField)(env, JRI_SetStaticField_op, clazz, fieldID, value))
|
||||
|
||||
#define JRI_SetStaticFieldBoolean(env, clazz, fieldID, value) \
|
||||
(((*(env))->SetStaticFieldBoolean)(env, JRI_SetStaticFieldBoolean_op, clazz, fieldID, value))
|
||||
|
||||
#define JRI_SetStaticFieldByte(env, clazz, fieldID, value) \
|
||||
(((*(env))->SetStaticFieldByte)(env, JRI_SetStaticFieldByte_op, clazz, fieldID, value))
|
||||
|
||||
#define JRI_SetStaticFieldChar(env, clazz, fieldID, value) \
|
||||
(((*(env))->SetStaticFieldChar)(env, JRI_SetStaticFieldChar_op, clazz, fieldID, value))
|
||||
|
||||
#define JRI_SetStaticFieldShort(env, clazz, fieldID, value) \
|
||||
(((*(env))->SetStaticFieldShort)(env, JRI_SetStaticFieldShort_op, clazz, fieldID, value))
|
||||
|
||||
#define JRI_SetStaticFieldInt(env, clazz, fieldID, value) \
|
||||
(((*(env))->SetStaticFieldInt)(env, JRI_SetStaticFieldInt_op, clazz, fieldID, value))
|
||||
|
||||
#define JRI_SetStaticFieldLong(env, clazz, fieldID, value) \
|
||||
(((*(env))->SetStaticFieldLong)(env, JRI_SetStaticFieldLong_op, clazz, fieldID, value))
|
||||
|
||||
#define JRI_SetStaticFieldFloat(env, clazz, fieldID, value) \
|
||||
(((*(env))->SetStaticFieldFloat)(env, JRI_SetStaticFieldFloat_op, clazz, fieldID, value))
|
||||
|
||||
#define JRI_SetStaticFieldDouble(env, clazz, fieldID, value) \
|
||||
(((*(env))->SetStaticFieldDouble)(env, JRI_SetStaticFieldDouble_op, clazz, fieldID, value))
|
||||
|
||||
#define JRI_NewString(env, unicode, len) \
|
||||
(((*(env))->NewString)(env, JRI_NewString_op, unicode, len))
|
||||
|
||||
#define JRI_GetStringLength(env, string) \
|
||||
(((*(env))->GetStringLength)(env, JRI_GetStringLength_op, string))
|
||||
|
||||
#define JRI_GetStringChars(env, string) \
|
||||
(((*(env))->GetStringChars)(env, JRI_GetStringChars_op, string))
|
||||
|
||||
#define JRI_NewStringUTF(env, utf, len) \
|
||||
(((*(env))->NewStringUTF)(env, JRI_NewStringUTF_op, utf, len))
|
||||
|
||||
#define JRI_GetStringUTFLength(env, string) \
|
||||
(((*(env))->GetStringUTFLength)(env, JRI_GetStringUTFLength_op, string))
|
||||
|
||||
#define JRI_GetStringUTFChars(env, string) \
|
||||
(((*(env))->GetStringUTFChars)(env, JRI_GetStringUTFChars_op, string))
|
||||
|
||||
#define JRI_NewScalarArray(env, length, elementSig, initialElements) \
|
||||
(((*(env))->NewScalarArray)(env, JRI_NewScalarArray_op, length, elementSig, initialElements))
|
||||
|
||||
#define JRI_GetScalarArrayLength(env, array) \
|
||||
(((*(env))->GetScalarArrayLength)(env, JRI_GetScalarArrayLength_op, array))
|
||||
|
||||
#define JRI_GetScalarArrayElements(env, array) \
|
||||
(((*(env))->GetScalarArrayElements)(env, JRI_GetScalarArrayElements_op, array))
|
||||
|
||||
#define JRI_NewObjectArray(env, length, elementClass, initialElement) \
|
||||
(((*(env))->NewObjectArray)(env, JRI_NewObjectArray_op, length, elementClass, initialElement))
|
||||
|
||||
#define JRI_GetObjectArrayLength(env, array) \
|
||||
(((*(env))->GetObjectArrayLength)(env, JRI_GetObjectArrayLength_op, array))
|
||||
|
||||
#define JRI_GetObjectArrayElement(env, array, index) \
|
||||
(((*(env))->GetObjectArrayElement)(env, JRI_GetObjectArrayElement_op, array, index))
|
||||
|
||||
#define JRI_SetObjectArrayElement(env, array, index, value) \
|
||||
(((*(env))->SetObjectArrayElement)(env, JRI_SetObjectArrayElement_op, array, index, value))
|
||||
|
||||
#define JRI_RegisterNatives(env, clazz, nameAndSigArray, nativeProcArray) \
|
||||
(((*(env))->RegisterNatives)(env, JRI_RegisterNatives_op, clazz, nameAndSigArray, nativeProcArray))
|
||||
|
||||
#define JRI_UnregisterNatives(env, clazz) \
|
||||
(((*(env))->UnregisterNatives)(env, JRI_UnregisterNatives_op, clazz))
|
||||
|
||||
/*******************************************************************************
|
||||
* JRIEnv Interface
|
||||
******************************************************************************/
|
||||
|
||||
struct java_lang_Class;
|
||||
struct java_lang_Throwable;
|
||||
struct java_lang_Object;
|
||||
struct java_lang_String;
|
||||
|
||||
struct JRIEnvInterface {
|
||||
void* reserved0;
|
||||
void* reserved1;
|
||||
void* reserved2;
|
||||
struct java_lang_Class* (*LoadClass)(JRIEnv* env, jint op, jbyte* a, jsize aLen);
|
||||
struct java_lang_Class* (*FindClass)(JRIEnv* env, jint op, const char* a);
|
||||
void (*Throw)(JRIEnv* env, jint op, struct java_lang_Throwable* a);
|
||||
void (*ThrowNew)(JRIEnv* env, jint op, struct java_lang_Class* a, const char* b);
|
||||
struct java_lang_Throwable* (*ExceptionOccurred)(JRIEnv* env, jint op);
|
||||
void (*ExceptionDescribe)(JRIEnv* env, jint op);
|
||||
void (*ExceptionClear)(JRIEnv* env, jint op);
|
||||
jglobal (*NewGlobalRef)(JRIEnv* env, jint op, void* a);
|
||||
void (*DisposeGlobalRef)(JRIEnv* env, jint op, jglobal a);
|
||||
void* (*GetGlobalRef)(JRIEnv* env, jint op, jglobal a);
|
||||
void (*SetGlobalRef)(JRIEnv* env, jint op, jglobal a, void* b);
|
||||
jbool (*IsSameObject)(JRIEnv* env, jint op, void* a, void* b);
|
||||
void* (*NewObject)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
|
||||
void* (*NewObjectV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
|
||||
void* (*NewObjectA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
|
||||
struct java_lang_Class* (*GetObjectClass)(JRIEnv* env, jint op, void* a);
|
||||
jbool (*IsInstanceOf)(JRIEnv* env, jint op, void* a, struct java_lang_Class* b);
|
||||
jint (*GetMethodID)(JRIEnv* env, jint op, struct java_lang_Class* a, const char* b, const char* c);
|
||||
void* (*CallMethod)(JRIEnv* env, jint op, void* a, jint b, ...);
|
||||
void* (*CallMethodV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
|
||||
void* (*CallMethodA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
|
||||
jbool (*CallMethodBoolean)(JRIEnv* env, jint op, void* a, jint b, ...);
|
||||
jbool (*CallMethodBooleanV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
|
||||
jbool (*CallMethodBooleanA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
|
||||
jbyte (*CallMethodByte)(JRIEnv* env, jint op, void* a, jint b, ...);
|
||||
jbyte (*CallMethodByteV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
|
||||
jbyte (*CallMethodByteA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
|
||||
jchar (*CallMethodChar)(JRIEnv* env, jint op, void* a, jint b, ...);
|
||||
jchar (*CallMethodCharV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
|
||||
jchar (*CallMethodCharA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
|
||||
jshort (*CallMethodShort)(JRIEnv* env, jint op, void* a, jint b, ...);
|
||||
jshort (*CallMethodShortV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
|
||||
jshort (*CallMethodShortA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
|
||||
jint (*CallMethodInt)(JRIEnv* env, jint op, void* a, jint b, ...);
|
||||
jint (*CallMethodIntV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
|
||||
jint (*CallMethodIntA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
|
||||
jlong (*CallMethodLong)(JRIEnv* env, jint op, void* a, jint b, ...);
|
||||
jlong (*CallMethodLongV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
|
||||
jlong (*CallMethodLongA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
|
||||
jfloat (*CallMethodFloat)(JRIEnv* env, jint op, void* a, jint b, ...);
|
||||
jfloat (*CallMethodFloatV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
|
||||
jfloat (*CallMethodFloatA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
|
||||
jdouble (*CallMethodDouble)(JRIEnv* env, jint op, void* a, jint b, ...);
|
||||
jdouble (*CallMethodDoubleV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
|
||||
jdouble (*CallMethodDoubleA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
|
||||
jint (*GetFieldID)(JRIEnv* env, jint op, struct java_lang_Class* a, const char* b, const char* c);
|
||||
void* (*GetField)(JRIEnv* env, jint op, void* a, jint b);
|
||||
jbool (*GetFieldBoolean)(JRIEnv* env, jint op, void* a, jint b);
|
||||
jbyte (*GetFieldByte)(JRIEnv* env, jint op, void* a, jint b);
|
||||
jchar (*GetFieldChar)(JRIEnv* env, jint op, void* a, jint b);
|
||||
jshort (*GetFieldShort)(JRIEnv* env, jint op, void* a, jint b);
|
||||
jint (*GetFieldInt)(JRIEnv* env, jint op, void* a, jint b);
|
||||
jlong (*GetFieldLong)(JRIEnv* env, jint op, void* a, jint b);
|
||||
jfloat (*GetFieldFloat)(JRIEnv* env, jint op, void* a, jint b);
|
||||
jdouble (*GetFieldDouble)(JRIEnv* env, jint op, void* a, jint b);
|
||||
void (*SetField)(JRIEnv* env, jint op, void* a, jint b, void* c);
|
||||
void (*SetFieldBoolean)(JRIEnv* env, jint op, void* a, jint b, jbool c);
|
||||
void (*SetFieldByte)(JRIEnv* env, jint op, void* a, jint b, jbyte c);
|
||||
void (*SetFieldChar)(JRIEnv* env, jint op, void* a, jint b, jchar c);
|
||||
void (*SetFieldShort)(JRIEnv* env, jint op, void* a, jint b, jshort c);
|
||||
void (*SetFieldInt)(JRIEnv* env, jint op, void* a, jint b, jint c);
|
||||
void (*SetFieldLong)(JRIEnv* env, jint op, void* a, jint b, jlong c);
|
||||
void (*SetFieldFloat)(JRIEnv* env, jint op, void* a, jint b, jfloat c);
|
||||
void (*SetFieldDouble)(JRIEnv* env, jint op, void* a, jint b, jdouble c);
|
||||
jbool (*IsSubclassOf)(JRIEnv* env, jint op, struct java_lang_Class* a, struct java_lang_Class* b);
|
||||
jint (*GetStaticMethodID)(JRIEnv* env, jint op, struct java_lang_Class* a, const char* b, const char* c);
|
||||
void* (*CallStaticMethod)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
|
||||
void* (*CallStaticMethodV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
|
||||
void* (*CallStaticMethodA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
|
||||
jbool (*CallStaticMethodBoolean)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
|
||||
jbool (*CallStaticMethodBooleanV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
|
||||
jbool (*CallStaticMethodBooleanA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
|
||||
jbyte (*CallStaticMethodByte)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
|
||||
jbyte (*CallStaticMethodByteV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
|
||||
jbyte (*CallStaticMethodByteA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
|
||||
jchar (*CallStaticMethodChar)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
|
||||
jchar (*CallStaticMethodCharV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
|
||||
jchar (*CallStaticMethodCharA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
|
||||
jshort (*CallStaticMethodShort)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
|
||||
jshort (*CallStaticMethodShortV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
|
||||
jshort (*CallStaticMethodShortA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
|
||||
jint (*CallStaticMethodInt)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
|
||||
jint (*CallStaticMethodIntV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
|
||||
jint (*CallStaticMethodIntA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
|
||||
jlong (*CallStaticMethodLong)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
|
||||
jlong (*CallStaticMethodLongV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
|
||||
jlong (*CallStaticMethodLongA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
|
||||
jfloat (*CallStaticMethodFloat)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
|
||||
jfloat (*CallStaticMethodFloatV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
|
||||
jfloat (*CallStaticMethodFloatA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
|
||||
jdouble (*CallStaticMethodDouble)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
|
||||
jdouble (*CallStaticMethodDoubleV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
|
||||
jdouble (*CallStaticMethodDoubleA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
|
||||
jint (*GetStaticFieldID)(JRIEnv* env, jint op, struct java_lang_Class* a, const char* b, const char* c);
|
||||
void* (*GetStaticField)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
|
||||
jbool (*GetStaticFieldBoolean)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
|
||||
jbyte (*GetStaticFieldByte)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
|
||||
jchar (*GetStaticFieldChar)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
|
||||
jshort (*GetStaticFieldShort)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
|
||||
jint (*GetStaticFieldInt)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
|
||||
jlong (*GetStaticFieldLong)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
|
||||
jfloat (*GetStaticFieldFloat)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
|
||||
jdouble (*GetStaticFieldDouble)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
|
||||
void (*SetStaticField)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, void* c);
|
||||
void (*SetStaticFieldBoolean)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, jbool c);
|
||||
void (*SetStaticFieldByte)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, jbyte c);
|
||||
void (*SetStaticFieldChar)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, jchar c);
|
||||
void (*SetStaticFieldShort)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, jshort c);
|
||||
void (*SetStaticFieldInt)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, jint c);
|
||||
void (*SetStaticFieldLong)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, jlong c);
|
||||
void (*SetStaticFieldFloat)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, jfloat c);
|
||||
void (*SetStaticFieldDouble)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, jdouble c);
|
||||
struct java_lang_String* (*NewString)(JRIEnv* env, jint op, const jchar* a, jint b);
|
||||
jint (*GetStringLength)(JRIEnv* env, jint op, struct java_lang_String* a);
|
||||
const jchar* (*GetStringChars)(JRIEnv* env, jint op, struct java_lang_String* a);
|
||||
struct java_lang_String* (*NewStringUTF)(JRIEnv* env, jint op, const jbyte* a, jint b);
|
||||
jint (*GetStringUTFLength)(JRIEnv* env, jint op, struct java_lang_String* a);
|
||||
const jbyte* (*GetStringUTFChars)(JRIEnv* env, jint op, struct java_lang_String* a);
|
||||
void* (*NewScalarArray)(JRIEnv* env, jint op, jint a, const char* b, const jbyte* c);
|
||||
jint (*GetScalarArrayLength)(JRIEnv* env, jint op, void* a);
|
||||
jbyte* (*GetScalarArrayElements)(JRIEnv* env, jint op, void* a);
|
||||
void* (*NewObjectArray)(JRIEnv* env, jint op, jint a, struct java_lang_Class* b, void* c);
|
||||
jint (*GetObjectArrayLength)(JRIEnv* env, jint op, void* a);
|
||||
void* (*GetObjectArrayElement)(JRIEnv* env, jint op, void* a, jint b);
|
||||
void (*SetObjectArrayElement)(JRIEnv* env, jint op, void* a, jint b, void* c);
|
||||
void (*RegisterNatives)(JRIEnv* env, jint op, struct java_lang_Class* a, char** b, void** c);
|
||||
void (*UnregisterNatives)(JRIEnv* env, jint op, struct java_lang_Class* a);
|
||||
};
|
||||
|
||||
/*******************************************************************************
|
||||
* JRIEnv Operation IDs
|
||||
******************************************************************************/
|
||||
|
||||
typedef enum JRIEnvOperations {
|
||||
JRI_Reserved0_op,
|
||||
JRI_Reserved1_op,
|
||||
JRI_Reserved2_op,
|
||||
JRI_LoadClass_op,
|
||||
JRI_FindClass_op,
|
||||
JRI_Throw_op,
|
||||
JRI_ThrowNew_op,
|
||||
JRI_ExceptionOccurred_op,
|
||||
JRI_ExceptionDescribe_op,
|
||||
JRI_ExceptionClear_op,
|
||||
JRI_NewGlobalRef_op,
|
||||
JRI_DisposeGlobalRef_op,
|
||||
JRI_GetGlobalRef_op,
|
||||
JRI_SetGlobalRef_op,
|
||||
JRI_IsSameObject_op,
|
||||
JRI_NewObject_op,
|
||||
JRI_NewObject_op_va_list,
|
||||
JRI_NewObject_op_array,
|
||||
JRI_GetObjectClass_op,
|
||||
JRI_IsInstanceOf_op,
|
||||
JRI_GetMethodID_op,
|
||||
JRI_CallMethod_op,
|
||||
JRI_CallMethod_op_va_list,
|
||||
JRI_CallMethod_op_array,
|
||||
JRI_CallMethodBoolean_op,
|
||||
JRI_CallMethodBoolean_op_va_list,
|
||||
JRI_CallMethodBoolean_op_array,
|
||||
JRI_CallMethodByte_op,
|
||||
JRI_CallMethodByte_op_va_list,
|
||||
JRI_CallMethodByte_op_array,
|
||||
JRI_CallMethodChar_op,
|
||||
JRI_CallMethodChar_op_va_list,
|
||||
JRI_CallMethodChar_op_array,
|
||||
JRI_CallMethodShort_op,
|
||||
JRI_CallMethodShort_op_va_list,
|
||||
JRI_CallMethodShort_op_array,
|
||||
JRI_CallMethodInt_op,
|
||||
JRI_CallMethodInt_op_va_list,
|
||||
JRI_CallMethodInt_op_array,
|
||||
JRI_CallMethodLong_op,
|
||||
JRI_CallMethodLong_op_va_list,
|
||||
JRI_CallMethodLong_op_array,
|
||||
JRI_CallMethodFloat_op,
|
||||
JRI_CallMethodFloat_op_va_list,
|
||||
JRI_CallMethodFloat_op_array,
|
||||
JRI_CallMethodDouble_op,
|
||||
JRI_CallMethodDouble_op_va_list,
|
||||
JRI_CallMethodDouble_op_array,
|
||||
JRI_GetFieldID_op,
|
||||
JRI_GetField_op,
|
||||
JRI_GetFieldBoolean_op,
|
||||
JRI_GetFieldByte_op,
|
||||
JRI_GetFieldChar_op,
|
||||
JRI_GetFieldShort_op,
|
||||
JRI_GetFieldInt_op,
|
||||
JRI_GetFieldLong_op,
|
||||
JRI_GetFieldFloat_op,
|
||||
JRI_GetFieldDouble_op,
|
||||
JRI_SetField_op,
|
||||
JRI_SetFieldBoolean_op,
|
||||
JRI_SetFieldByte_op,
|
||||
JRI_SetFieldChar_op,
|
||||
JRI_SetFieldShort_op,
|
||||
JRI_SetFieldInt_op,
|
||||
JRI_SetFieldLong_op,
|
||||
JRI_SetFieldFloat_op,
|
||||
JRI_SetFieldDouble_op,
|
||||
JRI_IsSubclassOf_op,
|
||||
JRI_GetStaticMethodID_op,
|
||||
JRI_CallStaticMethod_op,
|
||||
JRI_CallStaticMethod_op_va_list,
|
||||
JRI_CallStaticMethod_op_array,
|
||||
JRI_CallStaticMethodBoolean_op,
|
||||
JRI_CallStaticMethodBoolean_op_va_list,
|
||||
JRI_CallStaticMethodBoolean_op_array,
|
||||
JRI_CallStaticMethodByte_op,
|
||||
JRI_CallStaticMethodByte_op_va_list,
|
||||
JRI_CallStaticMethodByte_op_array,
|
||||
JRI_CallStaticMethodChar_op,
|
||||
JRI_CallStaticMethodChar_op_va_list,
|
||||
JRI_CallStaticMethodChar_op_array,
|
||||
JRI_CallStaticMethodShort_op,
|
||||
JRI_CallStaticMethodShort_op_va_list,
|
||||
JRI_CallStaticMethodShort_op_array,
|
||||
JRI_CallStaticMethodInt_op,
|
||||
JRI_CallStaticMethodInt_op_va_list,
|
||||
JRI_CallStaticMethodInt_op_array,
|
||||
JRI_CallStaticMethodLong_op,
|
||||
JRI_CallStaticMethodLong_op_va_list,
|
||||
JRI_CallStaticMethodLong_op_array,
|
||||
JRI_CallStaticMethodFloat_op,
|
||||
JRI_CallStaticMethodFloat_op_va_list,
|
||||
JRI_CallStaticMethodFloat_op_array,
|
||||
JRI_CallStaticMethodDouble_op,
|
||||
JRI_CallStaticMethodDouble_op_va_list,
|
||||
JRI_CallStaticMethodDouble_op_array,
|
||||
JRI_GetStaticFieldID_op,
|
||||
JRI_GetStaticField_op,
|
||||
JRI_GetStaticFieldBoolean_op,
|
||||
JRI_GetStaticFieldByte_op,
|
||||
JRI_GetStaticFieldChar_op,
|
||||
JRI_GetStaticFieldShort_op,
|
||||
JRI_GetStaticFieldInt_op,
|
||||
JRI_GetStaticFieldLong_op,
|
||||
JRI_GetStaticFieldFloat_op,
|
||||
JRI_GetStaticFieldDouble_op,
|
||||
JRI_SetStaticField_op,
|
||||
JRI_SetStaticFieldBoolean_op,
|
||||
JRI_SetStaticFieldByte_op,
|
||||
JRI_SetStaticFieldChar_op,
|
||||
JRI_SetStaticFieldShort_op,
|
||||
JRI_SetStaticFieldInt_op,
|
||||
JRI_SetStaticFieldLong_op,
|
||||
JRI_SetStaticFieldFloat_op,
|
||||
JRI_SetStaticFieldDouble_op,
|
||||
JRI_NewString_op,
|
||||
JRI_GetStringLength_op,
|
||||
JRI_GetStringChars_op,
|
||||
JRI_NewStringUTF_op,
|
||||
JRI_GetStringUTFLength_op,
|
||||
JRI_GetStringUTFChars_op,
|
||||
JRI_NewScalarArray_op,
|
||||
JRI_GetScalarArrayLength_op,
|
||||
JRI_GetScalarArrayElements_op,
|
||||
JRI_NewObjectArray_op,
|
||||
JRI_GetObjectArrayLength_op,
|
||||
JRI_GetObjectArrayElement_op,
|
||||
JRI_SetObjectArrayElement_op,
|
||||
JRI_RegisterNatives_op,
|
||||
JRI_UnregisterNatives_op
|
||||
} JRIEnvOperations;
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* JRI_H */
|
||||
/******************************************************************************/
|
@ -1,499 +0,0 @@
|
||||
/*******************************************************************************
|
||||
* Java Runtime Interface - Machine Dependent Types
|
||||
* Copyright (c) 1996 Netscape Communications Corporation. All rights reserved.
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef JRI_MD_H
|
||||
#define JRI_MD_H
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*******************************************************************************
|
||||
* WHAT'S UP WITH THIS FILE?
|
||||
*
|
||||
* This is where we define the mystical JRI_PUBLIC_API macro that works on all
|
||||
* platforms. If you're running with Visual C++, Symantec C, or Borland's
|
||||
* development environment on the PC, you're all set. Or if you're on the Mac
|
||||
* with Metrowerks, Symantec or MPW with SC you're ok too. For UNIX it shouldn't
|
||||
* matter.
|
||||
*
|
||||
* On UNIX though you probably care about a couple of other symbols though:
|
||||
* IS_LITTLE_ENDIAN must be defined for little-endian systems
|
||||
* HAVE_LONG_LONG must be defined on systems that have 'long long' integers
|
||||
* HAVE_ALIGNED_LONGLONGS must be defined if long-longs must be 8 byte aligned
|
||||
* HAVE_ALIGNED_DOUBLES must be defined if doubles must be 8 byte aligned
|
||||
* IS_64 must be defined on 64-bit machines (like Dec Alpha)
|
||||
******************************************************************************/
|
||||
|
||||
/* DLL Entry modifiers... */
|
||||
|
||||
/* PC */
|
||||
#if defined(XP_PC) || defined(_WINDOWS) || defined(WIN32) || defined(_WIN32)
|
||||
# include <windows.h>
|
||||
# if defined(_MSC_VER)
|
||||
# if defined(WIN32) || defined(_WIN32)
|
||||
# define JRI_PUBLIC_API(ResultType) _declspec(dllexport) ResultType
|
||||
# define JRI_CALLBACK
|
||||
# else /* !_WIN32 */
|
||||
# if defined(_WINDLL)
|
||||
# define JRI_PUBLIC_API(ResultType) ResultType __cdecl __export __loadds
|
||||
# define JRI_CALLBACK __loadds
|
||||
# else /* !WINDLL */
|
||||
# define JRI_PUBLIC_API(ResultType) ResultType __cdecl __export
|
||||
# define JRI_CALLBACK __export
|
||||
# endif /* !WINDLL */
|
||||
# endif /* !_WIN32 */
|
||||
# elif defined(__BORLANDC__)
|
||||
# if defined(WIN32) || defined(_WIN32)
|
||||
# define JRI_PUBLIC_API(ResultType) __export ResultType
|
||||
# define JRI_CALLBACK
|
||||
# else /* !_WIN32 */
|
||||
# define JRI_PUBLIC_API(ResultType) ResultType _cdecl _export _loadds
|
||||
# define JRI_CALLBACK _loadds
|
||||
# endif
|
||||
# else
|
||||
# error Unsupported PC development environment.
|
||||
# endif
|
||||
# ifndef IS_LITTLE_ENDIAN
|
||||
# define IS_LITTLE_ENDIAN
|
||||
# endif
|
||||
|
||||
/* Mac */
|
||||
#elif macintosh || Macintosh || THINK_C
|
||||
# if defined(__MWERKS__) /* Metrowerks */
|
||||
# if !__option(enumsalwaysint)
|
||||
# error You need to define 'Enums Always Int' for your project.
|
||||
# endif
|
||||
# if defined(GENERATING68K) && !GENERATINGCFM
|
||||
# if !__option(fourbyteints)
|
||||
# error You need to define 'Struct Alignment: 68k' for your project.
|
||||
# endif
|
||||
# endif /* !GENERATINGCFM */
|
||||
# elif defined(__SC__) /* Symantec */
|
||||
# error What are the Symantec defines? (warren@netscape.com)
|
||||
# elif macintosh && applec /* MPW */
|
||||
# error Please upgrade to the latest MPW compiler (SC).
|
||||
# else
|
||||
# error Unsupported Mac development environment.
|
||||
# endif
|
||||
# define JRI_PUBLIC_API(ResultType) ResultType
|
||||
# define JRI_CALLBACK
|
||||
|
||||
/* Unix or else */
|
||||
#else
|
||||
# define JRI_PUBLIC_API(ResultType) ResultType
|
||||
# define JRI_CALLBACK
|
||||
#endif
|
||||
|
||||
#ifndef FAR /* for non-Win16 */
|
||||
#define FAR
|
||||
#endif
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
/* Java Scalar Types */
|
||||
|
||||
typedef unsigned char jbool;
|
||||
typedef char jbyte;
|
||||
typedef short jchar;
|
||||
typedef short jshort;
|
||||
#ifdef IS_64 /* XXX ok for alpha, but not right on all 64-bit architectures */
|
||||
typedef unsigned int juint;
|
||||
typedef int jint;
|
||||
#else
|
||||
typedef unsigned long juint;
|
||||
typedef long jint;
|
||||
#endif
|
||||
typedef float jfloat;
|
||||
typedef double jdouble;
|
||||
|
||||
typedef juint jsize;
|
||||
|
||||
/*******************************************************************************
|
||||
* jlong : long long (64-bit signed integer type) support.
|
||||
******************************************************************************/
|
||||
|
||||
/*
|
||||
** Bit masking macros. (n must be <= 31 to be portable)
|
||||
*/
|
||||
#define JRI_BIT(n) ((juint)1 << (n))
|
||||
#define JRI_BITMASK(n) (JRI_BIT(n) - 1)
|
||||
|
||||
#ifdef HAVE_LONG_LONG
|
||||
|
||||
#if !(defined(WIN32) || defined(_WIN32))
|
||||
typedef long long jlong;
|
||||
typedef unsigned long long julong;
|
||||
|
||||
#define jlong_MAXINT 0x7fffffffffffffffLL
|
||||
#define jlong_MININT 0x8000000000000000LL
|
||||
#define jlong_ZERO 0x0LL
|
||||
|
||||
#else
|
||||
typedef LONGLONG jlong;
|
||||
typedef DWORDLONG julong;
|
||||
|
||||
#define jlong_MAXINT 0x7fffffffffffffffi64
|
||||
#define jlong_MININT 0x8000000000000000i64
|
||||
#define jlong_ZERO 0x0i64
|
||||
|
||||
#endif
|
||||
|
||||
#define jlong_IS_ZERO(a) ((a) == 0)
|
||||
#define jlong_EQ(a, b) ((a) == (b))
|
||||
#define jlong_NE(a, b) ((a) != (b))
|
||||
#define jlong_GE_ZERO(a) ((a) >= 0)
|
||||
#define jlong_CMP(a, op, b) ((a) op (b))
|
||||
|
||||
#define jlong_AND(r, a, b) ((r) = (a) & (b))
|
||||
#define jlong_OR(r, a, b) ((r) = (a) | (b))
|
||||
#define jlong_XOR(r, a, b) ((r) = (a) ^ (b))
|
||||
#define jlong_OR2(r, a) ((r) = (r) | (a))
|
||||
#define jlong_NOT(r, a) ((r) = ~(a))
|
||||
|
||||
#define jlong_NEG(r, a) ((r) = -(a))
|
||||
#define jlong_ADD(r, a, b) ((r) = (a) + (b))
|
||||
#define jlong_SUB(r, a, b) ((r) = (a) - (b))
|
||||
|
||||
#define jlong_MUL(r, a, b) ((r) = (a) * (b))
|
||||
#define jlong_DIV(r, a, b) ((r) = (a) / (b))
|
||||
#define jlong_MOD(r, a, b) ((r) = (a) % (b))
|
||||
|
||||
#define jlong_SHL(r, a, b) ((r) = (a) << (b))
|
||||
#define jlong_SHR(r, a, b) ((r) = (a) >> (b))
|
||||
#define jlong_USHR(r, a, b) ((r) = (julong)(a) >> (b))
|
||||
#define jlong_ISHL(r, a, b) ((r) = ((jlong)(a)) << (b))
|
||||
|
||||
#define jlong_L2I(i, l) ((i) = (int)(l))
|
||||
#define jlong_L2UI(ui, l) ((ui) =(unsigned int)(l))
|
||||
#define jlong_L2F(f, l) ((f) = (l))
|
||||
#define jlong_L2D(d, l) ((d) = (l))
|
||||
|
||||
#define jlong_I2L(l, i) ((l) = (i))
|
||||
#define jlong_UI2L(l, ui) ((l) = (ui))
|
||||
#define jlong_F2L(l, f) ((l) = (f))
|
||||
#define jlong_D2L(l, d) ((l) = (d))
|
||||
|
||||
#define jlong_UDIVMOD(qp, rp, a, b) \
|
||||
(*(qp) = ((julong)(a) / (b)), \
|
||||
*(rp) = ((julong)(a) % (b)))
|
||||
|
||||
#else /* !HAVE_LONG_LONG */
|
||||
|
||||
typedef struct {
|
||||
#ifdef IS_LITTLE_ENDIAN
|
||||
juint lo, hi;
|
||||
#else
|
||||
juint hi, lo;
|
||||
#endif
|
||||
} jlong;
|
||||
typedef jlong julong;
|
||||
|
||||
extern jlong jlong_MAXINT, jlong_MININT, jlong_ZERO;
|
||||
|
||||
#define jlong_IS_ZERO(a) (((a).hi == 0) && ((a).lo == 0))
|
||||
#define jlong_EQ(a, b) (((a).hi == (b).hi) && ((a).lo == (b).lo))
|
||||
#define jlong_NE(a, b) (((a).hi != (b).hi) || ((a).lo != (b).lo))
|
||||
#define jlong_GE_ZERO(a) (((a).hi >> 31) == 0)
|
||||
|
||||
/*
|
||||
* NB: jlong_CMP and jlong_UCMP work only for strict relationals (<, >).
|
||||
*/
|
||||
#define jlong_CMP(a, op, b) (((int32)(a).hi op (int32)(b).hi) || \
|
||||
(((a).hi == (b).hi) && ((a).lo op (b).lo)))
|
||||
#define jlong_UCMP(a, op, b) (((a).hi op (b).hi) || \
|
||||
(((a).hi == (b).hi) && ((a).lo op (b).lo)))
|
||||
|
||||
#define jlong_AND(r, a, b) ((r).lo = (a).lo & (b).lo, \
|
||||
(r).hi = (a).hi & (b).hi)
|
||||
#define jlong_OR(r, a, b) ((r).lo = (a).lo | (b).lo, \
|
||||
(r).hi = (a).hi | (b).hi)
|
||||
#define jlong_XOR(r, a, b) ((r).lo = (a).lo ^ (b).lo, \
|
||||
(r).hi = (a).hi ^ (b).hi)
|
||||
#define jlong_OR2(r, a) ((r).lo = (r).lo | (a).lo, \
|
||||
(r).hi = (r).hi | (a).hi)
|
||||
#define jlong_NOT(r, a) ((r).lo = ~(a).lo, \
|
||||
(r).hi = ~(a).hi)
|
||||
|
||||
#define jlong_NEG(r, a) ((r).lo = -(int32)(a).lo, \
|
||||
(r).hi = -(int32)(a).hi - ((r).lo != 0))
|
||||
#define jlong_ADD(r, a, b) { \
|
||||
jlong _a, _b; \
|
||||
_a = a; _b = b; \
|
||||
(r).lo = _a.lo + _b.lo; \
|
||||
(r).hi = _a.hi + _b.hi + ((r).lo < _b.lo); \
|
||||
}
|
||||
|
||||
#define jlong_SUB(r, a, b) { \
|
||||
jlong _a, _b; \
|
||||
_a = a; _b = b; \
|
||||
(r).lo = _a.lo - _b.lo; \
|
||||
(r).hi = _a.hi - _b.hi - (_a.lo < _b.lo); \
|
||||
} \
|
||||
|
||||
/*
|
||||
* Multiply 64-bit operands a and b to get 64-bit result r.
|
||||
* First multiply the low 32 bits of a and b to get a 64-bit result in r.
|
||||
* Then add the outer and inner products to r.hi.
|
||||
*/
|
||||
#define jlong_MUL(r, a, b) { \
|
||||
jlong _a, _b; \
|
||||
_a = a; _b = b; \
|
||||
jlong_MUL32(r, _a.lo, _b.lo); \
|
||||
(r).hi += _a.hi * _b.lo + _a.lo * _b.hi; \
|
||||
}
|
||||
|
||||
/* XXX _jlong_lo16(a) = ((a) << 16 >> 16) is better on some archs (not on mips) */
|
||||
#define _jlong_lo16(a) ((a) & JRI_BITMASK(16))
|
||||
#define _jlong_hi16(a) ((a) >> 16)
|
||||
|
||||
/*
|
||||
* Multiply 32-bit operands a and b to get 64-bit result r.
|
||||
* Use polynomial expansion based on primitive field element (1 << 16).
|
||||
*/
|
||||
#define jlong_MUL32(r, a, b) { \
|
||||
juint _a1, _a0, _b1, _b0, _y0, _y1, _y2, _y3; \
|
||||
_a1 = _jlong_hi16(a), _a0 = _jlong_lo16(a); \
|
||||
_b1 = _jlong_hi16(b), _b0 = _jlong_lo16(b); \
|
||||
_y0 = _a0 * _b0; \
|
||||
_y1 = _a0 * _b1; \
|
||||
_y2 = _a1 * _b0; \
|
||||
_y3 = _a1 * _b1; \
|
||||
_y1 += _jlong_hi16(_y0); /* can't carry */ \
|
||||
_y1 += _y2; /* might carry */ \
|
||||
if (_y1 < _y2) _y3 += 1 << 16; /* propagate */ \
|
||||
(r).lo = (_jlong_lo16(_y1) << 16) + _jlong_lo16(_y0); \
|
||||
(r).hi = _y3 + _jlong_hi16(_y1); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Divide 64-bit unsigned operand a by 64-bit unsigned operand b, setting *qp
|
||||
* to the 64-bit unsigned quotient, and *rp to the 64-bit unsigned remainder.
|
||||
* Minimize effort if one of qp and rp is null.
|
||||
*/
|
||||
#define jlong_UDIVMOD(qp, rp, a, b) jlong_udivmod(qp, rp, a, b)
|
||||
|
||||
extern JRI_PUBLIC_API(void)
|
||||
jlong_udivmod(julong *qp, julong *rp, julong a, julong b);
|
||||
|
||||
#define jlong_DIV(r, a, b) { \
|
||||
jlong _a, _b; \
|
||||
juint _negative = (int32)(a).hi < 0; \
|
||||
if (_negative) { \
|
||||
jlong_NEG(_a, a); \
|
||||
} else { \
|
||||
_a = a; \
|
||||
} \
|
||||
if ((int32)(b).hi < 0) { \
|
||||
_negative ^= 1; \
|
||||
jlong_NEG(_b, b); \
|
||||
} else { \
|
||||
_b = b; \
|
||||
} \
|
||||
jlong_UDIVMOD(&(r), 0, _a, _b); \
|
||||
if (_negative) \
|
||||
jlong_NEG(r, r); \
|
||||
}
|
||||
|
||||
#define jlong_MOD(r, a, b) { \
|
||||
jlong _a, _b; \
|
||||
juint _negative = (int32)(a).hi < 0; \
|
||||
if (_negative) { \
|
||||
jlong_NEG(_a, a); \
|
||||
} else { \
|
||||
_a = a; \
|
||||
} \
|
||||
if ((int32)(b).hi < 0) { \
|
||||
jlong_NEG(_b, b); \
|
||||
} else { \
|
||||
_b = b; \
|
||||
} \
|
||||
jlong_UDIVMOD(0, &(r), _a, _b); \
|
||||
if (_negative) \
|
||||
jlong_NEG(r, r); \
|
||||
}
|
||||
|
||||
/*
|
||||
* NB: b is a juint, not jlong or julong, for the shift ops.
|
||||
*/
|
||||
#define jlong_SHL(r, a, b) { \
|
||||
if (b) { \
|
||||
jlong _a; \
|
||||
_a = a; \
|
||||
if ((b) < 32) { \
|
||||
(r).lo = _a.lo << (b); \
|
||||
(r).hi = (_a.hi << (b)) | (_a.lo >> (32 - (b))); \
|
||||
} else { \
|
||||
(r).lo = 0; \
|
||||
(r).hi = _a.lo << ((b) & 31); \
|
||||
} \
|
||||
} else { \
|
||||
(r) = (a); \
|
||||
} \
|
||||
}
|
||||
|
||||
/* a is an int32, b is int32, r is jlong */
|
||||
#define jlong_ISHL(r, a, b) { \
|
||||
if (b) { \
|
||||
jlong _a; \
|
||||
_a.lo = (a); \
|
||||
_a.hi = 0; \
|
||||
if ((b) < 32) { \
|
||||
(r).lo = (a) << (b); \
|
||||
(r).hi = ((a) >> (32 - (b))); \
|
||||
} else { \
|
||||
(r).lo = 0; \
|
||||
(r).hi = (a) << ((b) & 31); \
|
||||
} \
|
||||
} else { \
|
||||
(r).lo = (a); \
|
||||
(r).hi = 0; \
|
||||
} \
|
||||
}
|
||||
|
||||
#define jlong_SHR(r, a, b) { \
|
||||
if (b) { \
|
||||
jlong _a; \
|
||||
_a = a; \
|
||||
if ((b) < 32) { \
|
||||
(r).lo = (_a.hi << (32 - (b))) | (_a.lo >> (b)); \
|
||||
(r).hi = (int32)_a.hi >> (b); \
|
||||
} else { \
|
||||
(r).lo = (int32)_a.hi >> ((b) & 31); \
|
||||
(r).hi = (int32)_a.hi >> 31; \
|
||||
} \
|
||||
} else { \
|
||||
(r) = (a); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define jlong_USHR(r, a, b) { \
|
||||
if (b) { \
|
||||
jlong _a; \
|
||||
_a = a; \
|
||||
if ((b) < 32) { \
|
||||
(r).lo = (_a.hi << (32 - (b))) | (_a.lo >> (b)); \
|
||||
(r).hi = _a.hi >> (b); \
|
||||
} else { \
|
||||
(r).lo = _a.hi >> ((b) & 31); \
|
||||
(r).hi = 0; \
|
||||
} \
|
||||
} else { \
|
||||
(r) = (a); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define jlong_L2I(i, l) ((i) = (l).lo)
|
||||
#define jlong_L2UI(ui, l) ((ui) = (l).lo)
|
||||
#define jlong_L2F(f, l) { double _d; jlong_L2D(_d, l); (f) = (float) _d; }
|
||||
|
||||
#define jlong_L2D(d, l) { \
|
||||
int32 _negative; \
|
||||
jlong _absval; \
|
||||
\
|
||||
_negative = (l).hi >> 31; \
|
||||
if (_negative) { \
|
||||
jlong_NEG(_absval, l); \
|
||||
} else { \
|
||||
_absval = l; \
|
||||
} \
|
||||
(d) = (double)_absval.hi * 4.294967296e9 + _absval.lo; \
|
||||
if (_negative) \
|
||||
(d) = -(d); \
|
||||
}
|
||||
|
||||
#define jlong_I2L(l, i) ((l).hi = (i) >> 31, (l).lo = (i))
|
||||
#define jlong_UI2L(l, ui) ((l).hi = 0, (l).lo = (ui))
|
||||
#define jlong_F2L(l, f) { double _d = (double) f; jlong_D2L(l, _d); }
|
||||
|
||||
#define jlong_D2L(l, d) { \
|
||||
int _negative; \
|
||||
double _absval, _d_hi; \
|
||||
jlong _lo_d; \
|
||||
\
|
||||
_negative = ((d) < 0); \
|
||||
_absval = _negative ? -(d) : (d); \
|
||||
\
|
||||
(l).hi = (juint)(_absval / 4.294967296e9); \
|
||||
(l).lo = 0; \
|
||||
jlong_L2D(_d_hi, l); \
|
||||
_absval -= _d_hi; \
|
||||
_lo_d.hi = 0; \
|
||||
if (_absval < 0) { \
|
||||
_lo_d.lo = (juint) -_absval; \
|
||||
jlong_SUB(l, l, _lo_d); \
|
||||
} else { \
|
||||
_lo_d.lo = (juint) _absval; \
|
||||
jlong_ADD(l, l, _lo_d); \
|
||||
} \
|
||||
\
|
||||
if (_negative) \
|
||||
jlong_NEG(l, l); \
|
||||
}
|
||||
|
||||
#endif /* !HAVE_LONG_LONG */
|
||||
|
||||
/******************************************************************************/
|
||||
/*
|
||||
** JDK Stuff -- This stuff is still needed while we're using the JDK
|
||||
** dynamic linking strategy to call native methods.
|
||||
*/
|
||||
|
||||
typedef union JRI_JDK_stack_item {
|
||||
/* Non pointer items */
|
||||
jint i;
|
||||
jfloat f;
|
||||
jint o;
|
||||
/* Pointer items */
|
||||
void *h;
|
||||
void *p;
|
||||
unsigned char *addr;
|
||||
#ifdef IS_64
|
||||
double d;
|
||||
long l; /* == 64bits! */
|
||||
#endif
|
||||
} JRI_JDK_stack_item;
|
||||
|
||||
typedef union JRI_JDK_Java8Str {
|
||||
jint x[2];
|
||||
jdouble d;
|
||||
jlong l;
|
||||
void *p;
|
||||
float f;
|
||||
} JRI_JDK_Java8;
|
||||
|
||||
#ifdef HAVE_ALIGNED_LONGLONGS
|
||||
#define JRI_GET_INT64(_t,_addr) ( ((_t).x[0] = ((jint*)(_addr))[0]), \
|
||||
((_t).x[1] = ((jint*)(_addr))[1]), \
|
||||
(_t).l )
|
||||
#define JRI_SET_INT64(_t, _addr, _v) ( (_t).l = (_v), \
|
||||
((jint*)(_addr))[0] = (_t).x[0], \
|
||||
((jint*)(_addr))[1] = (_t).x[1] )
|
||||
#else
|
||||
#define JRI_GET_INT64(_t,_addr) (*(jlong*)(_addr))
|
||||
#define JRI_SET_INT64(_t, _addr, _v) (*(jlong*)(_addr) = (_v))
|
||||
#endif
|
||||
|
||||
/* If double's must be aligned on doubleword boundaries then define this */
|
||||
#ifdef HAVE_ALIGNED_DOUBLES
|
||||
#define JRI_GET_DOUBLE(_t,_addr) ( ((_t).x[0] = ((jint*)(_addr))[0]), \
|
||||
((_t).x[1] = ((jint*)(_addr))[1]), \
|
||||
(_t).d )
|
||||
#define JRI_SET_DOUBLE(_t, _addr, _v) ( (_t).d = (_v), \
|
||||
((jint*)(_addr))[0] = (_t).x[0], \
|
||||
((jint*)(_addr))[1] = (_t).x[1] )
|
||||
#else
|
||||
#define JRI_GET_DOUBLE(_t,_addr) (*(jdouble*)(_addr))
|
||||
#define JRI_SET_DOUBLE(_t, _addr, _v) (*(jdouble*)(_addr) = (_v))
|
||||
#endif
|
||||
|
||||
/******************************************************************************/
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* JRI_MD_H */
|
||||
/******************************************************************************/
|
@ -1,179 +0,0 @@
|
||||
/*******************************************************************************
|
||||
* Java Runtime Interface
|
||||
* Copyright (c) 1996 Netscape Communications Corporation. All rights reserved.
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef JRITYPES_H
|
||||
#define JRITYPES_H
|
||||
|
||||
#include "jri_md.h"
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*******************************************************************************
|
||||
* Types
|
||||
******************************************************************************/
|
||||
|
||||
struct JRIEnvInterface;
|
||||
|
||||
typedef void* JRIRef;
|
||||
typedef void* JRIGlobalRef;
|
||||
|
||||
typedef jint JRIInterfaceID[4];
|
||||
typedef jint JRIFieldID;
|
||||
typedef jint JRIMethodID;
|
||||
|
||||
/* synonyms: */
|
||||
typedef JRIGlobalRef jglobal;
|
||||
typedef JRIRef jref;
|
||||
|
||||
typedef union JRIValue {
|
||||
jbool z;
|
||||
jbyte b;
|
||||
jchar c;
|
||||
jshort s;
|
||||
jint i;
|
||||
jlong l;
|
||||
jfloat f;
|
||||
jdouble d;
|
||||
jref r;
|
||||
} JRIValue;
|
||||
|
||||
typedef JRIValue jvalue;
|
||||
|
||||
typedef enum JRIBoolean {
|
||||
JRIFalse = 0,
|
||||
JRITrue = 1
|
||||
} JRIBoolean;
|
||||
|
||||
typedef enum JRIConstant {
|
||||
JRIUninitialized = -1
|
||||
} JRIConstant;
|
||||
|
||||
/* convenience types: */
|
||||
typedef JRIRef jbooleanArray;
|
||||
typedef JRIRef jbyteArray;
|
||||
typedef JRIRef jcharArray;
|
||||
typedef JRIRef jshortArray;
|
||||
typedef JRIRef jintArray;
|
||||
typedef JRIRef jlongArray;
|
||||
typedef JRIRef jfloatArray;
|
||||
typedef JRIRef jdoubleArray;
|
||||
typedef JRIRef jobjectArray;
|
||||
typedef JRIRef jstringArray;
|
||||
typedef JRIRef jarrayArray;
|
||||
|
||||
#define JRIConstructorMethodName "<init>"
|
||||
|
||||
/*******************************************************************************
|
||||
* Signature Construction Macros
|
||||
******************************************************************************/
|
||||
|
||||
/*
|
||||
** These macros can be used to construct signature strings. Hopefully their names
|
||||
** are a little easier to remember than the single character they correspond to.
|
||||
** For example, to specify the signature of the method:
|
||||
**
|
||||
** public int read(byte b[], int off, int len);
|
||||
**
|
||||
** you could write something like this in C:
|
||||
**
|
||||
** char* readSig = JRISigMethod(JRISigArray(JRISigByte)
|
||||
** JRISigInt
|
||||
** JRISigInt) JRISigInt;
|
||||
**
|
||||
** Of course, don't put commas between the types.
|
||||
*/
|
||||
#define JRISigArray(T) "[" T
|
||||
#define JRISigByte "B"
|
||||
#define JRISigChar "C"
|
||||
#define JRISigClass(name) "L" name ";"
|
||||
#define JRISigFloat "F"
|
||||
#define JRISigDouble "D"
|
||||
#define JRISigMethod(args) "(" args ")"
|
||||
#define JRISigNoArgs ""
|
||||
#define JRISigInt "I"
|
||||
#define JRISigLong "J"
|
||||
#define JRISigShort "S"
|
||||
#define JRISigVoid "V"
|
||||
#define JRISigBoolean "Z"
|
||||
|
||||
/*******************************************************************************
|
||||
* Environments
|
||||
******************************************************************************/
|
||||
|
||||
extern JRI_PUBLIC_API(const struct JRIEnvInterface**)
|
||||
JRI_GetCurrentEnv(void);
|
||||
|
||||
/*******************************************************************************
|
||||
* Specific Scalar Array Types
|
||||
******************************************************************************/
|
||||
|
||||
/*
|
||||
** The JRI Native Method Interface does not support boolean arrays. This
|
||||
** is to allow Java runtime implementations to optimize boolean array
|
||||
** storage. Using the ScalarArray operations on boolean arrays is bound
|
||||
** to fail, so convert any boolean arrays to byte arrays in Java before
|
||||
** passing them to a native method.
|
||||
*/
|
||||
|
||||
#define JRI_NewByteArray(env, length, initialValues) \
|
||||
JRI_NewScalarArray(env, length, JRISigByte, (jbyte*)(initialValues))
|
||||
#define JRI_GetByteArrayLength(env, array) \
|
||||
JRI_GetScalarArrayLength(env, array)
|
||||
#define JRI_GetByteArrayElements(env, array) \
|
||||
JRI_GetScalarArrayElements(env, array)
|
||||
|
||||
#define JRI_NewCharArray(env, length, initialValues) \
|
||||
JRI_NewScalarArray(env, ((length) * sizeof(jchar)), JRISigChar, (jbyte*)(initialValues))
|
||||
#define JRI_GetCharArrayLength(env, array) \
|
||||
JRI_GetScalarArrayLength(env, array)
|
||||
#define JRI_GetCharArrayElements(env, array) \
|
||||
((jchar*)JRI_GetScalarArrayElements(env, array))
|
||||
|
||||
#define JRI_NewShortArray(env, length, initialValues) \
|
||||
JRI_NewScalarArray(env, ((length) * sizeof(jshort)), JRISigShort, (jbyte*)(initialValues))
|
||||
#define JRI_GetShortArrayLength(env, array) \
|
||||
JRI_GetScalarArrayLength(env, array)
|
||||
#define JRI_GetShortArrayElements(env, array) \
|
||||
((jshort*)JRI_GetScalarArrayElements(env, array))
|
||||
|
||||
#define JRI_NewIntArray(env, length, initialValues) \
|
||||
JRI_NewScalarArray(env, ((length) * sizeof(jint)), JRISigInt, (jbyte*)(initialValues))
|
||||
#define JRI_GetIntArrayLength(env, array) \
|
||||
JRI_GetScalarArrayLength(env, array)
|
||||
#define JRI_GetIntArrayElements(env, array) \
|
||||
((jint*)JRI_GetScalarArrayElements(env, array))
|
||||
|
||||
#define JRI_NewLongArray(env, length, initialValues) \
|
||||
JRI_NewScalarArray(env, ((length) * sizeof(jlong)), JRISigLong, (jbyte*)(initialValues))
|
||||
#define JRI_GetLongArrayLength(env, array) \
|
||||
JRI_GetScalarArrayLength(env, array)
|
||||
#define JRI_GetLongArrayElements(env, array) \
|
||||
((jlong*)JRI_GetScalarArrayElements(env, array))
|
||||
|
||||
#define JRI_NewFloatArray(env, length, initialValues) \
|
||||
JRI_NewScalarArray(env, ((length) * sizeof(jfloat)), JRISigFloat, (jbyte*)(initialValues))
|
||||
#define JRI_GetFloatArrayLength(env, array) \
|
||||
JRI_GetScalarArrayLength(env, array)
|
||||
#define JRI_GetFloatArrayElements(env, array) \
|
||||
((jfloat*)JRI_GetScalarArrayElements(env, array))
|
||||
|
||||
#define JRI_NewDoubleArray(env, length, initialValues) \
|
||||
JRI_NewScalarArray(env, ((length) * sizeof(jdouble)), JRISigDouble, (jbyte*)(initialValues))
|
||||
#define JRI_GetDoubleArrayLength(env, array) \
|
||||
JRI_GetScalarArrayLength(env, array)
|
||||
#define JRI_GetDoubleArrayElements(env, array) \
|
||||
((jdouble*)JRI_GetScalarArrayElements(env, array))
|
||||
|
||||
/******************************************************************************/
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* JRITYPES_H */
|
||||
/******************************************************************************/
|
@ -1,391 +0,0 @@
|
||||
/*
|
||||
* npapi.h $Revision: 1.1 $
|
||||
* Netscape client plug-in API spec
|
||||
*/
|
||||
|
||||
#ifndef _NPAPI_H_
|
||||
#define _NPAPI_H_
|
||||
|
||||
#include "jri.h" /* Java Runtime Interface */
|
||||
|
||||
|
||||
/* XXX this needs to get out of here */
|
||||
#if defined(__MWERKS__)
|
||||
#ifndef XP_MAC
|
||||
#define XP_MAC
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
/* Plugin Version Constants */
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
#define NP_VERSION_MAJOR 0
|
||||
#define NP_VERSION_MINOR 9
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
/* Definition of Basic Types */
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
#ifndef _UINT16
|
||||
typedef unsigned short uint16;
|
||||
#endif
|
||||
#ifndef _UINT32
|
||||
#if defined(__alpha)
|
||||
typedef unsigned int uint32;
|
||||
#else /* __alpha */
|
||||
typedef unsigned long uint32;
|
||||
#endif /* __alpha */
|
||||
#endif
|
||||
#ifndef _INT16
|
||||
typedef short int16;
|
||||
#endif
|
||||
#ifndef _INT32
|
||||
#if defined(__alpha)
|
||||
typedef int int32;
|
||||
#else /* __alpha */
|
||||
typedef long int32;
|
||||
#endif /* __alpha */
|
||||
#endif
|
||||
|
||||
#ifndef FALSE
|
||||
#define FALSE (0)
|
||||
#endif
|
||||
#ifndef TRUE
|
||||
#define TRUE (1)
|
||||
#endif
|
||||
#ifndef NULL
|
||||
#define NULL (0L)
|
||||
#endif
|
||||
|
||||
typedef unsigned char NPBool;
|
||||
typedef void* NPEvent;
|
||||
typedef int16 NPError;
|
||||
typedef int16 NPReason;
|
||||
typedef char* NPMIMEType;
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
/* Structures and definitions */
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
/*
|
||||
* NPP is a plug-in's opaque instance handle
|
||||
*/
|
||||
typedef struct _NPP
|
||||
{
|
||||
void* pdata; /* plug-in private data */
|
||||
void* ndata; /* netscape private data */
|
||||
} NPP_t;
|
||||
|
||||
typedef NPP_t* NPP;
|
||||
|
||||
|
||||
typedef struct _NPStream
|
||||
{
|
||||
void* pdata; /* plug-in private data */
|
||||
void* ndata; /* netscape private data */
|
||||
const char* url;
|
||||
uint32 end;
|
||||
uint32 lastmodified;
|
||||
void* notifyData;
|
||||
} NPStream;
|
||||
|
||||
|
||||
typedef struct _NPByteRange
|
||||
{
|
||||
int32 offset; /* negative offset means from the end */
|
||||
uint32 length;
|
||||
struct _NPByteRange* next;
|
||||
} NPByteRange;
|
||||
|
||||
|
||||
typedef struct _NPSavedData
|
||||
{
|
||||
int32 len;
|
||||
void* buf;
|
||||
} NPSavedData;
|
||||
|
||||
|
||||
typedef struct _NPRect
|
||||
{
|
||||
uint16 top;
|
||||
uint16 left;
|
||||
uint16 bottom;
|
||||
uint16 right;
|
||||
} NPRect;
|
||||
|
||||
|
||||
#ifdef XP_UNIX
|
||||
/*
|
||||
* Unix specific structures and definitions
|
||||
*/
|
||||
#include <X11/Xlib.h>
|
||||
|
||||
/*
|
||||
* Callback Structures.
|
||||
*
|
||||
* These are used to pass additional platform specific information.
|
||||
*/
|
||||
enum {
|
||||
NP_SETWINDOW = 1
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int32 type;
|
||||
} NPAnyCallbackStruct;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int32 type;
|
||||
Display* display;
|
||||
Visual* visual;
|
||||
Colormap colormap;
|
||||
unsigned int depth;
|
||||
} NPSetWindowCallbackStruct;
|
||||
|
||||
/*
|
||||
* List of variable names for which NPP_GetValue shall be implemented
|
||||
*/
|
||||
typedef enum {
|
||||
NPPVpluginNameString = 1,
|
||||
NPPVpluginDescriptionString
|
||||
} NPPVariable;
|
||||
|
||||
/*
|
||||
* List of variable names for which NPN_GetValue is implemented by Mozilla
|
||||
*/
|
||||
typedef enum {
|
||||
NPNVxDisplay = 1,
|
||||
NPNVxtAppContext
|
||||
} NPNVariable;
|
||||
|
||||
#endif /* XP_UNIX */
|
||||
|
||||
|
||||
typedef struct _NPWindow
|
||||
{
|
||||
void* window; /* Platform specific window handle */
|
||||
uint32 x; /* Position of top left corner relative */
|
||||
uint32 y; /* to a netscape page. */
|
||||
uint32 width; /* Maximum window size */
|
||||
uint32 height;
|
||||
NPRect clipRect; /* Clipping rectangle in port coordinates */
|
||||
/* Used by MAC only. */
|
||||
#ifdef XP_UNIX
|
||||
void * ws_info; /* Platform-dependent additonal data */
|
||||
#endif /* XP_UNIX */
|
||||
} NPWindow;
|
||||
|
||||
|
||||
typedef struct _NPFullPrint
|
||||
{
|
||||
NPBool pluginPrinted; /* Set TRUE if plugin handled fullscreen */
|
||||
/* printing */
|
||||
NPBool printOne; /* TRUE if plugin should print one copy */
|
||||
/* to default printer */
|
||||
void* platformPrint; /* Platform-specific printing info */
|
||||
} NPFullPrint;
|
||||
|
||||
typedef struct _NPEmbedPrint
|
||||
{
|
||||
NPWindow window;
|
||||
void* platformPrint; /* Platform-specific printing info */
|
||||
} NPEmbedPrint;
|
||||
|
||||
typedef struct _NPPrint
|
||||
{
|
||||
uint16 mode; /* NP_FULL or NP_EMBED */
|
||||
union
|
||||
{
|
||||
NPFullPrint fullPrint; /* if mode is NP_FULL */
|
||||
NPEmbedPrint embedPrint; /* if mode is NP_EMBED */
|
||||
} print;
|
||||
} NPPrint;
|
||||
|
||||
|
||||
#ifdef XP_MAC
|
||||
/*
|
||||
* Mac-specific structures and definitions.
|
||||
*/
|
||||
|
||||
#include <Quickdraw.h>
|
||||
#include <Events.h>
|
||||
|
||||
typedef struct NP_Port
|
||||
{
|
||||
CGrafPtr port; /* Grafport */
|
||||
int32 portx; /* position inside the topmost window */
|
||||
int32 porty;
|
||||
} NP_Port;
|
||||
|
||||
/*
|
||||
* Non-standard event types that can be passed to HandleEvent
|
||||
*/
|
||||
#define getFocusEvent (osEvt + 16)
|
||||
#define loseFocusEvent (osEvt + 17)
|
||||
#define adjustCursorEvent (osEvt + 18)
|
||||
|
||||
#endif /* XP_MAC */
|
||||
|
||||
|
||||
/*
|
||||
* Values for mode passed to NPP_New:
|
||||
*/
|
||||
#define NP_EMBED 1
|
||||
#define NP_FULL 2
|
||||
|
||||
/*
|
||||
* Values for stream type passed to NPP_NewStream:
|
||||
*/
|
||||
#define NP_NORMAL 1
|
||||
#define NP_SEEK 2
|
||||
#define NP_ASFILE 3
|
||||
#define NP_ASFILEONLY 4
|
||||
|
||||
#define NP_MAXREADY (((unsigned)(~0)<<1)>>1)
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
/* Error and Reason Code definitions */
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
/*
|
||||
* Values of type NPError:
|
||||
*/
|
||||
#define NPERR_BASE 0
|
||||
#define NPERR_NO_ERROR (NPERR_BASE + 0)
|
||||
#define NPERR_GENERIC_ERROR (NPERR_BASE + 1)
|
||||
#define NPERR_INVALID_INSTANCE_ERROR (NPERR_BASE + 2)
|
||||
#define NPERR_INVALID_FUNCTABLE_ERROR (NPERR_BASE + 3)
|
||||
#define NPERR_MODULE_LOAD_FAILED_ERROR (NPERR_BASE + 4)
|
||||
#define NPERR_OUT_OF_MEMORY_ERROR (NPERR_BASE + 5)
|
||||
#define NPERR_INVALID_PLUGIN_ERROR (NPERR_BASE + 6)
|
||||
#define NPERR_INVALID_PLUGIN_DIR_ERROR (NPERR_BASE + 7)
|
||||
#define NPERR_INCOMPATIBLE_VERSION_ERROR (NPERR_BASE + 8)
|
||||
#define NPERR_INVALID_PARAM (NPERR_BASE + 9)
|
||||
#define NPERR_INVALID_URL (NPERR_BASE + 10)
|
||||
#define NPERR_FILE_NOT_FOUND (NPERR_BASE + 11)
|
||||
#define NPERR_NO_DATA (NPERR_BASE + 12)
|
||||
#define NPERR_STREAM_NOT_SEEKABLE (NPERR_BASE + 13)
|
||||
|
||||
/*
|
||||
* Values of type NPReason:
|
||||
*/
|
||||
#define NPRES_BASE 0
|
||||
#define NPRES_DONE (NPRES_BASE + 0)
|
||||
#define NPRES_NETWORK_ERR (NPRES_BASE + 1)
|
||||
#define NPRES_USER_BREAK (NPRES_BASE + 2)
|
||||
|
||||
/*
|
||||
* Don't use these obsolete error codes any more.
|
||||
*/
|
||||
#define NP_NOERR NP_NOERR_is_obsolete_use_NPERR_NO_ERROR
|
||||
#define NP_EINVAL NP_EINVAL_is_obsolete_use_NPERR_GENERIC_ERROR
|
||||
#define NP_EABORT NP_EABORT_is_obsolete_use_NPRES_USER_BREAK
|
||||
|
||||
/*
|
||||
* Version feature information
|
||||
*/
|
||||
#define NPVERS_HAS_STREAMOUTPUT 8
|
||||
#define NPVERS_HAS_NOTIFICATION 9
|
||||
#define NPVERS_HAS_LIVECONNECT 9
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
/* Function Prototypes */
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
#if defined(_WINDOWS) && !defined(WIN32)
|
||||
#define NP_LOADDS _loadds
|
||||
#else
|
||||
#define NP_LOADDS
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* NPP_* functions are provided by the plugin and called by the navigator.
|
||||
*/
|
||||
|
||||
#ifdef XP_UNIX
|
||||
char* NPP_GetMIMEDescription(void);
|
||||
NPError NPP_GetValue(void *instance, NPPVariable variable,
|
||||
void *value);
|
||||
#endif /* XP_UNIX */
|
||||
NPError NPP_Initialize(void);
|
||||
void NPP_Shutdown(void);
|
||||
NPError NP_LOADDS NPP_New(NPMIMEType pluginType, NPP instance,
|
||||
uint16 mode, int16 argc, char* argn[],
|
||||
char* argv[], NPSavedData* saved);
|
||||
NPError NP_LOADDS NPP_Destroy(NPP instance, NPSavedData** save);
|
||||
NPError NP_LOADDS NPP_SetWindow(NPP instance, NPWindow* window);
|
||||
NPError NP_LOADDS NPP_NewStream(NPP instance, NPMIMEType type,
|
||||
NPStream* stream, NPBool seekable,
|
||||
uint16* stype);
|
||||
NPError NP_LOADDS NPP_DestroyStream(NPP instance, NPStream* stream,
|
||||
NPReason reason);
|
||||
int32 NP_LOADDS NPP_WriteReady(NPP instance, NPStream* stream);
|
||||
int32 NP_LOADDS NPP_Write(NPP instance, NPStream* stream, int32 offset,
|
||||
int32 len, void* buffer);
|
||||
void NP_LOADDS NPP_StreamAsFile(NPP instance, NPStream* stream,
|
||||
const char* fname);
|
||||
void NP_LOADDS NPP_Print(NPP instance, NPPrint* platformPrint);
|
||||
int16 NPP_HandleEvent(NPP instance, void* event);
|
||||
void NPP_URLNotify(NPP instance, const char* url,
|
||||
NPReason reason, void* notifyData);
|
||||
jref NPP_GetJavaClass(void);
|
||||
|
||||
|
||||
/*
|
||||
* NPN_* functions are provided by the navigator and called by the plugin.
|
||||
*/
|
||||
|
||||
#ifdef XP_UNIX
|
||||
NPError NPN_GetValue(NPP instance, NPNVariable variable,
|
||||
void *value);
|
||||
#endif /* XP_UNIX */
|
||||
void NPN_Version(int* plugin_major, int* plugin_minor,
|
||||
int* netscape_major, int* netscape_minor);
|
||||
NPError NPN_GetURLNotify(NPP instance, const char* url,
|
||||
const char* target, void* notifyData);
|
||||
NPError NPN_GetURL(NPP instance, const char* url,
|
||||
const char* target);
|
||||
NPError NPN_PostURLNotify(NPP instance, const char* url,
|
||||
const char* target, uint32 len,
|
||||
const char* buf, NPBool file,
|
||||
void* notifyData);
|
||||
NPError NPN_PostURL(NPP instance, const char* url,
|
||||
const char* target, uint32 len,
|
||||
const char* buf, NPBool file);
|
||||
NPError NPN_RequestRead(NPStream* stream, NPByteRange* rangeList);
|
||||
NPError NPN_NewStream(NPP instance, NPMIMEType type,
|
||||
const char* target, NPStream** stream);
|
||||
int32 NPN_Write(NPP instance, NPStream* stream, int32 len,
|
||||
void* buffer);
|
||||
NPError NPN_DestroyStream(NPP instance, NPStream* stream,
|
||||
NPReason reason);
|
||||
void NPN_Status(NPP instance, const char* message);
|
||||
const char* NPN_UserAgent(NPP instance);
|
||||
void* NPN_MemAlloc(uint32 size);
|
||||
void NPN_MemFree(void* ptr);
|
||||
uint32 NPN_MemFlush(uint32 size);
|
||||
void NPN_ReloadPlugins(NPBool reloadPages);
|
||||
JRIEnv* NPN_GetJavaEnv(void);
|
||||
jref NPN_GetJavaPeer(NPP instance);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* end extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /* _NPAPI_H_ */
|
@ -1,407 +0,0 @@
|
||||
/*
|
||||
* npunix.c
|
||||
*
|
||||
* Netscape Client Plugin API
|
||||
* - Wrapper function to interface with the Netscape Navigator
|
||||
*
|
||||
* dp Suresh <dp@netscape.com>
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
* PLUGIN DEVELOPERS:
|
||||
* YOU WILL NOT NEED TO EDIT THIS FILE.
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#define XP_UNIX 1
|
||||
|
||||
#include <stdio.h>
|
||||
#include "npapi.h"
|
||||
#include "npupp.h"
|
||||
|
||||
/*
|
||||
* Define PLUGIN_TRACE to have the wrapper functions print
|
||||
* messages to fd 3 or 4 (cannot use stderr - ns3 grabs that)
|
||||
* whenever they are called.
|
||||
*/
|
||||
|
||||
#ifdef PLUGIN_TRACE
|
||||
#include <stdio.h>
|
||||
#define PLUGINDEBUGSTR(msg) fprintf(out(), "%s\n", msg)
|
||||
#else
|
||||
#define PLUGINDEBUGSTR(msg)
|
||||
#endif
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
*
|
||||
* Globals
|
||||
*
|
||||
***********************************************************************/
|
||||
|
||||
static NPNetscapeFuncs gNetscapeFuncs; /* Netscape Function table */
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
*
|
||||
* Wrapper functions : plugin calling Netscape Navigator
|
||||
*
|
||||
* These functions let the plugin developer just call the APIs
|
||||
* as documented and defined in npapi.h, without needing to know
|
||||
* about the function table and call macros in npupp.h.
|
||||
*
|
||||
***********************************************************************/
|
||||
|
||||
void
|
||||
NPN_Version(int* plugin_major, int* plugin_minor,
|
||||
int* netscape_major, int* netscape_minor)
|
||||
{
|
||||
*plugin_major = NP_VERSION_MAJOR;
|
||||
*plugin_minor = NP_VERSION_MINOR;
|
||||
|
||||
/* Major version is in high byte */
|
||||
*netscape_major = gNetscapeFuncs.version >> 8;
|
||||
/* Minor version is in low byte */
|
||||
*netscape_minor = gNetscapeFuncs.version & 0xFF;
|
||||
}
|
||||
|
||||
NPError
|
||||
NPN_GetValue(NPP instance, NPNVariable variable, void *r_value)
|
||||
{
|
||||
return CallNPN_GetValueProc(gNetscapeFuncs.getvalue,
|
||||
instance, variable, r_value);
|
||||
}
|
||||
|
||||
NPError
|
||||
NPN_GetURL(NPP instance, const char* url, const char* window)
|
||||
{
|
||||
return CallNPN_GetURLProc(gNetscapeFuncs.geturl, instance, url, window);
|
||||
}
|
||||
|
||||
NPError
|
||||
NPN_PostURL(NPP instance, const char* url, const char* window,
|
||||
uint32 len, const char* buf, NPBool file)
|
||||
{
|
||||
return CallNPN_PostURLProc(gNetscapeFuncs.posturl, instance,
|
||||
url, window, len, buf, file);
|
||||
}
|
||||
|
||||
NPError
|
||||
NPN_RequestRead(NPStream* stream, NPByteRange* rangeList)
|
||||
{
|
||||
return CallNPN_RequestReadProc(gNetscapeFuncs.requestread,
|
||||
stream, rangeList);
|
||||
}
|
||||
|
||||
NPError
|
||||
NPN_NewStream(NPP instance, NPMIMEType type, const char *window,
|
||||
NPStream** stream_ptr)
|
||||
{
|
||||
return CallNPN_NewStreamProc(gNetscapeFuncs.newstream, instance,
|
||||
type, window, stream_ptr);
|
||||
}
|
||||
|
||||
int32
|
||||
NPN_Write(NPP instance, NPStream* stream, int32 len, void* buffer)
|
||||
{
|
||||
return CallNPN_WriteProc(gNetscapeFuncs.write, instance,
|
||||
stream, len, buffer);
|
||||
}
|
||||
|
||||
NPError
|
||||
NPN_DestroyStream(NPP instance, NPStream* stream, NPError reason)
|
||||
{
|
||||
return CallNPN_DestroyStreamProc(gNetscapeFuncs.destroystream,
|
||||
instance, stream, reason);
|
||||
}
|
||||
|
||||
void
|
||||
NPN_Status(NPP instance, const char* message)
|
||||
{
|
||||
CallNPN_StatusProc(gNetscapeFuncs.status, instance, message);
|
||||
}
|
||||
|
||||
const char*
|
||||
NPN_UserAgent(NPP instance)
|
||||
{
|
||||
return CallNPN_UserAgentProc(gNetscapeFuncs.uagent, instance);
|
||||
}
|
||||
|
||||
void*
|
||||
NPN_MemAlloc(uint32 size)
|
||||
{
|
||||
return CallNPN_MemAllocProc(gNetscapeFuncs.memalloc, size);
|
||||
}
|
||||
|
||||
void NPN_MemFree(void* ptr)
|
||||
{
|
||||
CallNPN_MemFreeProc(gNetscapeFuncs.memfree, ptr);
|
||||
}
|
||||
|
||||
uint32 NPN_MemFlush(uint32 size)
|
||||
{
|
||||
return CallNPN_MemFlushProc(gNetscapeFuncs.memflush, size);
|
||||
}
|
||||
|
||||
void NPN_ReloadPlugins(NPBool reloadPages)
|
||||
{
|
||||
CallNPN_ReloadPluginsProc(gNetscapeFuncs.reloadplugins, reloadPages);
|
||||
}
|
||||
|
||||
JRIEnv* NPN_GetJavaEnv()
|
||||
{
|
||||
return CallNPN_GetJavaEnvProc(gNetscapeFuncs.getJavaEnv);
|
||||
}
|
||||
|
||||
jref NPN_GetJavaPeer(NPP instance)
|
||||
{
|
||||
return CallNPN_GetJavaPeerProc(gNetscapeFuncs.getJavaPeer,
|
||||
instance);
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
*
|
||||
* Wrapper functions : Netscape Navigator -> plugin
|
||||
*
|
||||
* These functions let the plugin developer just create the APIs
|
||||
* as documented and defined in npapi.h, without needing to
|
||||
* install those functions in the function table or worry about
|
||||
* setting up globals for 68K plugins.
|
||||
*
|
||||
***********************************************************************/
|
||||
|
||||
NPError
|
||||
Private_New(NPMIMEType pluginType, NPP instance, uint16 mode,
|
||||
int16 argc, char* argn[], char* argv[], NPSavedData* saved)
|
||||
{
|
||||
NPError ret;
|
||||
PLUGINDEBUGSTR("New");
|
||||
ret = NPP_New(pluginType, instance, mode, argc, argn, argv, saved);
|
||||
return ret;
|
||||
}
|
||||
|
||||
NPError
|
||||
Private_Destroy(NPP instance, NPSavedData** save)
|
||||
{
|
||||
PLUGINDEBUGSTR("Destroy");
|
||||
return NPP_Destroy(instance, save);
|
||||
}
|
||||
|
||||
NPError
|
||||
Private_SetWindow(NPP instance, NPWindow* window)
|
||||
{
|
||||
NPError err;
|
||||
PLUGINDEBUGSTR("SetWindow");
|
||||
err = NPP_SetWindow(instance, window);
|
||||
return err;
|
||||
}
|
||||
|
||||
NPError
|
||||
Private_NewStream(NPP instance, NPMIMEType type, NPStream* stream,
|
||||
NPBool seekable, uint16* stype)
|
||||
{
|
||||
NPError err;
|
||||
PLUGINDEBUGSTR("NewStream");
|
||||
err = NPP_NewStream(instance, type, stream, seekable, stype);
|
||||
return err;
|
||||
}
|
||||
|
||||
int32
|
||||
Private_WriteReady(NPP instance, NPStream* stream)
|
||||
{
|
||||
unsigned int result;
|
||||
PLUGINDEBUGSTR("WriteReady");
|
||||
result = NPP_WriteReady(instance, stream);
|
||||
return result;
|
||||
}
|
||||
|
||||
int32
|
||||
Private_Write(NPP instance, NPStream* stream, int32 offset, int32 len,
|
||||
void* buffer)
|
||||
{
|
||||
unsigned int result;
|
||||
PLUGINDEBUGSTR("Write");
|
||||
result = NPP_Write(instance, stream, offset, len, buffer);
|
||||
return result;
|
||||
}
|
||||
|
||||
void
|
||||
Private_StreamAsFile(NPP instance, NPStream* stream, const char* fname)
|
||||
{
|
||||
PLUGINDEBUGSTR("StreamAsFile");
|
||||
NPP_StreamAsFile(instance, stream, fname);
|
||||
}
|
||||
|
||||
|
||||
NPError
|
||||
Private_DestroyStream(NPP instance, NPStream* stream, NPError reason)
|
||||
{
|
||||
NPError err;
|
||||
PLUGINDEBUGSTR("DestroyStream");
|
||||
err = NPP_DestroyStream(instance, stream, reason);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
Private_Print(NPP instance, NPPrint* platformPrint)
|
||||
{
|
||||
PLUGINDEBUGSTR("Print");
|
||||
NPP_Print(instance, platformPrint);
|
||||
}
|
||||
|
||||
JRIGlobalRef
|
||||
Private_GetJavaClass(void)
|
||||
{
|
||||
jref clazz = NPP_GetJavaClass();
|
||||
if (clazz) {
|
||||
JRIEnv* env = NPN_GetJavaEnv();
|
||||
return JRI_NewGlobalRef(env, clazz);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
*
|
||||
* These functions are located automagically by netscape.
|
||||
*
|
||||
***********************************************************************/
|
||||
|
||||
/*
|
||||
* NP_GetMIMEDescription
|
||||
* - Netscape needs to know about this symbol
|
||||
* - Netscape uses the return value to identify when an object instance
|
||||
* of this plugin should be created.
|
||||
*/
|
||||
char *
|
||||
NP_GetMIMEDescription(void)
|
||||
{
|
||||
return NPP_GetMIMEDescription();
|
||||
}
|
||||
|
||||
/*
|
||||
* NP_GetValue [optional]
|
||||
* - Netscape needs to know about this symbol.
|
||||
* - Interfaces with plugin to get values for predefined variables
|
||||
* that the navigator needs.
|
||||
*/
|
||||
NPError
|
||||
NP_GetValue(void *future, NPPVariable variable, void *value)
|
||||
{
|
||||
return NPP_GetValue(future, variable, value);
|
||||
}
|
||||
|
||||
/*
|
||||
* NP_Initialize
|
||||
* - Netscape needs to know about this symbol.
|
||||
* - It calls this function after looking up its symbol before it
|
||||
* is about to create the first ever object of this kind.
|
||||
*
|
||||
* PARAMETERS
|
||||
* nsTable - The netscape function table. If developers just use these
|
||||
* wrappers, they dont need to worry about all these function
|
||||
* tables.
|
||||
* RETURN
|
||||
* pluginFuncs
|
||||
* - This functions needs to fill the plugin function table
|
||||
* pluginFuncs and return it. Netscape Navigator plugin
|
||||
* library will use this function table to call the plugin.
|
||||
*
|
||||
*/
|
||||
NPError
|
||||
NP_Initialize(NPNetscapeFuncs* nsTable, NPPluginFuncs* pluginFuncs)
|
||||
{
|
||||
NPError err = NPERR_NO_ERROR;
|
||||
|
||||
PLUGINDEBUGSTR("NP_Initialize");
|
||||
|
||||
/* validate input parameters */
|
||||
|
||||
if ((nsTable == NULL) || (pluginFuncs == NULL))
|
||||
err = NPERR_INVALID_FUNCTABLE_ERROR;
|
||||
|
||||
/*
|
||||
* Check the major version passed in Netscape's function table.
|
||||
* We won't load if the major version is newer than what we expect.
|
||||
* Also check that the function tables passed in are big enough for
|
||||
* all the functions we need (they could be bigger, if Netscape added
|
||||
* new APIs, but that's OK with us -- we'll just ignore them).
|
||||
*
|
||||
*/
|
||||
|
||||
if (err == NPERR_NO_ERROR) {
|
||||
if ((nsTable->version >> 8) > NP_VERSION_MAJOR)
|
||||
err = NPERR_INCOMPATIBLE_VERSION_ERROR;
|
||||
if (nsTable->size < sizeof(NPNetscapeFuncs))
|
||||
err = NPERR_INVALID_FUNCTABLE_ERROR;
|
||||
if (pluginFuncs->size < sizeof(NPPluginFuncs))
|
||||
err = NPERR_INVALID_FUNCTABLE_ERROR;
|
||||
}
|
||||
|
||||
|
||||
if (err == NPERR_NO_ERROR) {
|
||||
/*
|
||||
* Copy all the fields of Netscape function table into our
|
||||
* copy so we can call back into Netscape later. Note that
|
||||
* we need to copy the fields one by one, rather than assigning
|
||||
* the whole structure, because the Netscape function table
|
||||
* could actually be bigger than what we expect.
|
||||
*/
|
||||
gNetscapeFuncs.version = nsTable->version;
|
||||
gNetscapeFuncs.size = nsTable->size;
|
||||
gNetscapeFuncs.posturl = nsTable->posturl;
|
||||
gNetscapeFuncs.geturl = nsTable->geturl;
|
||||
gNetscapeFuncs.requestread = nsTable->requestread;
|
||||
gNetscapeFuncs.newstream = nsTable->newstream;
|
||||
gNetscapeFuncs.write = nsTable->write;
|
||||
gNetscapeFuncs.destroystream = nsTable->destroystream;
|
||||
gNetscapeFuncs.status = nsTable->status;
|
||||
gNetscapeFuncs.uagent = nsTable->uagent;
|
||||
gNetscapeFuncs.memalloc = nsTable->memalloc;
|
||||
gNetscapeFuncs.memfree = nsTable->memfree;
|
||||
gNetscapeFuncs.memflush = nsTable->memflush;
|
||||
gNetscapeFuncs.reloadplugins = nsTable->reloadplugins;
|
||||
gNetscapeFuncs.getJavaEnv = nsTable->getJavaEnv;
|
||||
gNetscapeFuncs.getJavaPeer = nsTable->getJavaPeer;
|
||||
gNetscapeFuncs.getvalue = nsTable->getvalue;
|
||||
|
||||
/*
|
||||
* Set up the plugin function table that Netscape will use to
|
||||
* call us. Netscape needs to know about our version and size
|
||||
* and have a UniversalProcPointer for every function we
|
||||
* implement.
|
||||
*/
|
||||
pluginFuncs->version = (NP_VERSION_MAJOR << 8) + NP_VERSION_MINOR;
|
||||
pluginFuncs->size = sizeof(NPPluginFuncs);
|
||||
pluginFuncs->newp = NewNPP_NewProc(Private_New);
|
||||
pluginFuncs->destroy = NewNPP_DestroyProc(Private_Destroy);
|
||||
pluginFuncs->setwindow = NewNPP_SetWindowProc(Private_SetWindow);
|
||||
pluginFuncs->newstream = NewNPP_NewStreamProc(Private_NewStream);
|
||||
pluginFuncs->destroystream = NewNPP_DestroyStreamProc(Private_DestroyStream);
|
||||
pluginFuncs->asfile = NewNPP_StreamAsFileProc(Private_StreamAsFile);
|
||||
pluginFuncs->writeready = NewNPP_WriteReadyProc(Private_WriteReady);
|
||||
pluginFuncs->write = NewNPP_WriteProc(Private_Write);
|
||||
pluginFuncs->print = NewNPP_PrintProc(Private_Print);
|
||||
pluginFuncs->event = NULL;
|
||||
pluginFuncs->javaClass = Private_GetJavaClass();
|
||||
|
||||
err = NPP_Initialize();
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
/*
|
||||
* NP_Shutdown [optional]
|
||||
* - Netscape needs to know about this symbol.
|
||||
* - It calls this function after looking up its symbol after
|
||||
* the last object of this kind has been destroyed.
|
||||
*
|
||||
*/
|
||||
NPError
|
||||
NP_Shutdown(void)
|
||||
{
|
||||
PLUGINDEBUGSTR("NP_Shutdown");
|
||||
NPP_Shutdown();
|
||||
return NPERR_NO_ERROR;
|
||||
}
|
@ -1,994 +0,0 @@
|
||||
/*
|
||||
* npupp.h $Revision: 1.1 $
|
||||
* function call mecahnics needed by platform specific glue code.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _NPUPP_H_
|
||||
#define _NPUPP_H_
|
||||
|
||||
#ifndef GENERATINGCFM
|
||||
#define GENERATINGCFM 0
|
||||
#endif
|
||||
|
||||
#ifndef _NPAPI_H_
|
||||
#include "npapi.h"
|
||||
#endif
|
||||
|
||||
#include "jri.h"
|
||||
|
||||
/******************************************************************************************
|
||||
plug-in function table macros
|
||||
for each function in and out of the plugin API we define
|
||||
typedef NPP_FooUPP
|
||||
#define NewNPP_FooProc
|
||||
#define CallNPP_FooProc
|
||||
for mac, define the UPP magic for PPC/68K calling
|
||||
*******************************************************************************************/
|
||||
|
||||
|
||||
/* NPP_Initialize */
|
||||
|
||||
#if GENERATINGCFM
|
||||
typedef UniversalProcPtr NPP_InitializeUPP;
|
||||
|
||||
enum {
|
||||
uppNPP_InitializeProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(0))
|
||||
| RESULT_SIZE(SIZE_CODE(0))
|
||||
};
|
||||
|
||||
#define NewNPP_InitializeProc(FUNC) \
|
||||
(NPP_InitializeUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_InitializeProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPP_InitializeProc(FUNC) \
|
||||
(void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_InitializeProcInfo)
|
||||
|
||||
#else
|
||||
|
||||
typedef void (*NPP_InitializeUPP)(void);
|
||||
#define NewNPP_InitializeProc(FUNC) \
|
||||
((NPP_InitializeUPP) (FUNC))
|
||||
#define CallNPP_InitializeProc(FUNC) \
|
||||
(*(FUNC))()
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* NPP_Shutdown */
|
||||
|
||||
#if GENERATINGCFM
|
||||
typedef UniversalProcPtr NPP_ShutdownUPP;
|
||||
|
||||
enum {
|
||||
uppNPP_ShutdownProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(0))
|
||||
| RESULT_SIZE(SIZE_CODE(0))
|
||||
};
|
||||
|
||||
#define NewNPP_ShutdownProc(FUNC) \
|
||||
(NPP_ShutdownUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_ShutdownProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPP_ShutdownProc(FUNC) \
|
||||
(void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_ShutdownProcInfo)
|
||||
|
||||
#else
|
||||
|
||||
typedef void (*NPP_ShutdownUPP)(void);
|
||||
#define NewNPP_ShutdownProc(FUNC) \
|
||||
((NPP_ShutdownUPP) (FUNC))
|
||||
#define CallNPP_ShutdownProc(FUNC) \
|
||||
(*(FUNC))()
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* NPP_New */
|
||||
|
||||
#if GENERATINGCFM
|
||||
typedef UniversalProcPtr NPP_NewUPP;
|
||||
|
||||
enum {
|
||||
uppNPP_NewProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPMIMEType)))
|
||||
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPP)))
|
||||
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(uint16)))
|
||||
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(int16)))
|
||||
| STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(char **)))
|
||||
| STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(char **)))
|
||||
| STACK_ROUTINE_PARAMETER(7, SIZE_CODE(sizeof(NPSavedData *)))
|
||||
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
|
||||
};
|
||||
|
||||
#define NewNPP_NewProc(FUNC) \
|
||||
(NPP_NewUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_NewProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPP_NewProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7) \
|
||||
(NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_NewProcInfo, \
|
||||
(ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6), (ARG7))
|
||||
#else
|
||||
|
||||
typedef NPError (*NPP_NewUPP)(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved);
|
||||
#define NewNPP_NewProc(FUNC) \
|
||||
((NPP_NewUPP) (FUNC))
|
||||
#define CallNPP_NewProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7) \
|
||||
(*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6), (ARG7))
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* NPP_Destroy */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPP_DestroyUPP;
|
||||
enum {
|
||||
uppNPP_DestroyProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
|
||||
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPSavedData **)))
|
||||
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
|
||||
};
|
||||
#define NewNPP_DestroyProc(FUNC) \
|
||||
(NPP_DestroyUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_DestroyProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPP_DestroyProc(FUNC, ARG1, ARG2) \
|
||||
(NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_DestroyProcInfo, (ARG1), (ARG2))
|
||||
#else
|
||||
|
||||
typedef NPError (*NPP_DestroyUPP)(NPP instance, NPSavedData** save);
|
||||
#define NewNPP_DestroyProc(FUNC) \
|
||||
((NPP_DestroyUPP) (FUNC))
|
||||
#define CallNPP_DestroyProc(FUNC, ARG1, ARG2) \
|
||||
(*(FUNC))((ARG1), (ARG2))
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* NPP_SetWindow */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPP_SetWindowUPP;
|
||||
enum {
|
||||
uppNPP_SetWindowProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
|
||||
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPWindow *)))
|
||||
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
|
||||
};
|
||||
#define NewNPP_SetWindowProc(FUNC) \
|
||||
(NPP_SetWindowUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_SetWindowProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPP_SetWindowProc(FUNC, ARG1, ARG2) \
|
||||
(NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_SetWindowProcInfo, (ARG1), (ARG2))
|
||||
|
||||
#else
|
||||
|
||||
typedef NPError (*NPP_SetWindowUPP)(NPP instance, NPWindow* window);
|
||||
#define NewNPP_SetWindowProc(FUNC) \
|
||||
((NPP_SetWindowUPP) (FUNC))
|
||||
#define CallNPP_SetWindowProc(FUNC, ARG1, ARG2) \
|
||||
(*(FUNC))((ARG1), (ARG2))
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* NPP_NewStream */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPP_NewStreamUPP;
|
||||
enum {
|
||||
uppNPP_NewStreamProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
|
||||
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPMIMEType)))
|
||||
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NPStream *)))
|
||||
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(NPBool)))
|
||||
| STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(uint16 *)))
|
||||
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
|
||||
};
|
||||
#define NewNPP_NewStreamProc(FUNC) \
|
||||
(NPP_NewStreamUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_NewStreamProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPP_NewStreamProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5) \
|
||||
(NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_NewStreamProcInfo, (ARG1), (ARG2), (ARG3), (ARG4), (ARG5))
|
||||
#else
|
||||
|
||||
typedef NPError (*NPP_NewStreamUPP)(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype);
|
||||
#define NewNPP_NewStreamProc(FUNC) \
|
||||
((NPP_NewStreamUPP) (FUNC))
|
||||
#define CallNPP_NewStreamProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5) \
|
||||
(*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4), (ARG5))
|
||||
#endif
|
||||
|
||||
|
||||
/* NPP_DestroyStream */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPP_DestroyStreamUPP;
|
||||
enum {
|
||||
uppNPP_DestroyStreamProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
|
||||
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPStream *)))
|
||||
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NPReason)))
|
||||
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
|
||||
};
|
||||
#define NewNPP_DestroyStreamProc(FUNC) \
|
||||
(NPP_DestroyStreamUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_DestroyStreamProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPP_DestroyStreamProc(FUNC, NPParg, NPStreamPtr, NPReasonArg) \
|
||||
(NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_DestroyStreamProcInfo, (NPParg), (NPStreamPtr), (NPReasonArg))
|
||||
|
||||
#else
|
||||
|
||||
typedef NPError (*NPP_DestroyStreamUPP)(NPP instance, NPStream* stream, NPReason reason);
|
||||
#define NewNPP_DestroyStreamProc(FUNC) \
|
||||
((NPP_DestroyStreamUPP) (FUNC))
|
||||
#define CallNPP_DestroyStreamProc(FUNC, NPParg, NPStreamPtr, NPReasonArg) \
|
||||
(*(FUNC))((NPParg), (NPStreamPtr), (NPReasonArg))
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* NPP_WriteReady */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPP_WriteReadyUPP;
|
||||
enum {
|
||||
uppNPP_WriteReadyProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
|
||||
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPStream *)))
|
||||
| RESULT_SIZE(SIZE_CODE(sizeof(int32)))
|
||||
};
|
||||
#define NewNPP_WriteReadyProc(FUNC) \
|
||||
(NPP_WriteReadyUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_WriteReadyProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPP_WriteReadyProc(FUNC, NPParg, NPStreamPtr) \
|
||||
(int32)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_WriteReadyProcInfo, (NPParg), (NPStreamPtr))
|
||||
|
||||
#else
|
||||
|
||||
typedef int32 (*NPP_WriteReadyUPP)(NPP instance, NPStream* stream);
|
||||
#define NewNPP_WriteReadyProc(FUNC) \
|
||||
((NPP_WriteReadyUPP) (FUNC))
|
||||
#define CallNPP_WriteReadyProc(FUNC, NPParg, NPStreamPtr) \
|
||||
(*(FUNC))((NPParg), (NPStreamPtr))
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* NPP_Write */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPP_WriteUPP;
|
||||
enum {
|
||||
uppNPP_WriteProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
|
||||
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPStream *)))
|
||||
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(int32)))
|
||||
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(int32)))
|
||||
| STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(void*)))
|
||||
| RESULT_SIZE(SIZE_CODE(sizeof(int32)))
|
||||
};
|
||||
#define NewNPP_WriteProc(FUNC) \
|
||||
(NPP_WriteUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_WriteProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPP_WriteProc(FUNC, NPParg, NPStreamPtr, offsetArg, lenArg, bufferPtr) \
|
||||
(int32)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_WriteProcInfo, (NPParg), (NPStreamPtr), (offsetArg), (lenArg), (bufferPtr))
|
||||
|
||||
#else
|
||||
|
||||
typedef int32 (*NPP_WriteUPP)(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer);
|
||||
#define NewNPP_WriteProc(FUNC) \
|
||||
((NPP_WriteUPP) (FUNC))
|
||||
#define CallNPP_WriteProc(FUNC, NPParg, NPStreamPtr, offsetArg, lenArg, bufferPtr) \
|
||||
(*(FUNC))((NPParg), (NPStreamPtr), (offsetArg), (lenArg), (bufferPtr))
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* NPP_StreamAsFile */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPP_StreamAsFileUPP;
|
||||
enum {
|
||||
uppNPP_StreamAsFileProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
|
||||
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPStream *)))
|
||||
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(const char *)))
|
||||
| RESULT_SIZE(SIZE_CODE(0))
|
||||
};
|
||||
#define NewNPP_StreamAsFileProc(FUNC) \
|
||||
(NPP_StreamAsFileUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_StreamAsFileProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPP_StreamAsFileProc(FUNC, ARG1, ARG2, ARG3) \
|
||||
(void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_StreamAsFileProcInfo, (ARG1), (ARG2), (ARG3))
|
||||
|
||||
#else
|
||||
|
||||
typedef void (*NPP_StreamAsFileUPP)(NPP instance, NPStream* stream, const char* fname);
|
||||
#define NewNPP_StreamAsFileProc(FUNC) \
|
||||
((NPP_StreamAsFileUPP) (FUNC))
|
||||
#define CallNPP_StreamAsFileProc(FUNC, ARG1, ARG2, ARG3) \
|
||||
(*(FUNC))((ARG1), (ARG2), (ARG3))
|
||||
#endif
|
||||
|
||||
|
||||
/* NPP_Print */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPP_PrintUPP;
|
||||
enum {
|
||||
uppNPP_PrintProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
|
||||
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPPrint *)))
|
||||
| RESULT_SIZE(SIZE_CODE(0))
|
||||
};
|
||||
#define NewNPP_PrintProc(FUNC) \
|
||||
(NPP_PrintUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_PrintProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPP_PrintProc(FUNC, NPParg, voidPtr) \
|
||||
(void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_PrintProcInfo, (NPParg), (voidPtr))
|
||||
|
||||
#else
|
||||
|
||||
typedef void (*NPP_PrintUPP)(NPP instance, NPPrint* platformPrint);
|
||||
#define NewNPP_PrintProc(FUNC) \
|
||||
((NPP_PrintUPP) (FUNC))
|
||||
#define CallNPP_PrintProc(FUNC, NPParg, NPPrintArg) \
|
||||
(*(FUNC))((NPParg), (NPPrintArg))
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* NPP_HandleEvent */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPP_HandleEventUPP;
|
||||
enum {
|
||||
uppNPP_HandleEventProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
|
||||
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(void *)))
|
||||
| RESULT_SIZE(SIZE_CODE(sizeof(int16)))
|
||||
};
|
||||
#define NewNPP_HandleEventProc(FUNC) \
|
||||
(NPP_HandleEventUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_HandleEventProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPP_HandleEventProc(FUNC, NPParg, voidPtr) \
|
||||
(int16)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_HandleEventProcInfo, (NPParg), (voidPtr))
|
||||
|
||||
#else
|
||||
|
||||
typedef int16 (*NPP_HandleEventUPP)(NPP instance, void* event);
|
||||
#define NewNPP_HandleEventProc(FUNC) \
|
||||
((NPP_HandleEventUPP) (FUNC))
|
||||
#define CallNPP_HandleEventProc(FUNC, NPParg, voidPtr) \
|
||||
(*(FUNC))((NPParg), (voidPtr))
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* NPP_URLNotify */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPP_URLNotifyUPP;
|
||||
enum {
|
||||
uppNPP_URLNotifyProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
|
||||
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(const char*)))
|
||||
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NPReason)))
|
||||
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(void*)))
|
||||
| RESULT_SIZE(SIZE_CODE(SIZE_CODE(0)))
|
||||
};
|
||||
#define NewNPP_URLNotifyProc(FUNC) \
|
||||
(NPP_URLNotifyUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_URLNotifyProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPP_URLNotifyProc(FUNC, ARG1, ARG2, ARG3, ARG4) \
|
||||
(void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_URLNotifyProcInfo, (ARG1), (ARG2), (ARG3), (ARG4))
|
||||
|
||||
#else
|
||||
|
||||
typedef void (*NPP_URLNotifyUPP)(NPP instance, const char* url, NPReason reason, void* notifyData);
|
||||
#define NewNPP_URLNotifyProc(FUNC) \
|
||||
((NPP_URLNotifyUPP) (FUNC))
|
||||
#define CallNPP_URLNotifyProc(FUNC, ARG1, ARG2, ARG3, ARG4) \
|
||||
(*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4))
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Netscape entry points
|
||||
*/
|
||||
|
||||
#ifdef XP_UNIX
|
||||
|
||||
/* NPN_GetValue */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPN_GetValueUPP;
|
||||
enum {
|
||||
uppNPN_GetValueProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
|
||||
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPNVariable)))
|
||||
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void *)))
|
||||
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
|
||||
};
|
||||
#define NewNPN_GetValueProc(FUNC) \
|
||||
(NPN_GetValueUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_GetValueProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPN_GetURNotifyLProc(FUNC, ARG1, ARG2, ARG3) \
|
||||
(NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_GetValueProcInfo, (ARG1), (ARG2), (ARG3))
|
||||
#else
|
||||
|
||||
typedef NPError (*NPN_GetValueUPP)(NPP instance, NPNVariable variable, void *ret_alue);
|
||||
#define NewNPN_GetValueProc(FUNC) \
|
||||
((NPN_GetValueUPP) (FUNC))
|
||||
#define CallNPN_GetValueProc(FUNC, ARG1, ARG2, ARG3) \
|
||||
(*(FUNC))((ARG1), (ARG2), (ARG3))
|
||||
#endif
|
||||
|
||||
#endif /* XP_UNIX */
|
||||
|
||||
|
||||
|
||||
/* NPN_GetUrlNotify */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPN_GetURLNotifyUPP;
|
||||
enum {
|
||||
uppNPN_GetURLNotifyProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
|
||||
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(const char*)))
|
||||
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(const char*)))
|
||||
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(void*)))
|
||||
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
|
||||
};
|
||||
#define NewNPN_GetURLNotifyProc(FUNC) \
|
||||
(NPN_GetURLNotifyUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_GetURLNotifyProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPN_GetURLNotifyProc(FUNC, ARG1, ARG2, ARG3, ARG4) \
|
||||
(NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_GetURLNotifyProcInfo, (ARG1), (ARG2), (ARG3), (ARG4))
|
||||
#else
|
||||
|
||||
typedef NPError (*NPN_GetURLNotifyUPP)(NPP instance, const char* url, const char* window, void* notifyData);
|
||||
#define NewNPN_GetURLNotifyProc(FUNC) \
|
||||
((NPN_GetURLNotifyUPP) (FUNC))
|
||||
#define CallNPN_GetURLNotifyProc(FUNC, ARG1, ARG2, ARG3, ARG4) \
|
||||
(*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4))
|
||||
#endif
|
||||
|
||||
|
||||
/* NPN_PostUrlNotify */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPN_PostURLNotifyUPP;
|
||||
enum {
|
||||
uppNPN_PostURLNotifyProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
|
||||
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(const char*)))
|
||||
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(const char*)))
|
||||
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(uint32)))
|
||||
| STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(const char*)))
|
||||
| STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(NPBool)))
|
||||
| STACK_ROUTINE_PARAMETER(7, SIZE_CODE(sizeof(void*)))
|
||||
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
|
||||
};
|
||||
#define NewNPN_PostURLNotifyProc(FUNC) \
|
||||
(NPN_PostURLNotifyUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_PostURLNotifyProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPN_PostURLNotifyProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7) \
|
||||
(NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_PostURLNotifyProcInfo, (ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6), (ARG7))
|
||||
#else
|
||||
|
||||
typedef NPError (*NPN_PostURLNotifyUPP)(NPP instance, const char* url, const char* window, uint32 len, const char* buf, NPBool file, void* notifyData);
|
||||
#define NewNPN_PostURLNotifyProc(FUNC) \
|
||||
((NPN_PostURLNotifyUPP) (FUNC))
|
||||
#define CallNPN_PostURLNotifyProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7) \
|
||||
(*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6), (ARG7))
|
||||
#endif
|
||||
|
||||
|
||||
/* NPN_GetUrl */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPN_GetURLUPP;
|
||||
enum {
|
||||
uppNPN_GetURLProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
|
||||
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(const char*)))
|
||||
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(const char*)))
|
||||
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
|
||||
};
|
||||
#define NewNPN_GetURLProc(FUNC) \
|
||||
(NPN_GetURLUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_GetURLProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPN_GetURLProc(FUNC, ARG1, ARG2, ARG3) \
|
||||
(NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_GetURLProcInfo, (ARG1), (ARG2), (ARG3))
|
||||
#else
|
||||
|
||||
typedef NPError (*NPN_GetURLUPP)(NPP instance, const char* url, const char* window);
|
||||
#define NewNPN_GetURLProc(FUNC) \
|
||||
((NPN_GetURLUPP) (FUNC))
|
||||
#define CallNPN_GetURLProc(FUNC, ARG1, ARG2, ARG3) \
|
||||
(*(FUNC))((ARG1), (ARG2), (ARG3))
|
||||
#endif
|
||||
|
||||
|
||||
/* NPN_PostUrl */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPN_PostURLUPP;
|
||||
enum {
|
||||
uppNPN_PostURLProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
|
||||
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(const char*)))
|
||||
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(const char*)))
|
||||
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(uint32)))
|
||||
| STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(const char*)))
|
||||
| STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(NPBool)))
|
||||
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
|
||||
};
|
||||
#define NewNPN_PostURLProc(FUNC) \
|
||||
(NPN_PostURLUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_PostURLProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPN_PostURLProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6) \
|
||||
(NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_PostURLProcInfo, (ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6))
|
||||
#else
|
||||
|
||||
typedef NPError (*NPN_PostURLUPP)(NPP instance, const char* url, const char* window, uint32 len, const char* buf, NPBool file);
|
||||
#define NewNPN_PostURLProc(FUNC) \
|
||||
((NPN_PostURLUPP) (FUNC))
|
||||
#define CallNPN_PostURLProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6) \
|
||||
(*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6))
|
||||
#endif
|
||||
|
||||
|
||||
/* NPN_RequestRead */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPN_RequestReadUPP;
|
||||
enum {
|
||||
uppNPN_RequestReadProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPStream *)))
|
||||
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPByteRange *)))
|
||||
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
|
||||
};
|
||||
#define NewNPN_RequestReadProc(FUNC) \
|
||||
(NPN_RequestReadUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_RequestReadProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPN_RequestReadProc(FUNC, stream, range) \
|
||||
(NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_RequestReadProcInfo, (stream), (range))
|
||||
|
||||
#else
|
||||
|
||||
typedef NPError (*NPN_RequestReadUPP)(NPStream* stream, NPByteRange* rangeList);
|
||||
#define NewNPN_RequestReadProc(FUNC) \
|
||||
((NPN_RequestReadUPP) (FUNC))
|
||||
#define CallNPN_RequestReadProc(FUNC, stream, range) \
|
||||
(*(FUNC))((stream), (range))
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* NPN_NewStream */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPN_NewStreamUPP;
|
||||
enum {
|
||||
uppNPN_NewStreamProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
|
||||
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPMIMEType)))
|
||||
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(const char *)))
|
||||
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(NPStream **)))
|
||||
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
|
||||
};
|
||||
#define NewNPN_NewStreamProc(FUNC) \
|
||||
(NPN_NewStreamUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_NewStreamProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPN_NewStreamProc(FUNC, npp, type, window, stream) \
|
||||
(NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_NewStreamProcInfo, (npp), (type), (window), (stream))
|
||||
|
||||
#else
|
||||
|
||||
typedef NPError (*NPN_NewStreamUPP)(NPP instance, NPMIMEType type, const char* window, NPStream** stream);
|
||||
#define NewNPN_NewStreamProc(FUNC) \
|
||||
((NPN_NewStreamUPP) (FUNC))
|
||||
#define CallNPN_NewStreamProc(FUNC, npp, type, window, stream) \
|
||||
(*(FUNC))((npp), (type), (window), (stream))
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* NPN_Write */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPN_WriteUPP;
|
||||
enum {
|
||||
uppNPN_WriteProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
|
||||
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPStream *)))
|
||||
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(int32)))
|
||||
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(void*)))
|
||||
| RESULT_SIZE(SIZE_CODE(sizeof(int32)))
|
||||
};
|
||||
#define NewNPN_WriteProc(FUNC) \
|
||||
(NPN_WriteUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_WriteProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPN_WriteProc(FUNC, npp, stream, len, buffer) \
|
||||
(int32)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_WriteProcInfo, (npp), (stream), (len), (buffer))
|
||||
|
||||
#else
|
||||
|
||||
typedef int32 (*NPN_WriteUPP)(NPP instance, NPStream* stream, int32 len, void* buffer);
|
||||
#define NewNPN_WriteProc(FUNC) \
|
||||
((NPN_WriteUPP) (FUNC))
|
||||
#define CallNPN_WriteProc(FUNC, npp, stream, len, buffer) \
|
||||
(*(FUNC))((npp), (stream), (len), (buffer))
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* NPN_DestroyStream */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPN_DestroyStreamUPP;
|
||||
enum {
|
||||
uppNPN_DestroyStreamProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP )))
|
||||
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPStream *)))
|
||||
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NPReason)))
|
||||
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
|
||||
};
|
||||
#define NewNPN_DestroyStreamProc(FUNC) \
|
||||
(NPN_DestroyStreamUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_DestroyStreamProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPN_DestroyStreamProc(FUNC, npp, stream, reason) \
|
||||
(NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_DestroyStreamProcInfo, (npp), (stream), (reason))
|
||||
|
||||
#else
|
||||
|
||||
typedef NPError (*NPN_DestroyStreamUPP)(NPP instance, NPStream* stream, NPReason reason);
|
||||
#define NewNPN_DestroyStreamProc(FUNC) \
|
||||
((NPN_DestroyStreamUPP) (FUNC))
|
||||
#define CallNPN_DestroyStreamProc(FUNC, npp, stream, reason) \
|
||||
(*(FUNC))((npp), (stream), (reason))
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* NPN_Status */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPN_StatusUPP;
|
||||
enum {
|
||||
uppNPN_StatusProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
|
||||
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(char *)))
|
||||
};
|
||||
|
||||
#define NewNPN_StatusProc(FUNC) \
|
||||
(NPN_StatusUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_StatusProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPN_StatusProc(FUNC, npp, msg) \
|
||||
(void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_StatusProcInfo, (npp), (msg))
|
||||
|
||||
#else
|
||||
|
||||
typedef void (*NPN_StatusUPP)(NPP instance, const char* message);
|
||||
#define NewNPN_StatusProc(FUNC) \
|
||||
((NPN_StatusUPP) (FUNC))
|
||||
#define CallNPN_StatusProc(FUNC, npp, msg) \
|
||||
(*(FUNC))((npp), (msg))
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* NPN_UserAgent */
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPN_UserAgentUPP;
|
||||
enum {
|
||||
uppNPN_UserAgentProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
|
||||
| RESULT_SIZE(SIZE_CODE(sizeof(const char *)))
|
||||
};
|
||||
|
||||
#define NewNPN_UserAgentProc(FUNC) \
|
||||
(NPN_UserAgentUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_UserAgentProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPN_UserAgentProc(FUNC, ARG1) \
|
||||
(const char*)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_UserAgentProcInfo, (ARG1))
|
||||
|
||||
#else
|
||||
|
||||
typedef const char* (*NPN_UserAgentUPP)(NPP instance);
|
||||
#define NewNPN_UserAgentProc(FUNC) \
|
||||
((NPN_UserAgentUPP) (FUNC))
|
||||
#define CallNPN_UserAgentProc(FUNC, ARG1) \
|
||||
(*(FUNC))((ARG1))
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* NPN_MemAlloc */
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPN_MemAllocUPP;
|
||||
enum {
|
||||
uppNPN_MemAllocProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(uint32)))
|
||||
| RESULT_SIZE(SIZE_CODE(sizeof(void *)))
|
||||
};
|
||||
|
||||
#define NewNPN_MemAllocProc(FUNC) \
|
||||
(NPN_MemAllocUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_MemAllocProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPN_MemAllocProc(FUNC, ARG1) \
|
||||
(void*)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_MemAllocProcInfo, (ARG1))
|
||||
|
||||
#else
|
||||
|
||||
typedef void* (*NPN_MemAllocUPP)(uint32 size);
|
||||
#define NewNPN_MemAllocProc(FUNC) \
|
||||
((NPN_MemAllocUPP) (FUNC))
|
||||
#define CallNPN_MemAllocProc(FUNC, ARG1) \
|
||||
(*(FUNC))((ARG1))
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* NPN__MemFree */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPN_MemFreeUPP;
|
||||
enum {
|
||||
uppNPN_MemFreeProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(void *)))
|
||||
};
|
||||
|
||||
#define NewNPN_MemFreeProc(FUNC) \
|
||||
(NPN_MemFreeUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_MemFreeProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPN_MemFreeProc(FUNC, ARG1) \
|
||||
(void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_MemFreeProcInfo, (ARG1))
|
||||
|
||||
#else
|
||||
|
||||
typedef void (*NPN_MemFreeUPP)(void* ptr);
|
||||
#define NewNPN_MemFreeProc(FUNC) \
|
||||
((NPN_MemFreeUPP) (FUNC))
|
||||
#define CallNPN_MemFreeProc(FUNC, ARG1) \
|
||||
(*(FUNC))((ARG1))
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* NPN_MemFlush */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPN_MemFlushUPP;
|
||||
enum {
|
||||
uppNPN_MemFlushProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(uint32)))
|
||||
| RESULT_SIZE(SIZE_CODE(sizeof(uint32)))
|
||||
};
|
||||
|
||||
#define NewNPN_MemFlushProc(FUNC) \
|
||||
(NPN_MemFlushUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_MemFlushProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPN_MemFlushProc(FUNC, ARG1) \
|
||||
(uint32)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_MemFlushProcInfo, (ARG1))
|
||||
|
||||
#else
|
||||
|
||||
typedef uint32 (*NPN_MemFlushUPP)(uint32 size);
|
||||
#define NewNPN_MemFlushProc(FUNC) \
|
||||
((NPN_MemFlushUPP) (FUNC))
|
||||
#define CallNPN_MemFlushProc(FUNC, ARG1) \
|
||||
(*(FUNC))((ARG1))
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/* NPN_ReloadPlugins */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPN_ReloadPluginsUPP;
|
||||
enum {
|
||||
uppNPN_ReloadPluginsProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPBool)))
|
||||
| RESULT_SIZE(SIZE_CODE(0))
|
||||
};
|
||||
|
||||
#define NewNPN_ReloadPluginsProc(FUNC) \
|
||||
(NPN_ReloadPluginsUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_ReloadPluginsProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPN_ReloadPluginsProc(FUNC, ARG1) \
|
||||
(void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_ReloadPluginsProcInfo, (ARG1))
|
||||
|
||||
#else
|
||||
|
||||
typedef void (*NPN_ReloadPluginsUPP)(NPBool reloadPages);
|
||||
#define NewNPN_ReloadPluginsProc(FUNC) \
|
||||
((NPN_ReloadPluginsUPP) (FUNC))
|
||||
#define CallNPN_ReloadPluginsProc(FUNC, ARG1) \
|
||||
(*(FUNC))((ARG1))
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* NPN_GetJavaEnv */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPN_GetJavaEnvUPP;
|
||||
enum {
|
||||
uppNPN_GetJavaEnvProcInfo = kThinkCStackBased
|
||||
| RESULT_SIZE(SIZE_CODE(sizeof(JRIEnv*)))
|
||||
};
|
||||
|
||||
#define NewNPN_GetJavaEnvProc(FUNC) \
|
||||
(NPN_GetJavaEnvUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_GetJavaEnvProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPN_GetJavaEnvProc(FUNC) \
|
||||
(JRIEnv*)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_GetJavaEnvProcInfo)
|
||||
|
||||
#else
|
||||
|
||||
typedef JRIEnv* (*NPN_GetJavaEnvUPP)(void);
|
||||
#define NewNPN_GetJavaEnvProc(FUNC) \
|
||||
((NPN_GetJavaEnvUPP) (FUNC))
|
||||
#define CallNPN_GetJavaEnvProc(FUNC) \
|
||||
(*(FUNC))()
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* NPN_GetJavaPeer */
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPN_GetJavaPeerUPP;
|
||||
enum {
|
||||
uppNPN_GetJavaPeerProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
|
||||
| RESULT_SIZE(SIZE_CODE(sizeof(jref)))
|
||||
};
|
||||
|
||||
#define NewNPN_GetJavaPeerProc(FUNC) \
|
||||
(NPN_GetJavaPeerUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_GetJavaPeerProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPN_GetJavaPeerProc(FUNC, ARG1) \
|
||||
(jref)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_GetJavaPeerProcInfo, (ARG1))
|
||||
|
||||
#else
|
||||
|
||||
typedef jref (*NPN_GetJavaPeerUPP)(NPP instance);
|
||||
#define NewNPN_GetJavaPeerProc(FUNC) \
|
||||
((NPN_GetJavaPeerUPP) (FUNC))
|
||||
#define CallNPN_GetJavaPeerProc(FUNC, ARG1) \
|
||||
(*(FUNC))((ARG1))
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
/******************************************************************************************
|
||||
* The actual plugin function table definitions
|
||||
*******************************************************************************************/
|
||||
|
||||
typedef struct _NPPluginFuncs {
|
||||
uint16 size;
|
||||
uint16 version;
|
||||
NPP_NewUPP newp;
|
||||
NPP_DestroyUPP destroy;
|
||||
NPP_SetWindowUPP setwindow;
|
||||
NPP_NewStreamUPP newstream;
|
||||
NPP_DestroyStreamUPP destroystream;
|
||||
NPP_StreamAsFileUPP asfile;
|
||||
NPP_WriteReadyUPP writeready;
|
||||
NPP_WriteUPP write;
|
||||
NPP_PrintUPP print;
|
||||
NPP_HandleEventUPP event;
|
||||
NPP_URLNotifyUPP urlnotify;
|
||||
JRIGlobalRef javaClass;
|
||||
} NPPluginFuncs;
|
||||
|
||||
typedef struct _NPNetscapeFuncs {
|
||||
uint16 size;
|
||||
uint16 version;
|
||||
NPN_GetURLUPP geturl;
|
||||
NPN_PostURLUPP posturl;
|
||||
NPN_RequestReadUPP requestread;
|
||||
NPN_NewStreamUPP newstream;
|
||||
NPN_WriteUPP write;
|
||||
NPN_DestroyStreamUPP destroystream;
|
||||
NPN_StatusUPP status;
|
||||
NPN_UserAgentUPP uagent;
|
||||
NPN_MemAllocUPP memalloc;
|
||||
NPN_MemFreeUPP memfree;
|
||||
NPN_MemFlushUPP memflush;
|
||||
NPN_ReloadPluginsUPP reloadplugins;
|
||||
NPN_GetJavaEnvUPP getJavaEnv;
|
||||
NPN_GetJavaPeerUPP getJavaPeer;
|
||||
NPN_GetURLNotifyUPP geturlnotify;
|
||||
NPN_PostURLNotifyUPP posturlnotify;
|
||||
#ifdef XP_UNIX
|
||||
NPN_GetValueUPP getvalue;
|
||||
#endif /* XP_UNIX */
|
||||
} NPNetscapeFuncs;
|
||||
|
||||
|
||||
|
||||
#ifdef XP_MAC
|
||||
/******************************************************************************************
|
||||
* Mac platform-specific plugin glue stuff
|
||||
*******************************************************************************************/
|
||||
|
||||
/*
|
||||
* Main entry point of the plugin.
|
||||
* This routine will be called when the plugin is loaded. The function
|
||||
* tables are passed in and the plugin fills in the NPPluginFuncs table
|
||||
* and NPPShutdownUPP for Netscape's use.
|
||||
*/
|
||||
|
||||
#if GENERATINGCFM
|
||||
|
||||
typedef UniversalProcPtr NPP_MainEntryUPP;
|
||||
enum {
|
||||
uppNPP_MainEntryProcInfo = kThinkCStackBased
|
||||
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPNetscapeFuncs*)))
|
||||
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPPluginFuncs*)))
|
||||
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NPP_ShutdownUPP*)))
|
||||
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
|
||||
};
|
||||
#define NewNPP_MainEntryProc(FUNC) \
|
||||
(NPP_MainEntryUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_MainEntryProcInfo, GetCurrentArchitecture())
|
||||
#define CallNPP_MainEntryProc(FUNC, netscapeFunc, pluginFunc, shutdownUPP) \
|
||||
CallUniversalProc((UniversalProcPtr)(FUNC), (ProcInfoType)uppNPP_MainEntryProcInfo, (netscapeFunc), (pluginFunc), (shutdownUPP))
|
||||
|
||||
#else
|
||||
|
||||
typedef NPError (*NPP_MainEntryUPP)(NPNetscapeFuncs*, NPPluginFuncs*, NPP_ShutdownUPP*);
|
||||
#define NewNPP_MainEntryProc(FUNC) \
|
||||
((NPP_MainEntryUPP) (FUNC))
|
||||
#define CallNPP_MainEntryProc(FUNC, netscapeFunc, pluginFunc, shutdownUPP) \
|
||||
(*(FUNC))((netscapeFunc), (pluginFunc), (shutdownUPP))
|
||||
|
||||
#endif
|
||||
#endif /* MAC */
|
||||
|
||||
|
||||
#ifdef _WINDOWS
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* plugin meta member functions */
|
||||
|
||||
NPError WINAPI NP_GetEntryPoints(NPPluginFuncs* pFuncs);
|
||||
|
||||
NPError WINAPI NP_Initialize(NPNetscapeFuncs* pFuncs);
|
||||
|
||||
NPError WINAPI NP_Shutdown();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _WINDOWS */
|
||||
|
||||
#ifdef XP_UNIX
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* plugin meta member functions */
|
||||
|
||||
char* NP_GetMIMEDescription(void);
|
||||
NPError NP_Initialize(NPNetscapeFuncs*, NPPluginFuncs*);
|
||||
NPError NP_Shutdown(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* XP_UNIX */
|
||||
|
||||
#endif /* _NPUPP_H_ */
|
@ -1,367 +0,0 @@
|
||||
/* npwin.cpp */
|
||||
|
||||
//\\// INCLUDE
|
||||
//#include "StdAfx.h"
|
||||
|
||||
// netscape
|
||||
#ifndef _NPAPI_H_
|
||||
#include "npapi.h"
|
||||
#endif
|
||||
#ifndef _NPUPP_H_
|
||||
#include "npupp.h"
|
||||
#endif
|
||||
|
||||
//\\// DEFINE
|
||||
#ifdef WIN32
|
||||
#define NP_EXPORT //__declspec( dllexport )
|
||||
#else
|
||||
#define NP_EXPORT _export
|
||||
#endif
|
||||
|
||||
//\\// GLOBAL DATA
|
||||
NPNetscapeFuncs* g_pNavigatorFuncs = NULL;
|
||||
|
||||
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\.
|
||||
////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//.
|
||||
// Private_GetJavaClass (global function)
|
||||
//
|
||||
// Given a Java class reference (thru NPP_GetJavaClass) inform JRT
|
||||
// of this class existence
|
||||
//
|
||||
JRIGlobalRef
|
||||
Private_GetJavaClass(void)
|
||||
{
|
||||
jref clazz = NPP_GetJavaClass();
|
||||
if (clazz) {
|
||||
JRIEnv* env = NPN_GetJavaEnv();
|
||||
return JRI_NewGlobalRef(env, clazz);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\.
|
||||
////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//.
|
||||
// PLUGIN DLL entry points
|
||||
//
|
||||
// These are the Windows specific DLL entry points. They must be exoprted
|
||||
//
|
||||
|
||||
// we need these to be global since we have to fill one of its field
|
||||
// with a data (class) which requires knowlwdge of the navigator
|
||||
// jump-table. This jump table is known at Initialize time (NP_Initialize)
|
||||
// which is called after NP_GetEntryPoint
|
||||
static NPPluginFuncs* g_pluginFuncs;
|
||||
|
||||
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\.
|
||||
////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//.
|
||||
// NP_GetEntryPoints
|
||||
//
|
||||
// fills in the func table used by Navigator to call entry points in
|
||||
// plugin DLL. Note that these entry points ensure that DS is loaded
|
||||
// by using the NP_LOADDS macro, when compiling for Win16
|
||||
//
|
||||
NPError WINAPI NP_EXPORT
|
||||
NP_GetEntryPoints(NPPluginFuncs* pFuncs)
|
||||
{
|
||||
// trap a NULL ptr
|
||||
if(pFuncs == NULL)
|
||||
return NPERR_INVALID_FUNCTABLE_ERROR;
|
||||
|
||||
// if the plugin's function table is smaller than the plugin expects,
|
||||
// then they are incompatible, and should return an error
|
||||
|
||||
pFuncs->version = (NP_VERSION_MAJOR << 8) | NP_VERSION_MINOR;
|
||||
pFuncs->newp = NPP_New;
|
||||
pFuncs->destroy = NPP_Destroy;
|
||||
pFuncs->setwindow = NPP_SetWindow;
|
||||
pFuncs->newstream = NPP_NewStream;
|
||||
pFuncs->destroystream = NPP_DestroyStream;
|
||||
pFuncs->asfile = NPP_StreamAsFile;
|
||||
pFuncs->writeready = NPP_WriteReady;
|
||||
pFuncs->write = NPP_Write;
|
||||
pFuncs->print = NPP_Print;
|
||||
pFuncs->event = NULL; /// reserved
|
||||
|
||||
g_pluginFuncs = pFuncs;
|
||||
|
||||
return NPERR_NO_ERROR;
|
||||
}
|
||||
|
||||
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\.
|
||||
////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//.
|
||||
// NP_Initialize
|
||||
//
|
||||
// called immediately after the plugin DLL is loaded
|
||||
//
|
||||
NPError WINAPI NP_EXPORT
|
||||
NP_Initialize(NPNetscapeFuncs* pFuncs)
|
||||
{
|
||||
// trap a NULL ptr
|
||||
if(pFuncs == NULL)
|
||||
return NPERR_INVALID_FUNCTABLE_ERROR;
|
||||
|
||||
g_pNavigatorFuncs = pFuncs; // save it for future reference
|
||||
|
||||
// if the plugin's major ver level is lower than the Navigator's,
|
||||
// then they are incompatible, and should return an error
|
||||
if(HIBYTE(pFuncs->version) > NP_VERSION_MAJOR)
|
||||
return NPERR_INCOMPATIBLE_VERSION_ERROR;
|
||||
|
||||
// We have to defer these assignments until g_pNavigatorFuncs is set
|
||||
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
|
||||
|
||||
|
||||
if( navMinorVers >= NPVERS_HAS_NOTIFICATION ) {
|
||||
|
||||
g_pluginFuncs->urlnotify = NPP_URLNotify;
|
||||
|
||||
}
|
||||
|
||||
if( navMinorVers >= NPVERS_HAS_LIVECONNECT ) {
|
||||
|
||||
g_pluginFuncs->javaClass = Private_GetJavaClass();
|
||||
|
||||
}
|
||||
|
||||
|
||||
// NPP_Initialize is a standard (cross-platform) initialize function.
|
||||
return NPP_Initialize();
|
||||
}
|
||||
|
||||
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\.
|
||||
////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//.
|
||||
// NP_Shutdown
|
||||
//
|
||||
// called immediately before the plugin DLL is unloaded.
|
||||
// This functio shuold check for some ref count on the dll to see if it is
|
||||
// unloadable or it needs to stay in memory.
|
||||
//
|
||||
NPError WINAPI NP_EXPORT
|
||||
NP_Shutdown()
|
||||
{
|
||||
NPP_Shutdown();
|
||||
|
||||
g_pNavigatorFuncs = NULL;
|
||||
|
||||
return NPERR_NO_ERROR;
|
||||
}
|
||||
|
||||
// END - PLUGIN DLL entry points
|
||||
////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//.
|
||||
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\.
|
||||
|
||||
/* NAVIGATOR Entry points */
|
||||
|
||||
/* These entry points expect to be called from within the plugin. The
|
||||
noteworthy assumption is that DS has already been set to point to the
|
||||
plugin's DLL data segment. Don't call these functions from outside
|
||||
the plugin without ensuring DS is set to the DLLs data segment first,
|
||||
typically using the NP_LOADDS macro
|
||||
*/
|
||||
|
||||
/* returns the major/minor version numbers of the Plugin API for the plugin
|
||||
and the Navigator
|
||||
*/
|
||||
void NPN_Version(int* plugin_major, int* plugin_minor, int* netscape_major, int* netscape_minor)
|
||||
{
|
||||
*plugin_major = NP_VERSION_MAJOR;
|
||||
*plugin_minor = NP_VERSION_MINOR;
|
||||
*netscape_major = HIBYTE(g_pNavigatorFuncs->version);
|
||||
*netscape_minor = LOBYTE(g_pNavigatorFuncs->version);
|
||||
}
|
||||
|
||||
/* causes the specified URL to be fetched and streamed in
|
||||
*/
|
||||
NPError NPN_GetURLNotify(NPP instance, const char *url, const char *target, void* notifyData)
|
||||
|
||||
{
|
||||
|
||||
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
|
||||
|
||||
NPError err;
|
||||
|
||||
if( navMinorVers >= NPVERS_HAS_NOTIFICATION ) {
|
||||
|
||||
err = g_pNavigatorFuncs->geturlnotify(instance, url, target, notifyData);
|
||||
|
||||
}
|
||||
|
||||
else {
|
||||
|
||||
err = NPERR_INCOMPATIBLE_VERSION_ERROR;
|
||||
|
||||
}
|
||||
|
||||
return err;
|
||||
|
||||
}
|
||||
|
||||
|
||||
NPError NPN_GetURL(NPP instance, const char *url, const char *target)
|
||||
{
|
||||
return g_pNavigatorFuncs->geturl(instance, url, target);
|
||||
}
|
||||
|
||||
NPError NPN_PostURLNotify(NPP instance, const char* url, const char* window, uint32 len, const char* buf, NPBool file, void* notifyData)
|
||||
|
||||
{
|
||||
|
||||
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
|
||||
|
||||
NPError err;
|
||||
|
||||
if( navMinorVers >= NPVERS_HAS_NOTIFICATION ) {
|
||||
|
||||
err = g_pNavigatorFuncs->posturlnotify(instance, url, window, len, buf, file, notifyData);
|
||||
|
||||
}
|
||||
|
||||
else {
|
||||
|
||||
err = NPERR_INCOMPATIBLE_VERSION_ERROR;
|
||||
|
||||
}
|
||||
|
||||
return err;
|
||||
|
||||
}
|
||||
|
||||
|
||||
NPError NPN_PostURL(NPP instance, const char* url, const char* window, uint32 len, const char* buf, NPBool file)
|
||||
{
|
||||
return g_pNavigatorFuncs->posturl(instance, url, window, len, buf, file);
|
||||
}
|
||||
|
||||
/* Requests that a number of bytes be provided on a stream. Typically
|
||||
this would be used if a stream was in "pull" mode. An optional
|
||||
position can be provided for streams which are seekable.
|
||||
*/
|
||||
NPError NPN_RequestRead(NPStream* stream, NPByteRange* rangeList)
|
||||
{
|
||||
return g_pNavigatorFuncs->requestread(stream, rangeList);
|
||||
}
|
||||
|
||||
/* Creates a new stream of data from the plug-in to be interpreted
|
||||
by Netscape in the current window.
|
||||
*/
|
||||
NPError NPN_NewStream(NPP instance, NPMIMEType type,
|
||||
const char* target, NPStream** stream)
|
||||
{
|
||||
|
||||
int navMinorVersion = g_pNavigatorFuncs->version & 0xFF;
|
||||
|
||||
NPError err;
|
||||
|
||||
|
||||
if( navMinorVersion >= NPVERS_HAS_STREAMOUTPUT ) {
|
||||
|
||||
err = g_pNavigatorFuncs->newstream(instance, type, target, stream);
|
||||
|
||||
}
|
||||
|
||||
else {
|
||||
|
||||
err = NPERR_INCOMPATIBLE_VERSION_ERROR;
|
||||
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
/* Provides len bytes of data.
|
||||
*/
|
||||
int32 NPN_Write(NPP instance, NPStream *stream,
|
||||
int32 len, void *buffer)
|
||||
{
|
||||
int navMinorVersion = g_pNavigatorFuncs->version & 0xFF;
|
||||
|
||||
int32 result;
|
||||
|
||||
|
||||
if( navMinorVersion >= NPVERS_HAS_STREAMOUTPUT ) {
|
||||
|
||||
result = g_pNavigatorFuncs->write(instance, stream, len, buffer);
|
||||
|
||||
}
|
||||
|
||||
else {
|
||||
result = -1;
|
||||
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
/* Closes a stream object.
|
||||
reason indicates why the stream was closed.
|
||||
*/
|
||||
NPError NPN_DestroyStream(NPP instance, NPStream* stream, NPError reason)
|
||||
{
|
||||
int navMinorVersion = g_pNavigatorFuncs->version & 0xFF;
|
||||
|
||||
NPError err;
|
||||
|
||||
|
||||
if( navMinorVersion >= NPVERS_HAS_STREAMOUTPUT ) {
|
||||
|
||||
err = g_pNavigatorFuncs->destroystream(instance, stream, reason);
|
||||
|
||||
}
|
||||
else {
|
||||
|
||||
err = NPERR_INCOMPATIBLE_VERSION_ERROR;
|
||||
|
||||
}
|
||||
|
||||
return err;
|
||||
|
||||
}
|
||||
|
||||
/* Provides a text status message in the Netscape client user interface
|
||||
*/
|
||||
void NPN_Status(NPP instance, const char *message)
|
||||
{
|
||||
g_pNavigatorFuncs->status(instance, message);
|
||||
}
|
||||
|
||||
/* returns the user agent string of Navigator, which contains version info
|
||||
*/
|
||||
const char* NPN_UserAgent(NPP instance)
|
||||
{
|
||||
return g_pNavigatorFuncs->uagent(instance);
|
||||
}
|
||||
|
||||
/* allocates memory from the Navigator's memory space. Necessary so that
|
||||
saved instance data may be freed by Navigator when exiting.
|
||||
*/
|
||||
|
||||
|
||||
void* NPN_MemAlloc(uint32 size)
|
||||
{
|
||||
return g_pNavigatorFuncs->memalloc(size);
|
||||
}
|
||||
|
||||
/* reciprocal of MemAlloc() above
|
||||
*/
|
||||
void NPN_MemFree(void* ptr)
|
||||
{
|
||||
g_pNavigatorFuncs->memfree(ptr);
|
||||
}
|
||||
|
||||
/* private function to Netscape. do not use!
|
||||
*/
|
||||
void NPN_ReloadPlugins(NPBool reloadPages)
|
||||
{
|
||||
g_pNavigatorFuncs->reloadplugins(reloadPages);
|
||||
}
|
||||
|
||||
JRIEnv* NPN_GetJavaEnv(void)
|
||||
{
|
||||
return g_pNavigatorFuncs->getJavaEnv();
|
||||
}
|
||||
|
||||
jref NPN_GetJavaPeer(NPP instance)
|
||||
{
|
||||
return g_pNavigatorFuncs->getJavaPeer(instance);
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -1,186 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Definition of TQt extension classes for Netscape Plugin support.
|
||||
**
|
||||
** Created : 970601
|
||||
**
|
||||
** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved.
|
||||
**
|
||||
** This file is part of the TQt GUI Toolkit.
|
||||
**
|
||||
** This file may be used under the terms of the GNU General
|
||||
** Public License versions 2.0 or 3.0 as published by the Free
|
||||
** Software Foundation and appearing in the files LICENSE.GPL2
|
||||
** and LICENSE.GPL3 included in the packaging of this file.
|
||||
** Alternatively you may (at your option) use any later version
|
||||
** of the GNU General Public License if such license has been
|
||||
** publicly approved by Trolltech ASA (or its successors, if any)
|
||||
** and the KDE Free TQt Foundation.
|
||||
**
|
||||
** Please review the following information to ensure GNU General
|
||||
** Public Licensing requirements will be met:
|
||||
** http://trolltech.com/products/qt/licenses/licensing/opensource/.
|
||||
** If you are unsure which license is appropriate for your use, please
|
||||
** review the following information:
|
||||
** http://trolltech.com/products/qt/licenses/licensing/licensingoverview
|
||||
** or contact the sales department at sales@trolltech.com.
|
||||
**
|
||||
** This file may be used under the terms of the Q Public License as
|
||||
** defined by Trolltech ASA and appearing in the file LICENSE.TQPL
|
||||
** included in the packaging of this file. Licensees holding valid TQt
|
||||
** Commercial licenses may use this file in accordance with the TQt
|
||||
** Commercial License Agreement provided with the Software.
|
||||
**
|
||||
** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
|
||||
** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
|
||||
** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted
|
||||
** herein.
|
||||
**
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef TQNP_H
|
||||
#define TQNP_H
|
||||
|
||||
#ifndef QT_H
|
||||
#include "tqwidget.h"
|
||||
#endif // QT_H
|
||||
|
||||
|
||||
struct _NPInstance;
|
||||
struct _NPStream;
|
||||
class TQNPInstance;
|
||||
|
||||
class TQNPStream {
|
||||
public:
|
||||
~TQNPStream();
|
||||
|
||||
const char* url() const;
|
||||
uint end() const;
|
||||
uint lastModified() const;
|
||||
|
||||
const char* type() const;
|
||||
bool seekable() const;
|
||||
bool okay() const;
|
||||
bool complete() const;
|
||||
|
||||
void requestRead(int offset, uint length);
|
||||
int write( int len, void* buffer );
|
||||
|
||||
TQNPInstance* instance() { return inst; }
|
||||
TQNPStream(TQNPInstance*,const char*,_NPStream*,bool);
|
||||
void setOkay(bool);
|
||||
void setComplete(bool);
|
||||
|
||||
private:
|
||||
TQNPInstance* inst;
|
||||
_NPStream* stream;
|
||||
TQString mtype;
|
||||
int seek:1;
|
||||
int isokay:1;
|
||||
int iscomplete:1;
|
||||
};
|
||||
|
||||
class TQNPWidget : public TQWidget {
|
||||
TQ_OBJECT
|
||||
public:
|
||||
TQNPWidget();
|
||||
~TQNPWidget();
|
||||
void enterEvent(TQEvent*);
|
||||
void leaveEvent(TQEvent*);
|
||||
|
||||
virtual void enterInstance();
|
||||
virtual void leaveInstance();
|
||||
|
||||
TQNPInstance* instance();
|
||||
|
||||
private:
|
||||
_NPInstance* pi;
|
||||
};
|
||||
|
||||
class TQNPInstance : public TQObject {
|
||||
TQ_OBJECT
|
||||
public:
|
||||
~TQNPInstance();
|
||||
|
||||
// Arguments passed to EMBED
|
||||
int argc() const;
|
||||
const char* argn(int) const;
|
||||
const char* argv(int) const;
|
||||
enum Reason {
|
||||
ReasonDone = 0,
|
||||
ReasonBreak = 1,
|
||||
ReasonError = 2,
|
||||
ReasonUnknown = -1
|
||||
};
|
||||
const char* arg(const char* name) const;
|
||||
enum InstanceMode { Embed=1, Full=2, Background=3 };
|
||||
InstanceMode mode() const;
|
||||
|
||||
// The browser's name
|
||||
const char* userAgent() const;
|
||||
|
||||
// Your window.
|
||||
virtual TQNPWidget* newWindow();
|
||||
TQNPWidget* widget();
|
||||
|
||||
// Incoming streams (SRC=... tag).
|
||||
// Defaults ignore data.
|
||||
enum StreamMode { Normal=1, Seek=2, AsFile=3, AsFileOnly=4 };
|
||||
virtual bool newStreamCreated(TQNPStream*, StreamMode& smode);
|
||||
virtual int writeReady(TQNPStream*);
|
||||
virtual int write(TQNPStream*, int offset, int len, void* buffer);
|
||||
virtual void streamDestroyed(TQNPStream*);
|
||||
|
||||
void status(const char* msg);
|
||||
void getURLNotify(const char* url, const char* window=0, void*data=0);
|
||||
|
||||
void getURL(const char* url, const char* window=0);
|
||||
void postURL(const char* url, const char* window,
|
||||
uint len, const char* buf, bool file);
|
||||
|
||||
TQNPStream* newStream(const char* mimetype, const char* window,
|
||||
bool as_file=FALSE);
|
||||
virtual void streamAsFile(TQNPStream*, const char* fname);
|
||||
|
||||
void* getJavaPeer() const;
|
||||
|
||||
virtual void notifyURL(const char* url, Reason r, void* notifyData);
|
||||
virtual bool printFullPage();
|
||||
virtual void print(TQPainter*);
|
||||
|
||||
protected:
|
||||
TQNPInstance();
|
||||
|
||||
private:
|
||||
friend class TQNPStream;
|
||||
_NPInstance* pi;
|
||||
};
|
||||
|
||||
|
||||
class TQNPlugin {
|
||||
public:
|
||||
// Write this to return your TQNPlugin derived class.
|
||||
static TQNPlugin* create();
|
||||
|
||||
static TQNPlugin* actual();
|
||||
|
||||
virtual ~TQNPlugin();
|
||||
|
||||
void getVersionInfo(int& plugin_major, int& plugin_minor,
|
||||
int& browser_major, int& browser_minor);
|
||||
|
||||
virtual TQNPInstance* newInstance()=0;
|
||||
virtual const char* getMIMEDescription() const=0;
|
||||
virtual const char* getPluginNameString() const=0;
|
||||
virtual const char* getPluginDescriptionString() const=0;
|
||||
|
||||
virtual void* getJavaClass();
|
||||
virtual void unuseJavaClass();
|
||||
void* getJavaEnv() const;
|
||||
|
||||
protected:
|
||||
TQNPlugin();
|
||||
};
|
||||
|
||||
|
||||
#endif // TQNP_H
|
@ -1,14 +0,0 @@
|
||||
TEMPLATE = lib
|
||||
TARGET = tqnp
|
||||
|
||||
CONFIG -= dll
|
||||
CONFIG += qt x11 release staticlib
|
||||
DESTDIR = ../../../lib
|
||||
VERSION = 0.4
|
||||
|
||||
SOURCES = tqnp.cpp
|
||||
unix:HEADERS += tqnp.h
|
||||
win32:HEADERS = ../../../include/tqnp.h
|
||||
win32:LIBS += -lqtmain
|
||||
MOC_DIR = .
|
||||
DESTINCDIR = ../../../include
|
Loading…
Reference in new issue