summaryrefslogtreecommitdiff
path: root/ldmicro/schematic.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ldmicro/schematic.cpp')
-rw-r--r--ldmicro/schematic.cpp456
1 files changed, 228 insertions, 228 deletions
diff --git a/ldmicro/schematic.cpp b/ldmicro/schematic.cpp
index b63e69d..5a91934 100644
--- a/ldmicro/schematic.cpp
+++ b/ldmicro/schematic.cpp
@@ -250,32 +250,32 @@ void ForgetEverything(void)
//-----------------------------------------------------------------------------
BOOL MoveCursorTopLeft(void)
{
-// int i, j;
-// // Let us first try to place it somewhere on-screen, so start at the
-// // vertical scroll offset, not the very top (to avoid placing the
-// // cursor in a position that would force us to scroll to put it in to
-// // view.)
-// for(i = 0; i < DISPLAY_MATRIX_X_SIZE; i++) {
-// for(j = ScrollYOffset;
-// j < DISPLAY_MATRIX_Y_SIZE && j < (ScrollYOffset+16); j++)
-// {
-// if(VALID_LEAF(DisplayMatrix[i][j])) {
-// SelectElement(i, j, SELECTED_LEFT);
-// return TRUE;
-// }
-// }
-// }
+ int i, j;
+ // Let us first try to place it somewhere on-screen, so start at the
+ // vertical scroll offset, not the very top (to avoid placing the
+ // cursor in a position that would force us to scroll to put it in to
+ // view.)
+ for(i = 0; i < DISPLAY_MATRIX_X_SIZE; i++) {
+ for(j = ScrollYOffset;
+ j < DISPLAY_MATRIX_Y_SIZE && j < (ScrollYOffset+16); j++)
+ {
+ if(VALID_LEAF(DisplayMatrix[i][j])) {
+ SelectElement(i, j, SELECTED_LEFT);
+ return TRUE;
+ }
+ }
+ }
-// // If that didn't work, then try anywhere on the diagram before giving
-// // up entirely.
-// for(i = 0; i < DISPLAY_MATRIX_X_SIZE; i++) {
-// for(j = 0; j < 16; j++) {
-// if(VALID_LEAF(DisplayMatrix[i][j])) {
-// SelectElement(i, j, SELECTED_LEFT);
-// return TRUE;
-// }
-// }
-// }
+ // If that didn't work, then try anywhere on the diagram before giving
+ // up entirely.
+ for(i = 0; i < DISPLAY_MATRIX_X_SIZE; i++) {
+ for(j = 0; j < 16; j++) {
+ if(VALID_LEAF(DisplayMatrix[i][j])) {
+ SelectElement(i, j, SELECTED_LEFT);
+ return TRUE;
+ }
+ }
+ }
return FALSE;
}
@@ -287,108 +287,108 @@ BOOL MoveCursorTopLeft(void)
//-----------------------------------------------------------------------------
void MoveCursorKeyboard(int keyCode)
{
-// if(!Selected || Selected->selectedState == SELECTED_NONE) {
-// MoveCursorTopLeft();
-// return;
-// }
-
-// switch(keyCode) {
-// case VK_LEFT: {
-// if(!Selected || Selected->selectedState == SELECTED_NONE) {
-// break;
-// }
-// if(Selected->selectedState != SELECTED_LEFT) {
-// SelectElement(-1, -1, SELECTED_LEFT);
-// break;
-// }
-// if(SelectedWhich == ELEM_COMMENT) break;
-// int i, j;
-// if(FindSelected(&i, &j)) {
-// i--;
-// while(i >= 0 && (!VALID_LEAF(DisplayMatrix[i][j]) ||
-// (DisplayMatrix[i][j] == Selected)))
-// {
-// i--;
-// }
-// if(i >= 0) {
-// SelectElement(i, j, SELECTED_RIGHT);
-// }
-// }
-// break;
-// }
-// case VK_RIGHT: {
-// if(!Selected || Selected->selectedState == SELECTED_NONE) {
-// break;
-// }
-// if(Selected->selectedState != SELECTED_RIGHT) {
-// SelectElement(-1, -1, SELECTED_RIGHT);
-// break;
-// }
-// if(SelectedWhich == ELEM_COMMENT) break;
-// int i, j;
-// if(FindSelected(&i, &j)) {
-// i++;
-// while(i < DISPLAY_MATRIX_X_SIZE &&
-// !VALID_LEAF(DisplayMatrix[i][j]))
-// {
-// i++;
-// }
-// if(i != DISPLAY_MATRIX_X_SIZE) {
-// SelectElement(i, j, SELECTED_LEFT);
-// }
-// }
-// break;
-// }
-// case VK_UP: {
-// if(!Selected || Selected->selectedState == SELECTED_NONE) {
-// break;
-// }
-// if(Selected->selectedState != SELECTED_ABOVE &&
-// SelectedWhich != ELEM_PLACEHOLDER)
-// {
-// SelectElement(-1, -1, SELECTED_ABOVE);
-// break;
-// }
-// int i, j;
-// if(FindSelected(&i, &j)) {
-// j--;
-// while(j >= 0 && !VALID_LEAF(DisplayMatrix[i][j]))
-// j--;
-// if(j >= 0) {
-// SelectElement(i, j, SELECTED_BELOW);
-// }
-// }
-// break;
-// }
-// case VK_DOWN: {
-// if(!Selected || Selected->selectedState == SELECTED_NONE) {
-// break;
-// }
-// if(Selected->selectedState != SELECTED_BELOW &&
-// SelectedWhich != ELEM_PLACEHOLDER)
-// {
-// SelectElement(-1, -1, SELECTED_BELOW);
-// break;
-// }
-// int i, j;
-// if(FindSelected(&i, &j)) {
-// j++;
-// while(j < DISPLAY_MATRIX_Y_SIZE &&
-// !VALID_LEAF(DisplayMatrix[i][j]))
-// {
-// j++;
-// }
-// if(j != DISPLAY_MATRIX_Y_SIZE) {
-// SelectElement(i, j, SELECTED_ABOVE);
-// } else if(ScrollYOffsetMax - ScrollYOffset < 3) {
-// // special case: scroll the end marker into view
-// ScrollYOffset = ScrollYOffsetMax;
-// RefreshScrollbars();
-// }
-// }
-// break;
-// }
-// }
+ // if(!Selected || Selected->selectedState == SELECTED_NONE) {
+ // MoveCursorTopLeft();
+ // return;
+ // }
+
+ // switch(keyCode) {
+ // case VK_LEFT: {
+ // if(!Selected || Selected->selectedState == SELECTED_NONE) {
+ // break;
+ // }
+ // if(Selected->selectedState != SELECTED_LEFT) {
+ // SelectElement(-1, -1, SELECTED_LEFT);
+ // break;
+ // }
+ // if(SelectedWhich == ELEM_COMMENT) break;
+ // int i, j;
+ // if(FindSelected(&i, &j)) {
+ // i--;
+ // while(i >= 0 && (!VALID_LEAF(DisplayMatrix[i][j]) ||
+ // (DisplayMatrix[i][j] == Selected)))
+ // {
+ // i--;
+ // }
+ // if(i >= 0) {
+ // SelectElement(i, j, SELECTED_RIGHT);
+ // }
+ // }
+ // break;
+ // }
+ // case VK_RIGHT: {
+ // if(!Selected || Selected->selectedState == SELECTED_NONE) {
+ // break;
+ // }
+ // if(Selected->selectedState != SELECTED_RIGHT) {
+ // SelectElement(-1, -1, SELECTED_RIGHT);
+ // break;
+ // }
+ // if(SelectedWhich == ELEM_COMMENT) break;
+ // int i, j;
+ // if(FindSelected(&i, &j)) {
+ // i++;
+ // while(i < DISPLAY_MATRIX_X_SIZE &&
+ // !VALID_LEAF(DisplayMatrix[i][j]))
+ // {
+ // i++;
+ // }
+ // if(i != DISPLAY_MATRIX_X_SIZE) {
+ // SelectElement(i, j, SELECTED_LEFT);
+ // }
+ // }
+ // break;
+ // }
+ // case VK_UP: {
+ // if(!Selected || Selected->selectedState == SELECTED_NONE) {
+ // break;
+ // }
+ // if(Selected->selectedState != SELECTED_ABOVE &&
+ // SelectedWhich != ELEM_PLACEHOLDER)
+ // {
+ // SelectElement(-1, -1, SELECTED_ABOVE);
+ // break;
+ // }
+ // int i, j;
+ // if(FindSelected(&i, &j)) {
+ // j--;
+ // while(j >= 0 && !VALID_LEAF(DisplayMatrix[i][j]))
+ // j--;
+ // if(j >= 0) {
+ // SelectElement(i, j, SELECTED_BELOW);
+ // }
+ // }
+ // break;
+ // }
+ // case VK_DOWN: {
+ // if(!Selected || Selected->selectedState == SELECTED_NONE) {
+ // break;
+ // }
+ // if(Selected->selectedState != SELECTED_BELOW &&
+ // SelectedWhich != ELEM_PLACEHOLDER)
+ // {
+ // SelectElement(-1, -1, SELECTED_BELOW);
+ // break;
+ // }
+ // int i, j;
+ // if(FindSelected(&i, &j)) {
+ // j++;
+ // while(j < DISPLAY_MATRIX_Y_SIZE &&
+ // !VALID_LEAF(DisplayMatrix[i][j]))
+ // {
+ // j++;
+ // }
+ // if(j != DISPLAY_MATRIX_Y_SIZE) {
+ // SelectElement(i, j, SELECTED_ABOVE);
+ // } else if(ScrollYOffsetMax - ScrollYOffset < 3) {
+ // // special case: scroll the end marker into view
+ // ScrollYOffset = ScrollYOffsetMax;
+ // RefreshScrollbars();
+ // }
+ // }
+ // break;
+ // }
+ // }
}
//-----------------------------------------------------------------------------
@@ -536,71 +536,71 @@ void EditElementMouseDoubleclick(int x, int y)
//-----------------------------------------------------------------------------
void MoveCursorMouseClick(int x, int y)
{
-// x += ScrollXOffset;
+ x += ScrollXOffset;
-// y += FONT_HEIGHT/2;
+ y += FONT_HEIGHT/2;
-// int gx0 = (x - X_PADDING)/(POS_WIDTH*FONT_WIDTH);
-// int gy0 = (y - Y_PADDING)/(POS_HEIGHT*FONT_HEIGHT);
+ int gx0 = (x - X_PADDING)/(POS_WIDTH*FONT_WIDTH);
+ int gy0 = (y - Y_PADDING)/(POS_HEIGHT*FONT_HEIGHT);
-// int gx = gx0;
-// int gy = gy0 + ScrollYOffset;
+ int gx = gx0;
+ int gy = gy0 + ScrollYOffset;
-// if(VALID_LEAF(DisplayMatrix[gx][gy])) {
-// int i, j;
-// for(i = 0; i < DISPLAY_MATRIX_X_SIZE; i++) {
-// for(j = 0; j < DISPLAY_MATRIX_Y_SIZE; j++) {
-// if(DisplayMatrix[i][j])
-// DisplayMatrix[i][j]->selectedState = SELECTED_NONE;
-// }
-// }
-// int dx = x - (gx0*POS_WIDTH*FONT_WIDTH + X_PADDING);
-// int dy = y - (gy0*POS_HEIGHT*FONT_HEIGHT + Y_PADDING);
-
-// int dtop = dy;
-// int dbottom = POS_HEIGHT*FONT_HEIGHT - dy;
-// int dleft = dx;
-// int dright = POS_WIDTH*FONT_WIDTH - dx;
-
-// int extra = 1;
-// if(DisplayMatrixWhich[gx][gy] == ELEM_COMMENT) {
-// dleft += gx*POS_WIDTH*FONT_WIDTH;
-// dright += (ColsAvailable - gx - 1)*POS_WIDTH*FONT_WIDTH;
-// extra = ColsAvailable;
-// } else {
-// if((gx > 0) && (DisplayMatrix[gx-1][gy] == DisplayMatrix[gx][gy])) {
-// dleft += POS_WIDTH*FONT_WIDTH;
-// extra = 2;
-// }
-// if((gx < (DISPLAY_MATRIX_X_SIZE-1)) &&
-// (DisplayMatrix[gx+1][gy] == DisplayMatrix[gx][gy]))
-// {
-// dright += POS_WIDTH*FONT_WIDTH;
-// extra = 2;
-// }
-// }
+ if(VALID_LEAF(DisplayMatrix[gx][gy])) {
+ int i, j;
+ for(i = 0; i < DISPLAY_MATRIX_X_SIZE; i++) {
+ for(j = 0; j < DISPLAY_MATRIX_Y_SIZE; j++) {
+ if(DisplayMatrix[i][j])
+ DisplayMatrix[i][j]->selectedState = SELECTED_NONE;
+ }
+ }
+ int dx = x - (gx0*POS_WIDTH*FONT_WIDTH + X_PADDING);
+ int dy = y - (gy0*POS_HEIGHT*FONT_HEIGHT + Y_PADDING);
+
+ int dtop = dy;
+ int dbottom = POS_HEIGHT*FONT_HEIGHT - dy;
+ int dleft = dx;
+ int dright = POS_WIDTH*FONT_WIDTH - dx;
+
+ int extra = 1;
+ if(DisplayMatrixWhich[gx][gy] == ELEM_COMMENT) {
+ dleft += gx*POS_WIDTH*FONT_WIDTH;
+ dright += (ColsAvailable - gx - 1)*POS_WIDTH*FONT_WIDTH;
+ extra = ColsAvailable;
+ } else {
+ if((gx > 0) && (DisplayMatrix[gx-1][gy] == DisplayMatrix[gx][gy])) {
+ dleft += POS_WIDTH*FONT_WIDTH;
+ extra = 2;
+ }
+ if((gx < (DISPLAY_MATRIX_X_SIZE-1)) &&
+ (DisplayMatrix[gx+1][gy] == DisplayMatrix[gx][gy]))
+ {
+ dright += POS_WIDTH*FONT_WIDTH;
+ extra = 2;
+ }
+ }
-// int decideX = (dright - dleft);
-// int decideY = (dtop - dbottom);
-
-// decideY = decideY*3*extra;
-
-// int state;
-// if(abs(decideY) > abs(decideX)) {
-// if(decideY > 0) {
-// state = SELECTED_BELOW;
-// } else {
-// state = SELECTED_ABOVE;
-// }
-// } else {
-// if(decideX > 0) {
-// state = SELECTED_LEFT;
-// } else {
-// state = SELECTED_RIGHT;
-// }
-// }
-// SelectElement(gx, gy, state);
-// }
+ int decideX = (dright - dleft);
+ int decideY = (dtop - dbottom);
+
+ decideY = decideY*3*extra;
+
+ int state;
+ if(abs(decideY) > abs(decideX)) {
+ if(decideY > 0) {
+ state = SELECTED_BELOW;
+ } else {
+ state = SELECTED_ABOVE;
+ }
+ } else {
+ if(decideX > 0) {
+ state = SELECTED_LEFT;
+ } else {
+ state = SELECTED_RIGHT;
+ }
+ }
+ SelectElement(gx, gy, state);
+ }
}
//-----------------------------------------------------------------------------
@@ -609,49 +609,49 @@ void MoveCursorMouseClick(int x, int y)
//-----------------------------------------------------------------------------
void MoveCursorNear(int gx, int gy)
{
-// int out = 0;
-
-// for(out = 0; out < 8; out++) {
-// if(gx - out >= 0) {
-// if(VALID_LEAF(DisplayMatrix[gx-out][gy])) {
-// SelectElement(gx-out, gy, SELECTED_RIGHT);
-// return;
-// }
-// }
-// if(gx + out < DISPLAY_MATRIX_X_SIZE) {
-// if(VALID_LEAF(DisplayMatrix[gx+out][gy])) {
-// SelectElement(gx+out, gy, SELECTED_LEFT);
-// return;
-// }
-// }
-// if(gy - out >= 0) {
-// if(VALID_LEAF(DisplayMatrix[gx][gy-out])) {
-// SelectElement(gx, gy-out, SELECTED_BELOW);
-// return;
-// }
-// }
-// if(gy + out < DISPLAY_MATRIX_Y_SIZE) {
-// if(VALID_LEAF(DisplayMatrix[gx][gy+out])) {
-// SelectElement(gx, gy+out, SELECTED_ABOVE);
-// return;
-// }
-// }
+ int out = 0;
-// if(out == 1) {
-// // Now see if we have a straight shot to the right; might be far
-// // if we have to go up to a coil or other end of line element.
-// int across;
-// for(across = 1; gx+across < DISPLAY_MATRIX_X_SIZE; across++) {
-// if(VALID_LEAF(DisplayMatrix[gx+across][gy])) {
-// SelectElement(gx+across, gy, SELECTED_LEFT);
-// return;
-// }
-// if(!DisplayMatrix[gx+across][gy]) break;
-// }
-// }
-// }
+ for(out = 0; out < 8; out++) {
+ if(gx - out >= 0) {
+ if(VALID_LEAF(DisplayMatrix[gx-out][gy])) {
+ SelectElement(gx-out, gy, SELECTED_RIGHT);
+ return;
+ }
+ }
+ if(gx + out < DISPLAY_MATRIX_X_SIZE) {
+ if(VALID_LEAF(DisplayMatrix[gx+out][gy])) {
+ SelectElement(gx+out, gy, SELECTED_LEFT);
+ return;
+ }
+ }
+ if(gy - out >= 0) {
+ if(VALID_LEAF(DisplayMatrix[gx][gy-out])) {
+ SelectElement(gx, gy-out, SELECTED_BELOW);
+ return;
+ }
+ }
+ if(gy + out < DISPLAY_MATRIX_Y_SIZE) {
+ if(VALID_LEAF(DisplayMatrix[gx][gy+out])) {
+ SelectElement(gx, gy+out, SELECTED_ABOVE);
+ return;
+ }
+ }
+
+ if(out == 1) {
+ // Now see if we have a straight shot to the right; might be far
+ // if we have to go up to a coil or other end of line element.
+ int across;
+ for(across = 1; gx+across < DISPLAY_MATRIX_X_SIZE; across++) {
+ if(VALID_LEAF(DisplayMatrix[gx+across][gy])) {
+ SelectElement(gx+across, gy, SELECTED_LEFT);
+ return;
+ }
+ if(!DisplayMatrix[gx+across][gy]) break;
+ }
+ }
+ }
-// MoveCursorTopLeft();
+ MoveCursorTopLeft();
}
//-----------------------------------------------------------------------------