RVMapWht.pas
上传用户:daoqigc
上传日期:2021-04-20
资源大小:2795k
文件大小:3k
源码类别:

RichEdit

开发平台:

Delphi

  1. {*******************************************************}
  2. {                                                       }
  3. {       RichView                                        }
  4. {       Constant and functions for loading RVF          }
  5. {       documents in rvf_sInsertMap mode.               }
  6. {                                                       }
  7. {       Copyright (c) Sergey Tkachenko                  }
  8. {       svt@trichview.com                               }
  9. {       http://www.trichview.com                        }
  10. {                                                       }
  11. {*******************************************************}
  12. unit RVMapWht;
  13. interface
  14. uses Graphics;
  15. const
  16.   // style map weights
  17.   RVSMW_FONTNAME     = 10000;
  18.   RVSMW_FONTSIZE     = 10000;
  19.   RVSMW_FONTCHARSET  = 50000;
  20.   RVSMW_EACHRGBCOLOR = 3333;
  21.   RVSMW_COLORSET     = 3000;
  22.   RVSMW_ALLCAPS      = 50000;
  23.   RVSMW_OVERLINE     = 50000;
  24.   RVSMW_EACHRGBBCOLOR = 10000;
  25.   RVSMW_BCOLORSET     = 50000;
  26.   RVSMW_FONTEACHSTYLE= 50000;
  27.   RVSMW_FONTSTYLESET = 50000;
  28.   RVSMW_CHARSCALE    = 300;
  29.   RVSMW_CHARSPACING  = 1000;
  30.   RVSMW_BIDIMODE     = 10000;
  31.   RVSMW_VSHIFT       = 50000;
  32.   RVSMW_VSHIFTRATIO  = 1000;
  33.   RVSMW_CURSOR       = 5000;
  34.   RVSMW_PROTECTION   = 100000;
  35.   RVSMW_SPECIALCODE  = 50000;
  36.   RVSMW_LANGUAGE     = 100;
  37.   RVSMW_ALIGNMENT    = 50000;
  38.   RVSMW_LINESPACING  = 5000;
  39.   RVSMW_INDENT       = 1000;
  40.   RVSMW_BORDERSIDE   = 5000;
  41.   RVSMW_BORDERNOSIDE = 20000;
  42.   RVSMW_WIDTH        = 1000;
  43.   RVSMW_BORDERSTYLE  = 1000;
  44.   RVSMW_PADDING      = 100;
  45.   RVSMW_NOWRAP       = 1000;
  46.   RVSMW_READONLY     = 100000;
  47.   RVSMW_STYLEPROTECT = 1000;
  48.   RVSMW_DONOTWANTRETURNS= 10000;
  49.   RVSMW_KEEPLINESTOGETHER= 500;
  50.   RVSMW_KEEPWITHNEXT = 500;
  51.   RVSMW_TABPOS       = 200;
  52.   RVSMW_TABALIGN     = 100;
  53.   RVSMW_LEADER       = 50;
  54.   RVSMW_NOTAB        = 400;
  55.   RVMW_LISTTYPE      = 5000;
  56.   RVMW_LISTMISC      = 100;
  57. function RV_CompareInts(New, Old, Weight: Integer): Integer;
  58. function RV_CompareColors(Color1, Color2: TColor; w1, w2: Integer): Integer;
  59. implementation
  60. {------------------------------------------------------------------------------}
  61. function RV_CompareInts(New, Old, Weight: Integer): Integer;
  62. begin
  63.   if New=0 then
  64.     Result := Round((1-abs(Old))*Weight)
  65.   else
  66.     Result := Round((1-abs(New-Old)/abs(New))*Weight);
  67. end;
  68. {------------------------------------------------------------------------------}
  69. function RV_CompareColors(Color1, Color2: TColor; w1, w2: Integer): Integer;
  70. var c1,c2: Integer;
  71.     b1,b2: Integer;
  72.     procedure Cmp;
  73.     begin
  74.       if c1>$40 then
  75.         inc(b1);
  76.       if c2>$40 then
  77.         inc(b2);
  78.       dec(Result, abs(c1-c2) * w1 div $FF);
  79.     end;
  80. begin
  81.   if (Color1=clNone) or (Color2=clNone) then begin
  82.     if (Color1=clNone) = (Color2=clNone) then
  83.       Result := w1*3+w2
  84.     else
  85.       Result := 0;
  86.     exit;
  87.   end;
  88.   Color1 := ColorToRGB(Color1);
  89.   Color2 := ColorToRGB(Color2);
  90.   Result := 0;
  91.   b1 := 0;
  92.   b2 := 0;
  93.   c1 := Color1 and $0000FF;
  94.   c2 := Color2 and $0000FF;
  95.   Cmp;
  96.   c1 := (Color1 and $00FF00) shr 8;
  97.   c2 := (Color2 and $00FF00) shr 8;
  98.   Cmp;
  99.   c1 := (Color1 and $FF0000) shr 16;
  100.   c2 := (Color2 and $FF0000) shr 16;
  101.   Cmp;
  102.   if (b1=0) = (b2=0) then
  103.     inc(Result, w2);
  104. end;
  105. end.