metapost

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
metapost [2021/08/14 21:55] – [Colour Dependant Visualization of Symbols] Correct metapost to accommodate cmyk, grayscale, rgb brucemuttonmetapost [2024/11/17 06:04] (current) – [Area Symbols] add link to https://colorcodes.io brucemutton
Line 224: Line 224:
     fi;     fi;
     picture thetext;     picture thetext;
-    thetext:=thTEX("\thframed {" & textsize & plaintext & "}");+    thetext:=thTEX("\thframed {" & textsize & " \thfb " & plaintext & "}");
     if A = (-1,1):     if A = (-1,1):
       p_label.ulft(thetext,P,R,style);       p_label.ulft(thetext,P,R,style);
Line 775: Line 775:
 Climbing one has center where the rope should go on the harness... Climbing one has center where the rope should go on the harness...
 The scale on the map and in the legend is matching just for 1:500... The scale on the map and in the legend is matching just for 1:500...
 +
 +===Region names symbol===
 +In the Hirlatz cave we use this symbol to tell the name of the adjacent (preview) maps.
 +It is quite customizable and especially shows a way how to do label boxes.
 +By default it prints the current surveys name in a white-filled box with rounded corners.
 +You can adjust it per symbol by giving "-attr <var> <val>" options at the symbol in xtherion; see the code header for the available options.
 +
 +From Benedikt Hallinger for Therion 6.0.3
 +
 +{{ ::metapost:therion-u_mappe.png?nolink |}}
 +
 +    # Symbol to denote assigned survey.
 +    #   Option "-attr text <string>" shows given text; otherwise current survey is shown.
 +    #   Option "-attr bordersmooth <num>" overrides edge smoothness (0 for sharp edges)
 +    #   Option "-attr bordermargin <num>" overrides margin text/border
 +    #   Option "-attr basescale <num>" overrides basic text sizing factor (default text size)
 +    #   Option "-attr fillsize <s_pct>" fills with page background color; s_pct is percent of bbox size
 +    def p_u_mappe(expr pos, theta, sc, al) =
 +      T:=identity aligned al rotated theta scaled sc shifted pos;
 +      begingroup;
 +        % Basic config
 +        bordersmooth:=4;         % smoothness of box corners  (0=90° edges)
 +        bordermargin:=5.0bp;     % padding border->text
 +        basescale:=1.0;          % basic scaling of default-sized text
 +        fillsize:=-1.0;           % proportional size of label filling (percent)
 +        if known(ATTR_bordersmooth): bordersmooth:=scantokens(ATTR_bordersmooth); fi;
 +        if known(ATTR_bordermargin): bordermargin:=scantokens(ATTR_bordermargin); fi;
 +        if known(ATTR_basescale):    basescale:=scantokens(ATTR_basescale);       fi;
 +        if known(ATTR_fillsize):     fillsize:=scantokens(ATTR_fillsize);         fi;
 +      
 +        % GET LABEL TEXT:
 +        string txt;
 +        if known(ATTR_text):
 +            txt := ATTR_text;
 +        else:
 +                txt := ATTR__survey;
 +        fi;
 +        
 +        
 +        % PREPARE LABEL:
 +        lab:=thelabel(txt, (0.0,0.0));
 +        pickup PenA;                       % border thickness
 +        interim bboxmargin:=bordermargin;  % padding border->text
 +        
 +        % PREPARE BOX and DRAW BOX BACKGROUND:
 +        % q is the box as drawed, but we fill the place first before drawing
 +        q:=((bbox lab) smoothed bordersmooth) aligned al scaled (sc * basescale) rotated theta shifted pos;
 +        if (fillsize <> -1.0):
 +            % draw extending filled box around symbol
 +            if known(MapBackground):
 +                % from therion versions newer than 6.0.3+3551531+dev (23.11.2021) we use page background
 +                thfill ((bbox lab) smoothed bordersmooth) scaled (sc * basescale * fillsize) withcolor MapBackground;
 +            else:
 +                thfill ((bbox lab) smoothed bordersmooth) scaled (sc * basescale * fillsize) withcolor label_fill_color;
 +            fi;
 +        fi;
 +        % the following will draw the actual visible interiour-filling of the box
 +        thfill ((bbox lab) smoothed bordersmooth) scaled (sc * basescale) withcolor label_fill_color;
 +        
 +        % DRAW BOX
 +        draw q;
 +        
 +        % DRAW LABEL TEXT
 +        lab:=lab aligned al;
 +        lab:=lab scaled (sc * basescale);
 +        lab:=lab rotated theta;
 +        lab:=lab shifted pos;
 +        process_label(pos, 0.001);   % for some weird reason "0.0" does not work here and puts the label to map-center at scrap-rotation.
 +      endgroup;
 +    enddef;
 +
 +
 +
  
 ====Line Symbols==== ====Line Symbols====
Line 1063: Line 1136:
           zz3 := postcontrol t of P;           zz3 := postcontrol t of P;
           zz4 := precontrol t+1 of P;           zz4 := precontrol t+1 of P;
 +          linecap_prev:=linecap;
           linecap:=0;           linecap:=0;
           if (length(zz3-1/3[zz1,zz2]) > 0.1pt) or           if (length(zz3-1/3[zz1,zz2]) > 0.1pt) or
Line 1084: Line 1158:
             draw zz1--zz2 withcolor background;             draw zz1--zz2 withcolor background;
           fi;           fi;
 +          linecap:=linecap_prev;   % to prevent problems with dots of other symbols
         endfor;         endfor;
       enddef;       enddef;
Line 1622: Line 1697:
 Colors are in order R, G, B --- 0=0 1=255. Color (0.1, 0.2, 0.8) means (25 51 204) in Photoshop - quite dark blue. Light blue could be for example (123 213 255) in Photoshop - it is (123/255, 213/255, 255/255) or (0.48, 0.84 1.0) for Metapost. Colors are in order R, G, B --- 0=0 1=255. Color (0.1, 0.2, 0.8) means (25 51 204) in Photoshop - quite dark blue. Light blue could be for example (123 213 255) in Photoshop - it is (123/255, 213/255, 255/255) or (0.48, 0.84 1.0) for Metapost.
  
-See also  [[tips#RGB to Therion Colour Mapping Calculator|this spreadsheet]] to visualise and convert between colour formats.+See also  [[https://colorcodes.io|https://colorcodes.io]] or [[tips#RGB to Therion Colour Mapping Calculator|this spreadsheet]] to visualise and convert between colour formats.
  
 ---- ----
Line 2121: Line 2196:
  
 A: Try this code: A: Try this code:
- 
-      def_transparent_rgb(tr_lgrey, 0.73, 0.71, 0.75); 
  
       def a_u_lgrey(expr P) =       def a_u_lgrey(expr P) =
         T:=identity;         T:=identity;
-        thfill P withtransparentcolor tr_lgrey;+        thfill P withcolor (0.7, 0.7, 0.7) withalpha 0.5;
       enddef;       enddef;
  
-There are a few predefined transparent colors, the most interesting of them is tr_bg (current scrap background). Standard opacity value (defined in the layout section) is applied. M. Budaj 
  
 ---- ----
  • metapost.1628970954.txt.gz
  • Last modified: 4 years ago
  • by brucemutton