Logo Search packages:      
Sourcecode: sagcad version File versions  Download package

List_Dimension.c

/* ====================================================================
 * ===  Copyright (C) 1998-2007 Yutaka Sagiya. All rights reserved. ===
 * ====================================================================
 * 
 *    Project              : SagCAD
 *    Description          : CAD/CAM
 *    Source               : List_dimension.c
 * 
 *    ----------------------------------
 * 
 *    License              : GNU General Public License (GPL)
 *    Copyright            : (C) 1998-2007 by Yutaka Sagiya
 *    email                : kappa@a6s.highway.ne.jp
 *                         : yutaka@sagiya.com
 *    Begin                : 2001/01/16
 *    Last                 : 2007/11/08
 * ====================================================================
 */

#ifdef HAVE_CONFIG_H
#  include "config.h"
#endif

#include <gtk/gtk.h>
#include <unistd.h>
//#include <pwd.h>
#include <sys/types.h>
#include <sys/stat.h>

#include <stdio.h>
#include <stdlib.h>
#define _LIST_DIMENSION_
#include "MemoryLeak.h"
#include "List_cad.h"
#include "List_Dimension.h"
#include "List_PolyLine.h"
#include "List_Block.h"
#include "List_Undo.h"
#include "List_Select.h"
#include "global.h"
#include "etc.h"





int init_dimension(DIMENSION *dimension)
{
      double scale;

      /* DIMENSION Data の初期化 */
      dimension->Layer = 0;
      dimension->text_color = sagcad_color.Dimension;
      dimension->Assist_color = sagcad_color.Dimension;
      dimension->DrawType = DRAW_REAL;
      dimension->FontType = sagcad_dimension.font_Type;
      dimension->FontHeight = sagcad_dimension.Font_height;
      scale = (dimension->FontHeight / 9.);
      dimension->FontSpace = sagcad_dimension.Font_space * scale;
      dimension->WordSpace = sagcad_dimension.Word_space * scale;
      dimension->FontOverLineSpace = sagcad_dimension.Font_space_line * scale;
      dimension->Type = 0;
      strcpy(dimension->Text, "");
      strcpy(dimension->UpperText, "");
      strcpy(dimension->LowerText, "");
      dimension->Angle = 0;
      dimension->SearchPointX = 0;
      dimension->SearchPointY = 0;
      dimension->StartPoint = 0;
      dimension->FitPointX = 0;
      dimension->FitPointY = 0;
      dimension->start.x = 0;
      dimension->start.y = 0;
      dimension->end.x = 0;
      dimension->end.y = 0;
      dimension->diagram_of_char_index = 0;
      dimension->diagram_of_char = NULL;
      dimension->index = 0;
      dimension->AssistLine = NULL;
      return 1;
}





/* -------------------------------------------------------------------
 * DIMENSION Data をリストの最初に追加
 *    
 * データ (AssistLine) を書き込むための領域は、ここに来る前に
 * 確保されているので改めて確保する必要ない。
 */
DIMENSION_LIST *r_dimension_list_add_first(DIMENSION *add_dimension, DIMENSION_LIST_INFO *p_dimension_list_info)
{
      DIMENSION_LIST *p;

      /* データ (LIST) を書き込むための領域を確保する */
      p_dimension_list = (DIMENSION_LIST *)xmalloc(sizeof(DIMENSION_LIST));

      /* 確保した領域にデータ (dimension) を書き込む */
      p_dimension_list->dimension = add_dimension;
      p_dimension_list->next = NULL;


      /* -----------------------------------------------------
       * head & tail の両方が NULL のときは、1個もデータがない 
       */
      if (p_dimension_list_info->head == NULL && p_dimension_list_info->tail == NULL) {
            p_dimension_list_info->head = p_dimension_list;
            p_dimension_list_info->tail = p_dimension_list;
      }

      /* -----------------------------------------------------
       * データが1個以上ある
       */
      else {
            p = p_dimension_list_info->head;
            p_dimension_list_info->head = p_dimension_list;
            p_dimension_list->next = p;
      }

      return p_dimension_list_info->head;
}





