1 /* atlc - arbitrary transmission line calculator, for the analysis of
2 transmission lines are directional couplers.
4 Copyright (C) 2002. Dr. David Kirkby, PhD (G8WRB).
6 This program is free software; you can redistribute it and/or
7 modify it under the terms of the GNU General Public License
8 as published by the Free Software Foundation; either package_version 2
9 of the License, or (at your option) any later package_version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
21 Dr. David Kirkby, e-mail drkirkby at gmail.com
38 #include "definitions.h"
40 void fill_image_vector_with_data(unsigned char *image_vector, int colour_Er1, int colour_Er2, struct transmission_line_properties pcb)
42 int i, j, red=0, green=0, blue=0, vector_original=0;
43 int right_edge_of_LH_GP;
49 red=colour_Er1/(256*256); /* Fill whole region with Er1 (normally vacuum/air)*/
53 /* Put a small border in green. Only one pixel is needed, but
54 I'll put a few more. */
55 if( (i<BORDER) || (i>pcb.W-BORDER-1) || (j<BORDER) || (j>pcb.H-BORDER-1))
62 /* Put the dielectric for the PCB in */
63 if((i >= BORDER) && (i <pcb.W-BORDER ) && (j >= BORDER) && (j < pcb.h+BORDER))
65 red=colour_Er2/(256*256); /* Fill in areas with Er2 (normally PCB substrate)*/
70 /* Put the metal top LH surface of the PCB groundplane */
71 right_edge_of_LH_GP=(pcb.W/2-pcb.s/2-pcb.w-pcb.g)-BORDER;
72 if((i >= BORDER) && (i <=right_edge_of_LH_GP ) && (j >= pcb.h+BORDER) && (j < pcb.h+pcb.t+BORDER))
74 red=0; /* Fill in left hand groundplane on top of pcb */
78 /* Left hand coupler, could be +1 V or -1 V it does not matter, as long as right one is opposite */
79 if( (i > right_edge_of_LH_GP + pcb.g ) && (i <= right_edge_of_LH_GP + pcb.g+pcb.w) && (j >= pcb.h+BORDER) && (j < pcb.h+pcb.t+BORDER))
81 red=0xff; /* Left hand coupler made to be +1 V */
85 /* Right and coupler, set to -1 V */
86 if( (i > right_edge_of_LH_GP + pcb.g +pcb.w+pcb.s) && (i <= right_edge_of_LH_GP + pcb.g+pcb.w+pcb.s+pcb.w) && (j >= pcb.h+BORDER) && (j < pcb.h+pcb.t+BORDER))
88 red=0; /* Right hand coupler made to be -1 V */
92 if( (i > right_edge_of_LH_GP + pcb.g+pcb.w+pcb.s+pcb.w+pcb.g) && (i <= pcb.W-BORDER) && (j >= pcb.h+BORDER) && (j < pcb.h+pcb.t+BORDER))
94 red=0; /* Right hand ground plane in place */
98 image_vector[vector_original]=blue;
99 image_vector[vector_original+1]=green;
100 image_vector[vector_original+2]=red;