Tesseract  3.02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ScrollView Class Reference

#include <scrollview.h>

List of all members.

Public Types

enum  Color {
  NONE, BLACK, WHITE, RED,
  YELLOW, GREEN, CYAN, BLUE,
  MAGENTA, AQUAMARINE, DARK_SLATE_BLUE, LIGHT_BLUE,
  MEDIUM_BLUE, MIDNIGHT_BLUE, NAVY_BLUE, SKY_BLUE,
  SLATE_BLUE, STEEL_BLUE, CORAL, BROWN,
  SANDY_BROWN, GOLD, GOLDENROD, DARK_GREEN,
  DARK_OLIVE_GREEN, FOREST_GREEN, LIME_GREEN, PALE_GREEN,
  YELLOW_GREEN, LIGHT_GREY, DARK_SLATE_GREY, DIM_GREY,
  GREY, KHAKI, MAROON, ORANGE,
  ORCHID, PINK, PLUM, INDIAN_RED,
  ORANGE_RED, VIOLET_RED, SALMON, TAN,
  TURQUOISE, DARK_TURQUOISE, VIOLET, WHEAT,
  GREEN_YELLOW
}

Public Member Functions

 ~ScrollView ()
 ScrollView (const char *name, int x_pos, int y_pos, int x_size, int y_size, int x_canvas_size, int y_canvas_size)
 Calls Initialize with default argument for server_name_ & y_axis_reversed.
 ScrollView (const char *name, int x_pos, int y_pos, int x_size, int y_size, int x_canvas_size, int y_canvas_size, bool y_axis_reversed)
 Calls Initialize with default argument for server_name_.
 ScrollView (const char *name, int x_pos, int y_pos, int x_size, int y_size, int x_canvas_size, int y_canvas_size, bool y_axis_reversed, const char *server_name)
 Calls Initialize with all arguments given.
void AddEventHandler (SVEventHandler *listener)
 Add an Event Listener to this ScrollView Window.
SVEventAwaitEvent (SVEventType type)
SVEventAwaitEventAnyWindow ()
const char * GetName ()
int GetId ()
void Image (struct Pix *image, int x_pos, int y_pos)
void UpdateWindow ()
void Clear ()
void Pen (Color color)
void Pen (int red, int green, int blue)
void Pen (int red, int green, int blue, int alpha)
void Brush (Color color)
void Brush (int red, int green, int blue)
void Brush (int red, int green, int blue, int alpha)
void TextAttributes (const char *font, int pixel_size, bool bold, bool italic, bool underlined)
void Line (int x1, int y1, int x2, int y2)
void Stroke (float width)
void Rectangle (int x1, int y1, int x2, int y2)
void Ellipse (int x, int y, int width, int height)
void Text (int x, int y, const char *mystring)
void Image (const char *image, int x_pos, int y_pos)
void SetCursor (int x, int y)
void DrawTo (int x, int y)
void SetVisible (bool visible)
void AlwaysOnTop (bool b)
int ShowYesNoDialog (const char *msg)
char * ShowInputDialog (const char *msg)
void AddMessageBox ()
void AddMessage (const char *format,...)
void ZoomToRectangle (int x1, int y1, int x2, int y2)
void SendMsg (const char *msg,...)
 Send a message to the server, attaching the window id.
void MenuItem (const char *parent, const char *name)
void MenuItem (const char *parent, const char *name, int cmdEvent)
void MenuItem (const char *parent, const char *name, int cmdEvent, bool flagged)
void PopupItem (const char *parent, const char *name)
void PopupItem (const char *parent, const char *name, int cmdEvent, const char *value, const char *desc)
int TranslateYCoordinate (int y)

Static Public Member Functions

static void Update ()
static void Exit ()
static void SendRawMessage (const char *msg)

Detailed Description

Definition at line 102 of file scrollview.h.


Member Enumeration Documentation