/* -------------------------------------------------------------------
 * DIMENSION Data をリストの最初に追加
 *    
 * データ (AssistLine) を書き込むための領域は、ここに来る前に
 * 確保されているので改めて確保する必要ない。
 */
DIMENSION_LIST *dimension_list_add_first(DIMENSION *add_dimension, DIMENSION_LIST_INFO *p_dimension_list_info)
{
      DIMENSION_LIST *p;

      /* データ (LIST) を書き込むための領域を確保する */
      p_dimension_list = (DIMENSION_LIST *)xmalloc(sizeof(DIMENSION_LIST));

      /* データ (dimension) を書き込むための領域を確保する */
      p_dimension_list->dimension = (DIMENSION *)xmalloc(sizeof(DIMENSION));

      /* データ (AssistLine) を書き込むための領域を確保する */
//    p_dimension_list->dimension->AssistLine = (ASSISTANCE *)xmalloc(add_dimension->index * sizeof(ASSISTANCE));

      /* 確保した領域にデータ (dimension) を書き込む */
      *p_dimension_list->dimension = *add_dimension;
      p_dimension_list->next = NULL;


      /* -----------------------------------------------------
       * head & tail の両方が NULL のときは、1個もデータがない 
       */
      if (p_dimension_list_info->head == NULL && p_dimension_list_info->tail == NULL) {
            p_dimension_list_info->head = p_dimension_list;
            p_dimension_list_info->tail = p_dimension_list;
      }

      /* -----------------------------------------------------
       * データが1個以上ある
       */
      else {
            p = p_dimension_list_info->head;
            p_dimension_list_info->head = p_dimension_list;
            p_dimension_list->next = p;
      }

      return p_dimension_list_info->head;
}





/* ---------------------------------------------------------
 * DIMENSION Data をリストの最初に追加して、 Undo Baffer に書込む
 *    
 * データ (AssistLine) を書き込むための領域は、ここに来る前に
 * 確保されているので改めて確保する必要ない。
 */
DIMENSION_LIST *dimension_list_add_first_with_undo(DIMENSION *add_dimension, DIMENSION_LIST_INFO *p_dimension_list_info)
{
      DIMENSION_LIST *p;
      DIMENSION dimension = {0,0,0,0,0,"","","",0,"",0,0,0,0, 0,0,0,0,0,0, {0,0}, {0,0}, 0,NULL, 0,NULL};

      DIAGRAM diagram;
      LPDIAGRAM lpdiagram;


      /* データ (LIST) を書き込むための領域を確保する */
      p_dimension_list = (DIMENSION_LIST *)xmalloc(sizeof(DIMENSION_LIST));
      /* データ (dimension) を書き込むための領域を確保する */
      p_dimension_list->dimension = (DIMENSION *)xmalloc(sizeof(DIMENSION));

      /* データ (AssistLine) を書き込むための領域を確保する */
//    p_dimension_list->dimension->AssistLine = (ASSISTANCE *)xmalloc(add_dimension->index * sizeof(ASSISTANCE));

      /* 確保した領域にデータ (dimension) を書き込む */
      *p_dimension_list->dimension = *add_dimension;
      p_dimension_list->next = NULL;


      /* -----------------------------------------------------
       * head & tail の両方が NULL のときは、1個もデータがない 
       */
      if (p_dimension_list_info->head == NULL && p_dimension_list_info->tail == NULL) {
            p_dimension_list_info->head = p_dimension_list;
            p_dimension_list_info->tail = p_dimension_list;
      }

      /* -----------------------------------------------------
       * データが1個以上ある
       */
      else {
            p = p_dimension_list_info->head;
            p_dimension_list_info->head = p_dimension_list;
            p_dimension_list->next = p;
      }


      lpdiagram.dimension_point = p_dimension_list_info->head->dimension;
      diagram.dimension = dimension;

      /* Undo Buffa Write */
      undo_list_add_first(DIMENSION_NEW, lpdiagram, diagram);
      return p_dimension_list_info->head;
}





