From c2e96227e5a42fe60bb1df26a5f9dc1d3f3aef1e Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Wed, 15 Apr 2015 14:26:47 +0000
Subject: pst-circ (14apr15)

git-svn-id: svn://tug.org/texlive/trunk@36865 c570f23f-e606-0410-a88d-b1316a301751
---
 .../texmf-dist/tex/generic/pst-circ/pst-circ.tex   | 361 ++++++++++++++++++---
 1 file changed, 310 insertions(+), 51 deletions(-)

(limited to 'Master/texmf-dist/tex/generic/pst-circ/pst-circ.tex')

diff --git a/Master/texmf-dist/tex/generic/pst-circ/pst-circ.tex b/Master/texmf-dist/tex/generic/pst-circ/pst-circ.tex
index 8e806774869..faa50eeea99 100644
--- a/Master/texmf-dist/tex/generic/pst-circ/pst-circ.tex
+++ b/Master/texmf-dist/tex/generic/pst-circ/pst-circ.tex
@@ -26,8 +26,8 @@
 \ifx\PSTXKeyLoaded\endinput   \else\input pst-xkey \fi
 \ifx\PSTMultidoLoaded\endinput\else\input multido.tex\fi
 %
-\def\fileversion{2.12a}
-\def\filedate{2014/10/09}
+\def\fileversion{2.13}
+\def\filedate{2015/04/15}
 \message{`pst-circ' v\fileversion (hv)}
 %
 \edef\PstAtCode{\the\catcode`\@}
@@ -57,6 +57,9 @@
 \def\pst@Ttype@PNP{PNP}
 \def\pst@Ttype@NPN{NPN}
 \def\pst@Ttype@FET{FET}
+\def\pst@Ttype@NMOS{NMOS}
+\def\pst@Ttype@PMOS{PMOS}
+%
 \def\pst@FETchanneltype@P{P}% Ted
 \def\pst@FETchanneltype@N{N}% Ted
 \def\pst@Dstyle@twoCircles{twoCircles}