Enumerator:
NONE 
BLACK 
WHITE 
RED 
YELLOW 
GREEN 
CYAN 
BLUE 
MAGENTA 
AQUAMARINE 
DARK_SLATE_BLUE 
LIGHT_BLUE 
MEDIUM_BLUE 
MIDNIGHT_BLUE 
NAVY_BLUE 
SKY_BLUE 
SLATE_BLUE 
STEEL_BLUE 
CORAL 
BROWN 
SANDY_BROWN 
GOLD 
GOLDENROD 
DARK_GREEN 
DARK_OLIVE_GREEN 
FOREST_GREEN 
LIME_GREEN 
PALE_GREEN 
YELLOW_GREEN 
LIGHT_GREY 
DARK_SLATE_GREY 
DIM_GREY 
GREY 
KHAKI 
MAROON 
ORANGE 
ORCHID 
PINK 
PLUM 
INDIAN_RED 
ORANGE_RED 
VIOLET_RED 
SALMON 
TAN 
TURQUOISE 
DARK_TURQUOISE 
VIOLET 
WHEAT 
GREEN_YELLOW 

Definition at line 105 of file scrollview.h.


Constructor & Destructor Documentation

ScrollView::~ScrollView ( )

Definition at line 361 of file scrollview.cpp.

{
#ifndef GRAPHICS_DISABLED
svmap_mu->Lock();
if (svmap[window_id_] != NULL) {
svmap_mu->Unlock();
// So the event handling thread can quit.
SendMsg("destroy()");
delete sve;
svmap_mu->Lock();
svmap[window_id_] = NULL;
svmap_mu->Unlock();
// The event handler thread for this window *must* receive the
// destroy event and set its pointer to this to NULL before we allow
// the destructor to exit.
while (!event_handler_ended_)
Update();
} else {
svmap_mu->Unlock();
}
delete mutex_;
delete semaphore_;
delete points_;
#endif // GRAPHICS_DISABLED
}
ScrollView::ScrollView ( const char *  name,
int  x_pos,
int  y_pos,
int  x_size,
int  y_size,
int  x_canvas_size,
int  y_canvas_size 
)

Calls Initialize with default argument for server_name_ & y_axis_reversed.

Definition at line 264 of file scrollview.cpp.

{
Initialize(name, x_pos, y_pos, x_size, y_size, x_canvas_size, y_canvas_size,
false, "localhost");
}
ScrollView::ScrollView ( const char *  name,
int  x_pos,
int  y_pos,
int  x_size,
int  y_size,
int  x_canvas_size,
int  y_canvas_size,
bool  y_axis_reversed 
)

Calls Initialize with default argument for server_name_.

Definition at line 256 of file scrollview.cpp.

{
Initialize(name, x_pos, y_pos, x_size, y_size, x_canvas_size, y_canvas_size,
y_axis_reversed, "localhost");
}
ScrollView::ScrollView ( const char *  name,
int  x_pos,
int  y_pos,
int  x_size,
int  y_size,
int  x_canvas_size,
int  y_canvas_size,
bool  y_axis_reversed,
const char *  server_name 
)

Calls Initialize with all arguments given.

Definition at line 249 of file scrollview.cpp.

{
Initialize(name, x_pos, y_pos, x_size, y_size, x_canvas_size, y_canvas_size,
y_axis_reversed, server_name);}

Member Function Documentation

void ScrollView::AddEventHandler ( SVEventHandler listener)

Add an Event Listener to this ScrollView Window.

Definition at line 413 of file scrollview.cpp.

{
event_handler_ = listener;
}
void ScrollView::AddMessage ( const char *  format,
  ... 
)

Definition at line 562 of file scrollview.cpp.

{
va_list args;
char message[kMaxMsgSize];
char form[kMaxMsgSize];
va_start(args, format); // variable list
vsnprintf(message, kMaxMsgSize, format, args);
va_end(args);
snprintf(form, kMaxMsgSize, "w%u:%s", window_id_, message);
char* esc = AddEscapeChars(form);
SendMsg("addMessage(\"%s\")", esc);
delete[] esc;
}
void ScrollView::AddMessageBox ( )

Definition at line 579 of file scrollview.cpp.

{
SendMsg("addMessageBox()");
}
void ScrollView::AlwaysOnTop ( bool  b)