/* ---------------------------------------------------------
 * DIMENSION Data をリストの最後に追加
 *    
 * データ (AssistLine) を書き込むための領域は、ここに来る前に
 * 確保されているので改めて確保する必要ない。
 */
DIMENSION_LIST *dimension_list_add_last(DIMENSION *add_dimension, DIMENSION_LIST_INFO *p_dimension_list_info)
{
      DIMENSION_LIST *p;


      /* データ (LIST) を書き込むための領域を確保する */
      p_dimension_list = (DIMENSION_LIST *)xmalloc(sizeof(DIMENSION_LIST));

      /* データ (dimension) を書き込むための領域を確保する */
      p_dimension_list->dimension = (DIMENSION *)xmalloc(sizeof(DIMENSION));

      /* データ (AssistLine) を書き込むための領域を確保する */
//    p_dimension_list->dimension->AssistLine = (ASSISTANCE *)xmalloc(add_dimension->index * sizeof(ASSISTANCE));

      /* 確保した領域にデータ (dimension) を書き込む */
      *p_dimension_list->dimension = *add_dimension;
      p_dimension_list->next = NULL;


      /* -----------------------------------------------------
       * head & tail の両方が NULL のときは、1個もデータがない 
       */
      if (p_dimension_list_info->head == NULL && p_dimension_list_info->tail == NULL) {
            p_dimension_list_info->head = p_dimension_list;
            p_dimension_list_info->tail = p_dimension_list;
      }

      /* -----------------------------------------------------
       * head = tail で NULL ではないときは、1個だけデータがある
       */
      else if (p_dimension_list_info->head != NULL 
                        && p_dimension_list_info->tail != NULL 
                              && p_dimension_list_info->head == p_dimension_list_info->tail) {
            p_dimension_list_info->head->next = p_dimension_list;
            p_dimension_list_info->tail = p_dimension_list;
      }

      /* -----------------------------------------------------
       * データが2個以上ある
       */
      else {
            p = p_dimension_list_info->tail;
            p_dimension_list_info->tail = p_dimension_list;
            p->next = p_dimension_list_info->tail;
      }

      /* アンドゥバッファに書込む */
//    undo_list_add_first(11, p_dimension_list_info->tail, NULL);
      return p_dimension_list_info->tail;
}





/* ---------------------------------------------------------
 * DIMENSION Data をリストの最後に追加、 Undo Baffer に書込む
 *    
 * データ (AssistLine) を書き込むための領域は、ここに来る前に
 * 確保されているので改めて確保する必要ない。
 */
