2007-03-08 04:03:40 +08:00
|
|
|
/**********************************************************************
|
|
|
|
* File: drawedg.c (Formerly drawedge.c)
|
|
|
|
* Description: Collection of functions to draw things to do with edge detection.
|
2008-04-22 08:34:11 +08:00
|
|
|
* Author: Ray Smith
|
|
|
|
* Created: Thu Jun 06 13:29:20 BST 1991
|
2007-03-08 04:03:40 +08:00
|
|
|
*
|
|
|
|
* (C) Copyright 1991, Hewlett-Packard Ltd.
|
|
|
|
** Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
** you may not use this file except in compliance with the License.
|
|
|
|
** You may obtain a copy of the License at
|
|
|
|
** http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
** Unless required by applicable law or agreed to in writing, software
|
|
|
|
** distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
** See the License for the specific language governing permissions and
|
|
|
|
** limitations under the License.
|
|
|
|
*
|
|
|
|
**********************************************************************/
|
|
|
|
|
2010-09-30 23:53:40 +08:00
|
|
|
#include "drawedg.h"
|
|
|
|
|
2010-05-28 20:03:45 +08:00
|
|
|
// Include automatically generated configuration file if running autoconf.
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
#include "config_auto.h"
|
|
|
|
#endif
|
|
|
|
|
2009-06-04 01:24:08 +08:00
|
|
|
#ifndef GRAPHICS_DISABLED
|
|
|
|
|
2010-08-11 03:20:11 +08:00
|
|
|
/** title of window */
|
|
|
|
#define IMAGE_WIN_NAME "Edges"
|
2007-03-08 04:03:40 +08:00
|
|
|
#define IMAGE_XPOS 250
|
2010-08-11 03:20:11 +08:00
|
|
|
/** default position */
|
|
|
|
#define IMAGE_YPOS 0
|
2007-03-08 04:03:40 +08:00
|
|
|
|
|
|
|
#define EXTERN
|
|
|
|
|
2010-08-11 03:20:11 +08:00
|
|
|
/**
|
|
|
|
* @name create_edges_window
|
2007-03-08 04:03:40 +08:00
|
|
|
*
|
|
|
|
* Create the edges window.
|
2010-08-11 03:20:11 +08:00
|
|
|
* @param page_tr size of image
|
|
|
|
*/
|
2007-03-08 04:03:40 +08:00
|
|
|
|
2010-08-11 03:20:11 +08:00
|
|
|
ScrollView* create_edges_window(ICOORD page_tr) {
|
2008-02-01 08:48:25 +08:00
|
|
|
ScrollView* image_win; //image window
|
2007-03-08 04:03:40 +08:00
|
|
|
|
|
|
|
//create the window
|
2008-02-01 08:48:25 +08:00
|
|
|
image_win = new ScrollView (IMAGE_WIN_NAME, IMAGE_XPOS, IMAGE_YPOS, 0, 0, page_tr.x (), page_tr.y ());
|
2007-03-08 04:03:40 +08:00
|
|
|
return image_win; //window
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2010-08-11 03:20:11 +08:00
|
|
|
/**
|
|
|
|
* @name draw_raw_edge
|
2007-03-08 04:03:40 +08:00
|
|
|
*
|
|
|
|
* Draw the raw steps to the given window in the given colour.
|
2010-08-11 03:20:11 +08:00
|
|
|
* @param fd window to draw in
|
|
|
|
* @param start start of loop
|
|
|
|
* @param colour colour to draw in
|
|
|
|
*/
|
2007-03-08 04:03:40 +08:00
|
|
|
|
2010-08-11 03:20:11 +08:00
|
|
|
void draw_raw_edge(ScrollView* fd,
|
|
|
|
CRACKEDGE *start,
|
|
|
|
ScrollView::Color colour) {
|
2007-03-08 04:03:40 +08:00
|
|
|
CRACKEDGE *edgept; //current point
|
|
|
|
|
2008-04-22 08:34:11 +08:00
|
|
|
fd->Pen(colour);
|
2007-03-08 04:03:40 +08:00
|
|
|
edgept = start;
|
2008-02-01 08:48:25 +08:00
|
|
|
fd->SetCursor(edgept->pos.x (), edgept->pos.y ());
|
2007-03-08 04:03:40 +08:00
|
|
|
do {
|
|
|
|
do
|
|
|
|
edgept = edgept->next;
|
|
|
|
//merge straight lines
|
|
|
|
while (edgept != start && edgept->prev->stepx == edgept->stepx && edgept->prev->stepy == edgept->stepy);
|
|
|
|
|
|
|
|
//draw lines
|
2008-02-01 08:48:25 +08:00
|
|
|
fd->DrawTo(edgept->pos.x (), edgept->pos.y ());
|
2007-03-08 04:03:40 +08:00
|
|
|
}
|
|
|
|
while (edgept != start);
|
|
|
|
}
|
|
|
|
|
2009-06-04 01:24:08 +08:00
|
|
|
#endif // GRAPHICS_DISABLED
|