Definition at line 556 of file scrollview.cpp.

{
if (b) { SendMsg("setAlwaysOnTop(true)");
} else { SendMsg("setAlwaysOnTop(false)"); }
}
SVEvent * ScrollView::AwaitEvent ( SVEventType  type)

Block until an event of the given type is received. Note: The calling function is responsible for deleting the returned SVEvent afterwards!

Definition at line 444 of file scrollview.cpp.

{
// Initialize the waiting semaphore.
SVSemaphore* sem = new SVSemaphore();
std::pair<ScrollView*, SVEventType> ea(this, type);
waiting_for_events_mu->Lock();
waiting_for_events[ea] = std::pair<SVSemaphore*, SVEvent*> (sem, (SVEvent*)0);
waiting_for_events_mu->Unlock();
// Wait on it, but first flush.
stream_->Flush();
sem->Wait();
// Process the event we got woken up for (its in waiting_for_events pair).
waiting_for_events_mu->Lock();
SVEvent* ret = waiting_for_events[ea].second;
waiting_for_events.erase(ea);
delete sem;
waiting_for_events_mu->Unlock();
return ret;
}
SVEvent * ScrollView::AwaitEventAnyWindow ( )

Definition at line 465 of file scrollview.cpp.

{
// Initialize the waiting semaphore.
SVSemaphore* sem = new SVSemaphore();
std::pair<ScrollView*, SVEventType> ea((ScrollView*)0, SVET_ANY);
waiting_for_events_mu->Lock();
waiting_for_events[ea] = std::pair<SVSemaphore*, SVEvent*> (sem, (SVEvent*)0);
waiting_for_events_mu->Unlock();
// Wait on it.
stream_->Flush();
sem->Wait();
// Process the event we got woken up for (its in waiting_for_events pair).
waiting_for_events_mu->Lock();
SVEvent* ret = waiting_for_events[ea].second;
waiting_for_events.erase(ea);
waiting_for_events_mu->Unlock();
return ret;
}
void ScrollView::Brush ( Color  color)

Definition at line 727 of file scrollview.cpp.

{
Brush(table_colors[color][0],
table_colors[color][1],
table_colors[color][2],
table_colors[color][3]);
}
void ScrollView::Brush ( int  red,
int  green,
int  blue 
)

Definition at line 626 of file scrollview.cpp.

{
SendMsg("brush(%d,%d,%d)", red, green, blue);
}
void ScrollView::Brush ( int  red,
int  green,
int  blue,
int  alpha 
)

Definition at line 631 of file scrollview.cpp.

{
SendMsg("brush(%d,%d,%d,%d)", red, green, blue, alpha);
}
void ScrollView::Clear ( )

Definition at line 590 of file scrollview.cpp.

{
SendMsg("clear()");
}
void ScrollView::DrawTo ( int  x,
int  y 
)

Definition at line 526 of file scrollview.cpp.

{
points_->xcoords.push_back(x);
points_->ycoords.push_back(TranslateYCoordinate(y));
points_->empty = false;
}
void ScrollView::Ellipse ( int  x,
int  y,
int  width,
int  height 
)

Definition at line 610 of file scrollview.cpp.

{
SendMsg("drawEllipse(%d,%d,%u,%u)",
x1, TranslateYCoordinate(y1), width, height);
}
void ScrollView::Exit ( )
static

Definition at line 584 of file scrollview.cpp.

{
SendRawMessage("svmain:exit()");
exit(0);
}
int ScrollView::GetId ( )
inline

Definition at line 197 of file scrollview.h.

{ return window_id_; }
const char* ScrollView::GetName ( )
inline

Definition at line 194 of file scrollview.h.

{ return window_name_; }
void ScrollView::Image ( struct Pix *  image,
int  x_pos,
int  y_pos 
)

Definition at line 768 of file scrollview.cpp.