DIMENSION_LIST *dimension_list_add_last_with_undo(DIMENSION *add_dimension, DIMENSION_LIST_INFO *p_dimension_list_info)
{
      DIMENSION_LIST *p;
      DIMENSION dimension = {0,0,0,0,0,"","","",0,"",0,0,0,0, 0,0,0,0,0,0, {0,0}, {0,0}, 0,NULL, 0,NULL};

      DIAGRAM diagram;
      LPDIAGRAM lpdiagram;


      /* データ (LIST) を書き込むための領域を確保する */
      p_dimension_list = (DIMENSION_LIST *)xmalloc(sizeof(DIMENSION_LIST));

      /* データ (dimension) を書き込むための領域を確保する */
      p_dimension_list->dimension = (DIMENSION *)xmalloc(sizeof(DIMENSION));

      /* データ (AssistLine) を書き込むための領域を確保する */
//    p_dimension_list->dimension->AssistLine = (ASSISTANCE *)xmalloc(add_dimension->index * sizeof(ASSISTANCE));

      /* 確保した領域にデータ (dimension) を書き込む */
      *p_dimension_list->dimension = *add_dimension;
      p_dimension_list->next = NULL;


      /* -----------------------------------------------------
       * head & tail の両方が NULL のときは、1個もデータがない 
       */
      if (p_dimension_list_info->head == NULL && p_dimension_list_info->tail == NULL) {
            p_dimension_list_info->head = p_dimension_list;
            p_dimension_list_info->tail = p_dimension_list;
      }

      /* -----------------------------------------------------
       * head = tail で NULL ではないときは、1個だけデータがある
       */
      else if (p_dimension_list_info->head != NULL 
                        && p_dimension_list_info->tail != NULL 
                              && p_dimension_list_info->head == p_dimension_list_info->tail) {
            p_dimension_list_info->head->next = p_dimension_list;
            p_dimension_list_info->tail = p_dimension_list;
      }

      /* -----------------------------------------------------
       * データが2個以上ある
       */
      else {
            p = p_dimension_list_info->tail;
            p_dimension_list_info->tail = p_dimension_list;
            p->next = p_dimension_list_info->tail;
      }


      lpdiagram.dimension_point = p_dimension_list_info->tail->dimension;
      diagram.dimension = dimension;

      /* Undo Buffa Write */
      undo_list_add_first(DIMENSION_NEW, lpdiagram, diagram);
      return p_dimension_list_info->tail;
}





/* -------------------------------------------------------------------
 * DIMENSION Data の削除機能 (メモリの削除ではない)
 * 
 */
int dimension_list_delete(DIMENSION_LIST *del_List, DIMENSION_LIST_INFO *p_dimension_list_info)
{
      DIMENSION_LIST *p = NULL;
      DIMENSION_LIST *pb = NULL;
      long i;

      /* -------------------------------------------
       * 削除するポインタの前のデータを知りたいので、
       * head (リストの先頭) から削除するポインタが
       * 見つかるまで繰り返し、前のデータを探す。
       */
      p = p_dimension_list_info->head;
      i = 0;
      /* -------------------------------------------
       * 最後まで見つからない場合、 p に NULL が 
       * 入ってループを抜ける。
       */
      while (p != NULL && p != del_List) {
            if (i == 0) i++;
            pb = p;                 /* 前のデータのポインタとして保存しておく */
            p = p->next;      /* ポインタを次のデータに移す */
      }


      /* 見つかった場合 (p が NULL ではないとき) */
      if (p != NULL){
            /* 先頭のデータ (i = 0 のとき) */
            if (i == 0) {
                  /* 先頭のデータ1個しかない場合(次のデータのポインタが NULL) */
                  if (p->next == NULL) {
                        p_dimension_list_info->head = NULL;
                        p_dimension_list_info->tail = NULL;
                  }
                  /* 2個以上データがあるとき */
                  else 
                        p_dimension_list_info->head = p->next;
            }

            /* 最後のデータのとき (p->next = NULL) */
            else if (p->next == NULL) {
                  pb->next = NULL;
            }

            /* 中間のデータ (上の条件以外) */
            else {
                  pb->next = p->next;
            }

            xfree(del_List);
//          dimension_list_free(del_List);
            return 1;
      }
      return 0;
}





/* -------------------------------------------------------------------
 * DIMENSION Data の削除機能 (メモリの削除ではなく、Undo Buffer へ移す)
 * 
 */