@@ -126,6 +129,17 @@
 \define@key[psset]{pst-circ}{OAipluslabel}[]{\def\psk@label@OAiplus{#1}}
 \define@key[psset]{pst-circ}{OAiminuslabel}[]{\def\psk@label@OAiminus{#1}}
 \define@key[psset]{pst-circ}{OAioutlabel}[]{\def\psk@label@OAiout{#1}}
+\define@boolkey[psset]{pst-circ}[Pst@]{GMperfect}[true]{}
+\define@boolkey[psset]{pst-circ}[Pst@]{GMpower}[true]{}
+\define@boolkey[psset]{pst-circ}[Pst@]{GMinvert}[true]{}
+\define@boolkey[psset]{pst-circ}[Pst@]{GMiplus}[true]{}
+\define@boolkey[psset]{pst-circ}[Pst@]{GMiminus}[true]{}
+\define@boolkey[psset]{pst-circ}[Pst@]{GMiout}[true]{}	
+\define@key[psset]{pst-circ}{GMipluslabel}[]{\def\psk@label@GMiplus{#1}}
+\define@key[psset]{pst-circ}{GMiminuslabel}[]{\def\psk@label@GMiminus{#1}}
+\define@key[psset]{pst-circ}{GMioutlabel}[]{\def\psk@label@GMiout{#1}}
+
+\define@boolkey[psset]{pst-circ}[Pst@]{IGBTinvert}[true]{}	
 \define@boolkey[psset]{pst-circ}[Pst@]{transistorcircle}[true]{}
 \define@boolkey[psset]{pst-circ}[Pst@]{transistorinvert}[true]{}
 \define@boolkey[psset]{pst-circ}[Pst@]{transistoribase}[true]{}
@@ -836,7 +850,10 @@
   parallel=false,parallelarm=1.5,parallelsep=0,parallelnode=false,
   intersect=false,OAperfect=true,OAinvert=true,
   OAiplus=false,OAiminus=false,OAiout=false,OAipluslabel={},
-  OAiminuslabel={},OAioutlabel={},OApower=false,%
+  OAiminuslabel={},OAioutlabel={},OApower=false,
+  GMperfect=false,GMinvert=true,	% pv 2014-12-14
+  GMiplus=false,GMiminus=false,GMiout=false,GMipluslabel={}, %
+  GMiminuslabel={},GMioutlabel={},GMpower=false,%			% END of ADD
   transistorcircle=true, transistorinvert=false, % hv 2003-07-23
   transistoribase=false,transistoricollector=false,transistoriemitter=false,%
   transistoribaselabel={},basesep=0pt,
@@ -913,7 +930,7 @@
   pinte=false,invertpinte=false,pinba=false,invertpinba=false,pinbb=false,invertpinbb=false,
   pinbc=false,invertpinbc=false,pinbd=false,invertpinbd=false,pinbe=false,invertpinbe=false,
   dpleft=false,dpright=true,latch=false,unlatch=false,contactclosed=false,polarized=false,
-  ison=true
+  ison=true, IGBTinvert=false	% pv 2014-12-14
 }% hv
 %\psset[pstricks]{radius=0.5}
 
@@ -1045,6 +1062,83 @@
   \end@ClosedObj
   \ignorespaces%
 }
+%
+
+%
+\def\GM{\pst@object{GM}}
+\def\GM@i(#1)(#2)(#3){%
+  \addbefore@par{dimen=middle}%
+  \begin@ClosedObj%
+  \if\psk@label@GMiplus\@empty\else\psset{GMiplus=true}\fi%
+  \if\psk@label@GMiminus\@empty\else\psset{GMiminus=true}\fi%
+  \if\psk@label@GMiout\@empty\else\psset{GMiout=true}\fi%
+  \ifPst@intensity\psset{GMiplus=true,GMiminus=true,GMiout=true}\fi%
+  \pst@getcoor{#1}\pst@tempa
+  \pst@getcoor{#2}\pst@tempb
+  \pst@getcoor{#3}\pst@tempc
+  \pnode(!%
+    \pst@tempa /Y1 exch \pst@number\psyunit div def
+    /X1 exch \pst@number\psxunit div def
+    \pst@tempb /Y2 exch \pst@number\psyunit div def
+    /X2 exch \pst@number\psxunit div def
+    \pst@tempc /Y3 exch \pst@number\psyunit div def
+    /X3 exch \pst@number\psxunit div def
+    /XC X1 X2 lt {X3 X2} {X3 X1} ifelse add 2 div def
+    /YC Y1 Y2 add 2 div def
+    XC YC){C@}
+  \rput(C@){\pst@draw@GM}
+  \ncangle[arrows=-,arm=.5,angleA=0,angleB=180]{#1}{\ifPst@GMinvert Minus@\else Plus@\fi}
+  \ncput[npos=2]{\pnode{\ifPst@GMinvert Minus@@\else Plus@@\fi}}
+  \ifPst@GMiplus
+    \ifPst@GMinvert\else
+      \ncput[npos=2.5]{%
+        \psline[linecolor=\psk@I@color,
+          linewidth=\psk@I@width,arrowinset=0]{->}(-.1,0)(.1,0)}
+      \naput[npos=2.5]{\csname\psk@I@labelcolor\endcsname\psk@label@GMiplus}
+    \fi
+  \fi
+  \ifPst@GMiminus
+    \ifPst@GMinvert
+      \ncput[npos=2.5]{%
+        \psline[linecolor=\psk@I@color,
+          linewidth=\psk@I@width,arrowinset=0]{->}(-.1,0)(.1,0)}
+      \naput[npos=2.5]{\csname\psk@I@labelcolor\endcsname\psk@label@GMiminus}
+    \fi
+  \fi
+  \ncangle[arrows=-,arm=.5,angleA=0,angleB=180]{#2}{\ifPst@GMinvert Plus@\else Minus@\fi}
+  \ncput[npos=2]{\pnode{\ifPst@GMinvert Plus@@\else Minus@@\fi}}
+  \ifPst@GMiplus
+    \ifPst@GMinvert
+      \ncput[npos=2.5]{%
+        \psline[linecolor=\psk@I@color,
+          linewidth=\psk@I@width,arrowinset=0]{->}(-.1,0)(.1,0)}
+      \nbput[npos=2.5]{\csname\psk@I@labelcolor\endcsname\psk@label@GMiplus}
+    \fi
+  \fi
+  \ifPst@GMiminus
+    \ifPst@GMinvert\else
+      \ncput[npos=2.5]{%
+        \psline[linecolor=\psk@I@color,
+          linewidth=\psk@I@width,arrowinset=0]{->}(-.1,0)(.1,0)}
+      \nbput[npos=2.5]{\csname\psk@I@labelcolor\endcsname\psk@label@GMiminus}
+    \fi
+  \fi
+  \ncangle[arrows=-,arm=.5,angleA=180,angleB=0]{#3}{S@}
+  \ncput[npos=2]{\pnode{S@@}}
+  \ifPst@GMiout
+    \ncput[npos=2.5]{%
+      \psline[linecolor=\psk@I@color,
+        linewidth=\psk@I@width,arrowinset=0]{->}(-.1,0)(.1,0)}
+    \naput[npos=2.5]{\csname\psk@I@labelcolor\endcsname\psk@label@GMiout}
+  \fi
+  \psline[linestyle=none](#1)(#2)% for the end arrows
+  \psline[linestyle=none](#1)(#3)% for the end arrows
+  \end@ClosedObj
+  \ignorespaces%
+}
+% % pv 2014-12-14
+
+
 %
 \def\pst@draw@battery{%
   \psline[arrows=-,linewidth=1.5\pslinewidth](-0.10,-0.5)(-0.10,0.5)
@@ -1068,67 +1162,185 @@
     {\transistor@iii(#1)}{\Pst@tempfalse\transistor@ii(#1)}%
 }
 %
-\def\transistor@ii(#1)#2#3{% with one node, the base and two names for E and C
+\def\transistor@ii(#1)#2#3{% with one node, the base
   \pst@killglue%
   \ifPst@temp\pnode(#1){TBaseNode}%
-  \else
-    \pst@getcoor{#1}\pst@tempA
+  \else%
+    \pst@getcoor{#1}\pst@tempA%
     \pnode(!
       \pst@tempA /YB exch \pst@number\psyunit div def
       /XB exch \pst@number\psxunit div def
       /basesep \Pst@basesep\space \pst@number\psxunit div def
       XB basesep \Pst@TRot\space cos mul add
       YB basesep \Pst@TRot\space sin mul add){TBaseNode}% base node
-  \fi
+  \fi%
+%  \psdot(#1)%
   \rput[c]{\Pst@TRot}(!
       \pst@tempA /YB exch \pst@number\psyunit div def
       /XB exch \pst@number\psxunit div def
       /basesep \Pst@basesep\space \pst@number\psxunit div def
       XB basesep \Pst@TRot\space cos mul add
-      YB basesep \Pst@TRot\space sin mul add){%
-    \ifPst@transistorcircle\pscircle(0.3,0){0.7}\fi
-    \ifx\psk@Ttype\pst@Ttype@FET
-      \ifPst@FETmemory% atosch
-        \psline[arrows=-,linewidth=\psk@I@width](-0.15,0.5)(-0.15,-0.5)%
-      \fi%
-      \psline[arrows=-,linewidth=\psk@I@width](TBaseNode|0,0.5)(TBaseNode|0,-0.5)%
+      YB basesep \Pst@TRot\space sin mul add){%(#1){%
+
+  %%%%%%%%%%
+    \ifnum180=\Pst@TRot\relax%
+    	\ifPst@transistorcircle\pscircle(0.3,0){0.7}\fi
+	
+    	\ifx\psk@Ttype\pst@Ttype@NPN\relax%
+	
+	      	\ifPst@transistorinvert\pnode(0.5,-0.5){#2}\else\pnode(0.5,-0.5){#3}\fi%
+        	\ifPst@transistorinvert\pnode(0.5,0.5){#3}\else\pnode(0.5,0.5){#2}\fi%
+	
+		    \psline[arrows=-](0.5,0.5)(TBaseNode)(0.5,-0.5)%
+		    
+		    \psline[arrows=-,linewidth=4\pslinewidth](TBaseNode|0,0.4)(TBaseNode|0,-0.4)%
+    	\else% 
+      		\ifx\psk@Ttype\pst@Ttype@PNP\relax%
+		        \ifPst@transistorinvert\pnode(0.5,-0.5){#2}\else\pnode(0.5,-0.5){#3}\fi%
+            	\ifPst@transistorinvert\pnode(0.5,0.5){#3}\else\pnode(0.5,0.5){#2}\fi%
+	
+			    \psline[arrows=-](0.5,0.5)(TBaseNode)(0.5,-0.5)%
+
+          	\else%  FET 
+				\ifx\psk@Ttype\pst@Ttype@FET\relax%
+				
+					\ifPst@transistorinvert\pnode(0.75,-0.5){#2}\else\pnode(0.75,-0.5){#3}\fi%
+        			\ifPst@transistorinvert\pnode(0.75,0.5){#3}\else\pnode(0.75,0.5){#2}\fi%
+				    % Main drawings
+				    \psline[arrows=-](0.75,0.5)(0.2,0.5)
+                    \psline[linestyle=dashed,dash=8pt 3pt,arrows=-](0.2,0.6)(0.2,-0.6)
+                    \psline[arrows=-](0.2,-0.5)(0.75,-0.5)%
+                    
+                    \ifPst@FETmemory% atosch
+                    	\psline[arrows=-,linewidth=\psk@I@width](-0.15,0.5)(-0.15,-0.5)%
+                  	\fi%
+                  	\psline[arrows=-,linewidth=\psk@I@width](TBaseNode|0,0.5)(TBaseNode|0,-0.5)%
+                    
+                    \ifx\psk@FETchanneltype\pst@FETchanneltype@P\relax% Ted 2007-10-15
+                    
+                		\psline[arrowinset=0,arrowsize=8\pslinewidth]{->}(0.2,0)(0.75,0)%
+						\ifPst@transistorinvert
+        					\qdisk(#3){1.5pt}\psline[origin={#3}]{-}(0,-0.5)%
+						\else
+							\qdisk(#3){1.5pt}\psline[origin={#3}]{-}(0,0.5)%
+						\fi
+              		\else%
+              			\psline[arrowinset=0,arrowsize=8\pslinewidth]{<-}(0.2,0)(0.75,0)%
+						\ifPst@transistorinvert
+        					\qdisk(#2){1.5pt}\psline[origin={#2}]{-}(0,0.5)%
+						\else
+							\qdisk(#2){1.5pt}\psline[origin={#2}]{-}(0,-0.5)%
+						\fi
+             		\fi%
+
+      				
+				\else % NMOS or PMOS
+					\ifPst@transistorinvert\pnode(0.75,-0.4){#2}\else\pnode(0.75,-0.4){#3}\fi%
+        			\ifPst@transistorinvert\pnode(0.75,0.4){#3}\else\pnode(0.75,0.4){#2}\fi%
+					% Main drawings
+    				\psline[arrows=-](0.75,0.4)(0.15,0.4)
+                    \psline[linewidth=3\psk@I@width,arrows=-](0.15,0.6)(0.15,-0.6)
+                    \psline[arrows=-](0.75,-0.4)(0.15,-0.4)%
+                    
+      				
+					 \ifx\psk@Ttype\pst@Ttype@NMOS\relax%
+					 	\ifPst@transistorinvert
+        					\psline[arrowinset=0,arrowsize=8\pslinewidth]{->}(0.15,0.4)(0.75,0.4)%
+						\else
+							\psline[arrowinset=0,arrowsize=8\pslinewidth]{->}(0.15,-0.4)(0.75,-0.4)%
+						\fi
+						\psline[arrows=-,linewidth=1.5\psk@I@width](TBaseNode|0,0.4)(TBaseNode|0,-0.4)%
+
+					\else
+						\ifPst@transistorinvert
+        					\psline[arrowinset=0,arrowsize=8\pslinewidth]{<-}(0.15,0.4)(0.75,0.4)%
+						\else
+							\psline[arrowinset=0,arrowsize=8\pslinewidth]{<-}(0.15,-0.4)(0.75,-0.4)%
+						\fi
+						\psline[arrows=-,linewidth=1.5\psk@I@width](TBaseNode|0,0.4)(TBaseNode|0,-0.4)%
+					\fi
+				\fi
+        	\fi %
+      	\fi%
     \else%
-      \psline[arrows=-,linewidth=4\pslinewidth](TBaseNode|0,0.4)(TBaseNode|0,-0.4)%
-    \fi%
-%    \pst@abs{\Pst@TRot}\pst@cntn
-      \ifx\psk@Ttype\pst@Ttype@FET\relax%
-        \ifx\psk@FETchanneltype\pst@FETchanneltype@P
-          \pnode(0.65,0.5){#2}\pnode(0.65,-0.5){#3}%
-        \else
-          \pnode(0.65,0.5){#3}\pnode(0.65,-0.5){#2}%
-        \fi
-      \else%
-        \ifPst@transistorinvert\pnode(0.5,0.5){#2}\pnode(0.5,-0.5){#3}%
-        \else                  \pnode(0.5,0.5){#3}\pnode(0.5,-0.5){#2}%
-        \fi
-      \fi
-    \ifx\psk@Ttype\pst@Ttype@FET
-      \psline[arrows=-](0.65,0.5)(0.15,0.5)
-      \psline[linestyle=dashed,dash=8pt 3pt,arrows=-](0.15,0.6)(0.15,-0.6)
-      \psline[arrows=-](0.15,-0.5)(0.65,-0.5)%
-      \ifx\psk@FETchanneltype\pst@FETchanneltype@P          % Ted 2007-10-15
-        \psline[arrowinset=0,arrowsize=8\pslinewidth]{->}(0.15,0)(0.65,0)%
-	\qdisk(#2){1.5pt}\psline[origin={#2}]{-}(0,-0.5)%
-      \else
-        \psline[arrowinset=0,arrowsize=8\pslinewidth]{<-}(0.15,0)(0.65,0)%
-	\qdisk(#2){1.5pt}\psline[origin={#2}]{-}(0,0.5)%
-      \fi
-    \else
-      \psline[arrows=-](0.5,0.5)(TBaseNode)(0.5,-0.5)%
-      \ifx\psk@Ttype\pst@Ttype@PNP
-        \psline[arrowinset=0,arrowsize=8\pslinewidth]{->}(#3)(TBaseNode)%
-      \else%
-         \psline[arrowinset=0,arrowsize=8\pslinewidth]{->}(TBaseNode)(#2)%
-      \fi
-    \fi
+    	\ifPst@transistorcircle\pscircle(0.3,0){0.7}\fi
+		\ifx\psk@Ttype\pst@Ttype@FET\relax%
+			\ifPst@transistorinvert\pnode(0.65,0.5){#2}\else\pnode(0.65,0.5){#3}\fi%
+        	\ifPst@transistorinvert\pnode(0.65,-0.5){#3}\else\pnode(0.65,-0.5){#2}\fi%
+		
+			% FET Main drawings
+			
+		    \psline[arrows=-](0.65,0.5)(0.15,0.5) % upper line
+            \psline[linestyle=dashed,dash=8pt 3pt,arrows=-](0.15,0.6)(0.15,-0.6) % gate
+            \psline[arrows=-](0.15,-0.5)(0.65,-0.5)% lower line
+            
+            \ifPst@FETmemory% atosch
+            	\psline[arrows=-,linewidth=\psk@I@width](-0.15,0.5)(-0.15,-0.5)%
+          	\fi%
+          	\psline[arrows=-,linewidth=\psk@I@width](TBaseNode|0,0.5)(TBaseNode|0,-0.5)%
+            
+            
+            \ifx\psk@FETchanneltype\pst@FETchanneltype@P\relax% Ted 2007-10-15
+        		\psline[arrowinset=0,arrowsize=8\pslinewidth]{->}(0.15,0)(0.65,0)%
+				\qdisk(#3){1.5pt}\psline[origin={#3}]{-}(0,-0.5)%
+      		\else%
+      			\psline[arrowinset=0,arrowsize=8\pslinewidth]{<-}(0.15,0)(0.65,0)%
+				\qdisk(#2){1.5pt}\psline[origin={#2}]{-}(0,0.5)%
+     		\fi%
+            
+
+		\else
+			\ifx\psk@Ttype\pst@Ttype@NMOS\relax%
+				% NMOS Main drawings
+				\psline[arrows=-](0.65,0.4)(0.15,0.4) % upper line
+                \psline[linewidth=3\psk@I@width,arrows=-](0.15,0.6)(0.15,-0.6) % gate
+                \psline[arrows=-](0.65,-0.4)(0.15,-0.4)% lower line
+                
+                \psline[arrows=-,linewidth=1.5\psk@I@width](TBaseNode|0,0.4)(TBaseNode|0,-0.4)%
+                
+        		\ifPst@transistorinvert\pnode(0.65,0.4){#2}\else\pnode(0.65,0.4){#3}\fi%
+        		\ifPst@transistorinvert\pnode(0.65,-0.4){#3}\else\pnode(0.65,-0.4){#2}\fi%
+				\ifPst@transistorinvert
+        			\psline[arrowinset=0,arrowsize=8\pslinewidth]{->}(0.15,0.4)(0.65,0.4)%
+				\else
+					\psline[arrowinset=0,arrowsize=8\pslinewidth]{->}(0.15,-0.4)(0.65,-0.4)%
+				\fi
+			\else
+				\ifx\psk@Ttype\pst@Ttype@PMOS\relax%
+				% PMOS Main drawings
+    				\psline[arrows=-](0.65,0.4)(0.15,0.4) % upper line
+                    \psline[linewidth=3\psk@I@width,arrows=-](0.15,0.6)(0.15,-0.6) % gate
+                    \psline[arrows=-](0.65,-0.4)(0.15,-0.4)% lower line
+                
+                	\psline[arrows=-,linewidth=1.5\psk@I@width](TBaseNode|0,0.4)(TBaseNode|0,-0.4)%
+                    
+            		\ifPst@transistorinvert\pnode(0.65,0.4){#2}\else\pnode(0.65,0.4){#3}\fi%
+            		\ifPst@transistorinvert\pnode(0.65,-0.4){#3}\else\pnode(0.65,-0.4){#2}\fi%
+    				\ifPst@transistorinvert
+            			\psline[arrowinset=0,arrowsize=8\pslinewidth]{<-}(0.15,0.4)(0.65,0.4)%
+    				\else
+    					\psline[arrowinset=0,arrowsize=8\pslinewidth]{<-}(0.15,-0.4)(0.65,-0.4)%
+    				\fi
+				\else % PNP or NPN
+	   				\ifPst@transistorinvert\pnode(0.5,0.5){#2}\pnode(0.5,-0.5){#3}%
+                		\else                  \pnode(0.5,0.5){#3}\pnode(0.5,-0.5){#2}%
+        				\fi
+    				\ifx\psk@Ttype\pst@Ttype@NPN\relax% % NPN
+				        \psline[arrowinset=0,arrowsize=8\pslinewidth]{->}(TBaseNode)(#2)%
+						\psline[arrows=-,linewidth=4\pslinewidth](TBaseNode|0,0.4)(TBaseNode|0,-0.4)%
+				    	\psline[arrows=-](0.5,0.5)(TBaseNode)(0.5,-0.5)%
+    				\else%	% PNP
+						\psline[arrowinset=0,arrowsize=8\pslinewidth]{->}(#3)(TBaseNode)%
+						\psline[arrows=-,linewidth=4\pslinewidth](TBaseNode|0,0.4)(TBaseNode|0,-0.4)%
+				    	\psline[arrows=-](0.5,0.5)(TBaseNode)(0.5,-0.5)%
+					\fi
+      			\fi%
+      		\fi%
+		\fi%
+   	\fi%
   }%
-  \ifPst@temp\else\endgroup\fi
-  \ignorespaces
+  \ifPst@temp\else\endgroup\fi%
+  \ignorespaces%
 }
 %
 \def\transistor@iii(#1)(#2)(#3){% with three nodes
@@ -5173,7 +5385,7 @@
 	\pst@number{\psxunit} div /XB ED
 	XA XB add 2 div
 	YA YB add 2 div
-	){\pscurve(-0.25,0)(-0.125,0.25)(0,0)(0.125,-0.25)(0.25,0)}}\ignorespaces}
+	){\pscurve(-0.25,0)(-0.125,0.25)(0.125,-0.25)(0.25,0)}}\ignorespaces}
 %
 \def\pst@draw@vac{{%
   \pnode(-0.5,0){dipole@1}
@@ -5499,7 +5711,54 @@
   \end@ClosedObj%
   \ignorespaces%
 }
+%
+%%% POWER IGBT %%%
+%
+\newCircDipole{igbt}
+\def\pst@draw@igbt{%
+    \pnode(-0.433,0){dipole@1}
+    \pnode(0.433,0){dipole@2}
+    %\psline[fillstyle=none, arrowinset=0](-0.433,-0.5)(0.5,0)
+	\psdot(dipole@1)
+	\psdot(dipole@2)
+	\ifPst@IGBTinvert
+		\psline[arrows=->,linewidth=1.5\pslinewidth, arrowsize =0.2, arrowinset=0](0.433,0)(-0.457,-0.457)
+	\else
+		\psline[arrows=->,linewidth=1.5\pslinewidth, arrowsize =0.2, arrowinset=0](0.433,0)(-0.457,0.457)
+	\fi
+}
+%
+%
+%%% TRANSCONDUCTOR %%%
+%
+\def\pst@draw@GM{%
+  \ifx\psk@tripole@style\pst@tripole@style@french
+    \psframe[linewidth=1.5\pslinewidth](-1,-0.75)(1,0.75)
+    \pspolygon(-0.4,-0.2)(-0.4,0.2)(-0.05,0)
+  \else
+% USUAL Transconductor
+	\pspolygon[arrows=-, linewidth=1.5\pslinewidth](-0.5, -1)(-0.5, 1)(0.5, 0.6)(0.5, -0.6)(-0.5, -1)
+% Supply pins Position
+    \ifPst@GMpower
+		  \psline{-}(0,0.8)(0,1)%\uput[90](0,1){$+$}
+         	 %\psline{-o}(0,0.375)(0,0.75)\uput[90](0,0.75){$+$}
+          \psline{-}(0,-0.8)(0,-1)%\uput[-90](0,-1){$-$}
+         	 %\psline{-o}(0,-0.375)(0,-0.75)\uput[-90](0,-0.75){$-$}
+    \fi
+  \fi
+% Input Pins Position
+  \pnode(-0.5,0.5){\ifPst@GMinvert Minus@\else Plus@\fi}
+  \pnode(-0.5,-0.5){\ifPst@GMinvert Plus@\else Minus@\fi}
+  \pnode(0.5,0){S@}
 
+% + and - Position
+  \uput{0.1}[0](-0.5,0.5){\ifPst@GMinvert$-$\else$+$\fi}
+ 	 %\uput{0.1}[0](-1,0.25){\ifPst@OAinvert$-$\else$+$\fi}
+  \uput{0.1}[0](-0.5,-0.5){\ifPst@GMinvert$+$\else$-$\fi}
+ 	 %\uput{0.1}[0](-1,-0.25){\ifPst@OAinvert$+$\else$-$\fi}
+  \ifPst@GMperfect\rput(0.25,0){$\infty$}\fi%
+}
+%
 
 \catcode`\@=\PstAtCode\relax
 %
-- 
cgit v1.2.3