{
int width = image->w;
int height = image->h;
l_uint32 bpp = image->d;
++image_index_;
// PIX* do not have a unique identifier/name associated, so name them "lept".
SendMsg("createImage('lept%d',%d,%d,%d)", image_index_, width, height, bpp);
if (bpp == 32) {
Transfer32bppImage(image);
} else if (bpp == 8) {
TransferGrayImage(image);
} else if (bpp == 1) {
TransferBinaryImage(image);
}
// PIX* do not have a unique identifier/name associated, so name them "lept".
SendMsg("drawImage('lept%d',%d,%d)", image_index_, x_pos, y_pos);
}
void ScrollView::Image ( const char *  image,
int  x_pos,
int  y_pos 
)

Definition at line 658 of file scrollview.cpp.

{
SendMsg("openImage('%s')", image);
SendMsg("drawImage('%s',%d,%d)",
image, x_pos, TranslateYCoordinate(y_pos));
}
void ScrollView::Line ( int  x1,
int  y1,
int  x2,
int  y2 
)

Definition at line 533 of file scrollview.cpp.

{
if (!points_->xcoords.empty() && x1 == points_->xcoords.back() &&
TranslateYCoordinate(y1) == points_->ycoords.back()) {
// We are already at x1, y1, so just draw to x2, y2.
DrawTo(x2, y2);
} else if (!points_->xcoords.empty() && x2 == points_->xcoords.back() &&
TranslateYCoordinate(y2) == points_->ycoords.back()) {
// We are already at x2, y2, so just draw to x1, y1.
DrawTo(x1, y1);
} else {
// This is a new line.
SetCursor(x1, y1);
DrawTo(x2, y2);
}
}
void ScrollView::MenuItem ( const char *  parent,
const char *  name 
)

Definition at line 681 of file scrollview.cpp.

{
if (parent == NULL) { parent = ""; }
SendMsg("addMenuBarItem('%s','%s')", parent, name);
}
void ScrollView::MenuItem ( const char *  parent,
const char *  name,
int  cmdEvent 
)

Definition at line 675 of file scrollview.cpp.

{
if (parent == NULL) { parent = ""; }
SendMsg("addMenuBarItem('%s','%s',%d)", parent, name, cmdEvent);
}
void ScrollView::MenuItem ( const char *  parent,
const char *  name,
int  cmdEvent,
bool  flagged 
)

Definition at line 665 of file scrollview.cpp.

{
if (parent == NULL) { parent = ""; }
if (flag) { SendMsg("addMenuBarItem('%s','%s',%d,true)",
parent, name, cmdEvent);
} else { SendMsg("addMenuBarItem('%s','%s',%d,false)",
parent, name, cmdEvent); }
}
void ScrollView::Pen ( Color  color)

Definition at line 721 of file scrollview.cpp.

{
Pen(table_colors[color][0], table_colors[color][1],
table_colors[color][2], table_colors[color][3]);
}
void ScrollView::Pen ( int  red,
int  green,
int  blue 
)

Definition at line 616 of file scrollview.cpp.

{
SendMsg("pen(%d,%d,%d)", red, green, blue);
}
void ScrollView::Pen ( int  red,
int  green,
int  blue,
int  alpha 
)

Definition at line 621 of file scrollview.cpp.

{
SendMsg("pen(%d,%d,%d,%d)", red, green, blue, alpha);
}
void ScrollView::PopupItem ( const char *  parent,
const char *  name 
)

Definition at line 687 of file scrollview.cpp.

{
if (parent == NULL) { parent = ""; }
SendMsg("addPopupMenuItem('%s','%s')", parent, name);
}
void ScrollView::PopupItem ( const char *  parent,
const char *  name,
int  cmdEvent,
const char *  value,
const char *  desc 
)

Definition at line 693 of file scrollview.cpp.

{
if (parent == NULL) { parent = ""; }
char* esc = AddEscapeChars(value);
char* esc2 = AddEscapeChars(desc);
SendMsg("addPopupMenuItem('%s','%s',%d,'%s','%s')", parent, name,
cmdEvent, esc, esc2);
delete[] esc;
delete[] esc2;
}
void ScrollView::Rectangle ( int  x1,
int  y1,
int  x2,
int  y2 
)

Definition at line 601 of file scrollview.cpp.