int dimension_list_delete_Undo(DIMENSION_LIST *del_List, DIMENSION_LIST_INFO *p_dimension_list_info)
{
      DIMENSION_LIST *p = NULL;
      DIMENSION_LIST *pb = NULL;
      long i;

      DIAGRAM diagram;
      LPDIAGRAM lpdiagram;


      /* -------------------------------------------
       * 削除するポインタの前のデータを知りたいので、
       * head (リストの先頭) から削除するポインタが
       * 見つかるまで繰り返し、前のデータを探す。
       */
      p = p_dimension_list_info->head;
      i = 0;
      /* -------------------------------------------
       * 最後まで見つからない場合、 p に NULL が 
       * 入ってループを抜ける。
       */
      while(p != NULL && p != del_List) {
            i++;
            pb = p;                 /* 前のデータのポインタとして保存しておく */
            p = p->next;      /* ポインタを次のデータに移す */
      }


      /* 見つかった場合 (p が NULL ではないとき) */
      if(p != NULL){
            /* 先頭のデータ (i = 0 のとき) */
            if (i == 0) {
                  /* 先頭のデータ1個しかない場合(次のデータのポインタが NULL) */
                  if (p->next == NULL) {
                        p_dimension_list_info->head = NULL;
                        p_dimension_list_info->tail = NULL;
                  }
                  /* 2個以上データがあるとき */
                  else 
                        p_dimension_list_info->head = p->next;
            }

            /* 最後のデータのとき (p->next = NULL) */
            else if (p->next == NULL) pb->next = NULL;

            /* 中間のデータ (上の条件以外) */
            else pb->next = p->next;

            lpdiagram.dimension_point = del_List->dimension;
            diagram.dimension = *del_List->dimension;

            undo_list_add_first(DIMENSION_DEL, lpdiagram, diagram);
            xfree(del_List);
            return 1;
      }
      return 0;
}





/* ---------------------------------------------------------
 * DIMENSION のポインタのデータを Undo バッファ(編集)に入れて、
 * その場所に新しいデータを入れる。
 * 
 * 戻り値 元のデータのアドレス
 * 
 * データ (AssistLine) を書き込むための領域は、ここに来る前に
 * 確保されているので改めて確保する必要ない。
 */
DIMENSION_LIST *dimension_list_edit(DIMENSION_LIST *point, DIMENSION *change_dimension, DIMENSION_LIST_INFO *p_dimension_list_info)
{
      /* データ (LIST) を書き込むための領域を確保する */
      p_dimension_list = (DIMENSION_LIST *)xmalloc(sizeof(DIMENSION_LIST));

      /* データ (dimension) を書き込むための領域を確保する */
      p_dimension_list->dimension = (DIMENSION *)xmalloc(sizeof(DIMENSION));

      /* データ (AssistLine) を書き込むための領域を確保する */
//    p_dimension_list->dimension->AssistLine = (ASSISTANCE *)xmalloc(change_dimension->index * sizeof(ASSISTANCE));

      /* 確保した領域に変更前のデータ (dimension) を書き込む */
      *p_dimension_list->dimension = *point->dimension;
//    p_dimension_list->next = point;

      /* 変更データを書き込む */
      *point->dimension = *change_dimension;

//    undo_list_add_first(13, p_dimension_list, NULL);
      return p_dimension_list;
}





/* ---------------------------------------------------------
 * DIMENSION の変更前のデータ(point)を Undo バッファ(編集)に入れて、
 * その場所に新しいデータ(change_dimension)を入れ、Undo Baffer に書込む
 *    
 * 戻り値 元のデータのアドレス
 *    
 * データ (AssistLine) を書き込むための領域は、ここに来る前に
 * 確保されているので改めて確保する必要ない。
 */
DIMENSION_LIST *dimension_list_edit_with_undo(DIMENSION_LIST *point, DIMENSION *change_dimension, DIMENSION_LIST_INFO *p_dimension_list_info)
{
      DIMENSION dimension = {0,0,0,0,0,"","","",0,"",0,0,0,0, 0,0,0,0,0,0, {0,0}, {0,0}, 0,NULL, 0,NULL};

      DIAGRAM diagram;
      LPDIAGRAM lpdiagram;


      /* 確保した領域に変更前のデータ (DIMENSION) を書き込む */
      dimension = *point->dimension;

      /* 変更データを書き込む */
      *point->dimension = *change_dimension;


      lpdiagram.dimension_point = point->dimension;
      diagram.dimension = dimension;

      undo_list_add_first(DIMENSION_EDIT, lpdiagram, diagram);
      return point;
}





/* ---------------------------------------------------------
 * リストの総数を調べる
 */
long dimension_list_num(DIMENSION_LIST_INFO *p_dimension_list_info)
{
      DIMENSION_LIST *p;
      long i;

      p = p_dimension_list_info->head;
      i = 0;
      /* -------------------------------------------
       * 最後まで見つからない場合、 p に NULL が 
       * 入ってループを抜ける。
       */
      while(p != NULL) {
            i++;
            p = p->next;      /* ポインタを次のデータに移す */
      }
      return i;
}



/* ---------------------------------------------------------
 * n 番目のデータの検索
 *    
 */
DIMENSION_LIST *dimension_search_num(long search_number, DIMENSION_LIST_INFO *p_dimension_list_info)
{
      DIMENSION_LIST *p;
      long i;

      p = p_dimension_list_info->head;
      i = 1;
      /*    */
      while( p != NULL && i != search_number) {
            i++;
            p = p->next;
      }

      /* n 番目のデータのアドレスを返す */
      if (p != NULL) {
            return p;
      }
      /* そこまでデータがない */
      else {
            return NULL;
      }
}



/* ---------------------------------------------------------
 * DIMENSION のデータの検索
 *    
 * 戻値  DIMENSION_LIST
 */
DIMENSION_LIST *dimension_search_dimension(DIMENSION *p_dimension, DIMENSION_LIST_INFO *p_dimension_list_info)
{
      DIMENSION_LIST *p;

      p = p_dimension_list_info->head;
      /*    */
      while( p != NULL && p->dimension != p_dimension) {
            p = p->next;
      }

      /* p_dimension のデータのアドレスを返す */
      if (p != NULL) {
            return p;
      }
      /* そこまでデータがない */
      else {
            return NULL;
      }
}



/* ---------------------------------------------------------
 * DIMENSION のデータの検索
 *    
 * 戻値  long
 */
long dimension_search_dimension_to_num(DIMENSION *p_dimension, DIMENSION_LIST_INFO *p_dimension_list_info)
{
      DIMENSION_LIST *p;
      long i;

      i = 1;
      p = p_dimension_list_info->head;
      /*    */
      while( p != NULL && p->dimension != p_dimension) {
            p = p->next;
            i++;
      }

      /* p_dimension のデータのアドレスを返す */
      if (p != NULL) {
            return i;
      }
      /* そこまでデータがない */
      else {
            return 0;
      }
}





/* ---------------------------------------------------------
 * DIMENSION Data をリストから削除
 */
int dimension_list_free(DIMENSION_LIST *del_List, DIMENSION_LIST_INFO *p_dimension_list_info)
{
      DIMENSION_LIST *p = NULL;
      DIMENSION_LIST *pb = NULL;
//    int i;
//    char str[256];


      /* データが先頭で1個だけ  */
      if (del_List == p_dimension_list_info->head && del_List->next == NULL) {
            p_dimension_list_info->head = NULL;
            p_dimension_list_info->tail = NULL;
            //g_print("データが先頭で1個だけ\n");
      }
      /* データが先頭で2個以上  */
      else if (del_List == p_dimension_list_info->head && del_List->next != NULL) {
            p_dimension_list_info->head = p_dimension_list_info->head->next;
            //g_print("データが先頭で2個以上\n");
      }
      else {
            /* -------------------------------------------
             * 削除するポインタの前のデータを知りたいので、
             * head (リストの先頭) から削除するポインタが
             * 見つかるまで繰り返し、前のデータを探す。
             */
            p = p_dimension_list_info->head;
            /* -------------------------------------------
             * 最後まで見つからない場合、 p に NULL が 
             * 入ってループを抜ける。
             */
            while(p != NULL && p != del_List) {
                  pb = p;                 /* 前のデータのポインタとして保存しておく */
                  p = p->next;      /* ポインタを次のデータに移す */
            }


            if(p != NULL){
                  /* 最後のデータ */
                  if (del_List == p_dimension_list_info->tail) {
                        //g_print("最後のデータ\n");
                        pb->next = NULL;
                        p_dimension_list_info->tail = pb;
                  }
                  /* 中間のデータ */
                  else if (del_List != p_dimension_list_info->head && del_List != p_dimension_list_info->tail) {
                        //g_print("中間のデータ\n");
                        pb->next = p->next;
                  }
            }
            else {
                  //g_print("リストの DIMENSION データではない\n");
                  return 0;
            }
      }
      //select_test();



      if (del_List->dimension->diagram_of_char_index > 0 && del_List->dimension->diagram_of_char != NULL) {
            xfree(del_List->dimension->diagram_of_char);
      }
#ifdef TEST
      else if (del_List->dimension->diagram_of_char_index == 0) {
            g_print("Not Free diagram_of_char (diagram_of_char_index = 0) [0x%x]\n", (int)&del_List->dimension->diagram_of_char);
      }
      else if (del_List->dimension->diagram_of_char == NULL) {
            g_print("Not Free diagram_of_char (diagram_of_char == NULL) [0x%x]\n", (int)&del_List->dimension->diagram_of_char);
      }
      else {
            g_print("Not Free diagram_of_char (I Don't know)\n");
      }
#endif


      if (del_List->dimension->index > 0) {
            xfree(del_List->dimension->AssistLine);
      }

      xfree(del_List->dimension);
      xfree(del_List);
      return 1;
}



/* ---------------------------------------------------------
 * 全リストを削除
 */
void dimension_list_all_free(DIMENSION_LIST_INFO *p_dimension_list_info)
{
      while(p_dimension_list_info->head != NULL) {
            dimension_list_free(p_dimension_list_info->head, p_dimension_list_info);
      }
}


void dimension_list_print(DIMENSION_LIST_INFO *p_dimension_list_info)
{
      DIMENSION_LIST *p;
      int i = 0, j;

      g_print("----- DIMENSION リストを表示 -----\n");
      p = p_dimension_list_info->head;
      while (p != NULL) {
            i++;
            g_print("%d : Layer[%d]  DrawType[%d]  Type[%d]  FontType[%d]  FontHeight[%f]  FontSpace[%f]  Angle[%f]\n", 
                         i,  p->dimension->Layer, p->dimension->DrawType, p->dimension->Type,
                         p->dimension->FontType, p->dimension->FontHeight, p->dimension->FontSpace, 
                         p->dimension->Angle);
            g_print("Text:%s  UpperText:%s  LowerText:%s\n", 
                         p->dimension->Text, p->dimension->UpperText, p->dimension->LowerText);
            g_print("SearchPointX:[%f]  SearchPointY:[%f]  StartPoint:[%d]  index:[%d]\n", 
                         p->dimension->SearchPointX, p->dimension->SearchPointY, p->dimension->StartPoint, p->dimension->index);
            for (j = 0 ; j < p->dimension->index ; j++) {
                  g_print("%d  defin:[%d]  sx:[%f]  sy:[%f]  ex:[%f]  ey:[%f]  cx:[%f]  cy:[%f]  r:[%f]\n", 
                               j+1, p->dimension->AssistLine[j].defin, 
                               p->dimension->AssistLine[j].sx, p->dimension->AssistLine[j].sy, 
                               p->dimension->AssistLine[j].ex, p->dimension->AssistLine[j].ey, 
                               p->dimension->AssistLine[j].cx, p->dimension->AssistLine[j].cy, 
                               p->dimension->AssistLine[j].r);
            }
            p = p->next;
      }
      g_print("-----------------------------\n");
}





/* ====================================================================
 * ===  Copyright (C) 1998-2007 Yutaka Sagiya. All rights reserved. ===
 * ====================================================================
 *    Project              : SagCAD
 *    Source               : List_dimension.c
 * ====================================================================
 */

Generated by  Doxygen 1.6.0   Back to index