{
if (x1 == x2 && y1 == y2)
return; // Scrollviewer locks up.
SendMsg("drawRectangle(%d,%d,%d,%d)",
}
void ScrollView::SendMsg ( const char *  msg,
  ... 
)

Send a message to the server, attaching the window id.

Definition at line 390 of file scrollview.cpp.

{
if (!points_->empty)
SendPolygon();
va_list args;
char message[kMaxMsgSize];
va_start(args, format); // variable list
vsnprintf(message, kMaxMsgSize, format, args);
va_end(args);
char form[kMaxMsgSize];
snprintf(form, kMaxMsgSize, "w%u:%s\n", window_id_, message);
stream_->Send(form);
}
void ScrollView::SendRawMessage ( const char *  msg)
static

Send a message to the server without a window id. Used for global events like exit().

Definition at line 408 of file scrollview.cpp.

{
stream_->Send(msg);
}
void ScrollView::SetCursor ( int  x,
int  y 
)

Definition at line 520 of file scrollview.cpp.

{
SendPolygon();
DrawTo(x, y);
}
void ScrollView::SetVisible ( bool  visible)

Definition at line 550 of file scrollview.cpp.

{
if (visible) { SendMsg("setVisible(true)");
} else { SendMsg("setVisible(false)"); }
}
char * ScrollView::ShowInputDialog ( const char *  msg)

Definition at line 735 of file scrollview.cpp.

{
SendMsg("showInputDialog(\"%s\")", msg);
SVEvent* ev;
// wait till an input event (all others are thrown away)
char* p = new char[strlen(ev->parameter) + 1];
strncpy(p, ev->parameter, strlen(ev->parameter));
p[strlen(ev->parameter)] = '\0';
delete ev;
return p;
}
int ScrollView::ShowYesNoDialog ( const char *  msg)

Definition at line 748 of file scrollview.cpp.

{
SendMsg("showYesNoDialog(\"%s\")", msg);
SVEvent* ev;
// Wait till an input event (all others are thrown away)
int a = ev->parameter[0];
delete ev;
return a;
}
void ScrollView::Stroke ( float  width)

Definition at line 595 of file scrollview.cpp.

{
SendMsg("setStrokeWidth(%f)", width);
}
void ScrollView::Text ( int  x,
int  y,
const char *  mystring 
)

Definition at line 653 of file scrollview.cpp.

{
SendMsg("drawText(%d,%d,'%s')", x, TranslateYCoordinate(y), mystring);
}
void ScrollView::TextAttributes ( const char *  font,
int  pixel_size,
bool  bold,
bool  italic,
bool  underlined 
)

Definition at line 636 of file scrollview.cpp.

{
const char* b;
const char* i;
const char* u;
if (bold) { b = "true";
} else { b = "false"; }
if (italic) { i = "true";
} else { i = "false"; }
if (underlined) { u = "true";
} else { u = "false"; }
SendMsg("textAttributes('%s',%u,%s,%s,%s)", font, pixel_size,
b, i, u);
}
int ScrollView::TranslateYCoordinate ( int  y)

Definition at line 863 of file scrollview.cpp.

{
if (!y_axis_is_reversed_) { return y;
} else { return y_size_ - y; }
}
void ScrollView::Update ( )
static

Definition at line 710 of file scrollview.cpp.

{
svmap_mu->Lock();
for (std::map<int, ScrollView*>::iterator iter = svmap.begin();
iter != svmap.end(); ++iter) {
if (iter->second != NULL)
iter->second->UpdateWindow();
}
svmap_mu->Unlock();
}
void ScrollView::UpdateWindow ( )

Definition at line 705 of file scrollview.cpp.

{
SendMsg("update()");
}
void ScrollView::ZoomToRectangle ( int  x1,
int  y1,
int  x2,
int  y2 
)

Definition at line 760 of file scrollview.cpp.

{
SendMsg("zoomRectangle(%d,%d,%d,%d)",
MIN(x1, x2), MIN(y1, y2), MAX(x1, x2), MAX(y1, y2));
}

The documentation for this class was generated from the following files: