mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 06:49:23 +02:00
* finished patternlineVESA256 and enabled it
* folded (direct)put/getpixVESA32k and 64k into one procedure since they were exactly the same code
This commit is contained in:
parent
39d5e1c70a
commit
57a1f1639f
@ -2040,9 +2040,9 @@ const CrtAddress: word = 0;
|
||||
mode.DirectColor := TRUE;
|
||||
mode.MaxX := 319;
|
||||
mode.MaxY := 199;
|
||||
mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32k;
|
||||
mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32k;
|
||||
mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32k;
|
||||
mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32kOr64k;
|
||||
mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32kOr64k;
|
||||
mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32kOr64k;
|
||||
mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
|
||||
mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
|
||||
mode.InitMode := {$ifdef fpc}@{$endif}Init320x200x32k;
|
||||
@ -2066,9 +2066,9 @@ const CrtAddress: word = 0;
|
||||
mode.DirectColor := TRUE;
|
||||
mode.MaxX := 319;
|
||||
mode.MaxY := 199;
|
||||
mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA64k;
|
||||
mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA64k;
|
||||
mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA64k;
|
||||
mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32kOr64k;
|
||||
mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32kOr64k;
|
||||
mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32kOr64k;
|
||||
mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
|
||||
mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
|
||||
mode.InitMode := {$ifdef fpc}@{$endif}Init320x200x64k;
|
||||
@ -2131,6 +2131,7 @@ const CrtAddress: word = 0;
|
||||
mode.hline := {$ifdef fpc}@{$endif}HLineVESA256;
|
||||
mode.vline := {$ifdef fpc}@{$endif}VLineVESA256;
|
||||
mode.GetScanLine := {$ifdef fpc}@{$endif}GetScanLineVESA256;
|
||||
mode.PatternLine := {$ifdef fpc}@{$endif}PatternLineVESA256;
|
||||
mode.XAspect := 10000;
|
||||
mode.YAspect := 10000;
|
||||
AddMode(mode);
|
||||
@ -2149,9 +2150,9 @@ const CrtAddress: word = 0;
|
||||
mode.DirectColor := TRUE;
|
||||
mode.MaxX := 639;
|
||||
mode.MaxY := 479;
|
||||
mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32k;
|
||||
mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32k;
|
||||
mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32k;
|
||||
mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32kOr64k;
|
||||
mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32kOr64k;
|
||||
mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32kOr64k;
|
||||
mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
|
||||
mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
|
||||
mode.InitMode := {$ifdef fpc}@{$endif}Init640x480x32k;
|
||||
@ -2175,9 +2176,9 @@ const CrtAddress: word = 0;
|
||||
mode.DirectColor := TRUE;
|
||||
mode.MaxX := 639;
|
||||
mode.MaxY := 479;
|
||||
mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA64k;
|
||||
mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA64k;
|
||||
mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA64k;
|
||||
mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32kOr64k;
|
||||
mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32kOr64k;
|
||||
mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32kOr64k;
|
||||
mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
|
||||
mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
|
||||
mode.InitMode := {$ifdef fpc}@{$endif}Init640x480x64k;
|
||||
@ -2238,6 +2239,7 @@ const CrtAddress: word = 0;
|
||||
mode.hline := {$ifdef fpc}@{$endif}HLineVESA256;
|
||||
mode.vline := {$ifdef fpc}@{$endif}VLineVESA256;
|
||||
mode.GetScanLine := {$ifdef fpc}@{$endif}GetScanLineVESA256;
|
||||
mode.PatternLine := {$ifdef fpc}@{$endif}PatternLineVESA256;
|
||||
mode.XAspect := 10000;
|
||||
mode.YAspect := 10000;
|
||||
AddMode(mode);
|
||||
@ -2256,9 +2258,9 @@ const CrtAddress: word = 0;
|
||||
mode.DirectColor := TRUE;
|
||||
mode.MaxX := 799;
|
||||
mode.MaxY := 599;
|
||||
mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32k;
|
||||
mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32k;
|
||||
mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32k;
|
||||
mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32kOr64k;
|
||||
mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32kOr64k;
|
||||
mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32kOr64k;
|
||||
mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
|
||||
mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
|
||||
mode.InitMode := {$ifdef fpc}@{$endif}Init800x600x32k;
|
||||
@ -2282,9 +2284,9 @@ const CrtAddress: word = 0;
|
||||
mode.DirectColor := TRUE;
|
||||
mode.MaxX := 799;
|
||||
mode.MaxY := 599;
|
||||
mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA64k;
|
||||
mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA64k;
|
||||
mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA64k;
|
||||
mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32kOr64k;
|
||||
mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32kOr64k;
|
||||
mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32kOr64k;
|
||||
mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
|
||||
mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
|
||||
mode.InitMode := {$ifdef fpc}@{$endif}Init800x600x64k;
|
||||
@ -2345,6 +2347,7 @@ const CrtAddress: word = 0;
|
||||
mode.vline := {$ifdef fpc}@{$endif}VLineVESA256;
|
||||
mode.hline := {$ifdef fpc}@{$endif}HLineVESA256;
|
||||
mode.GetScanLine := {$ifdef fpc}@{$endif}GetScanLineVESA256;
|
||||
mode.PatternLine := {$ifdef fpc}@{$endif}PatternLineVESA256;
|
||||
mode.XAspect := 10000;
|
||||
mode.YAspect := 10000;
|
||||
AddMode(mode);
|
||||
@ -2363,9 +2366,9 @@ const CrtAddress: word = 0;
|
||||
mode.DirectColor := TRUE;
|
||||
mode.MaxX := 1023;
|
||||
mode.MaxY := 767;
|
||||
mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32k;
|
||||
mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32k;
|
||||
mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32k;
|
||||
mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32kOr64k;
|
||||
mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32kOr64k;
|
||||
mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32kOr64k;
|
||||
mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
|
||||
mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
|
||||
mode.InitMode := {$ifdef fpc}@{$endif}Init640x480x32k;
|
||||
@ -2389,9 +2392,9 @@ const CrtAddress: word = 0;
|
||||
mode.PaletteSize := mode.MaxColor;
|
||||
mode.MaxX := 1023;
|
||||
mode.MaxY := 767;
|
||||
mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA64k;
|
||||
mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA64k;
|
||||
mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA64k;
|
||||
mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32kOr64k;
|
||||
mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32kOr64k;
|
||||
mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32kOr64k;
|
||||
mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
|
||||
mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
|
||||
mode.InitMode := {$ifdef fpc}@{$endif}Init1024x768x64k;
|
||||
@ -2452,6 +2455,7 @@ const CrtAddress: word = 0;
|
||||
mode.vline := {$ifdef fpc}@{$endif}VLineVESA256;
|
||||
mode.hline := {$ifdef fpc}@{$endif}HLineVESA256;
|
||||
mode.GetScanLine := {$ifdef fpc}@{$endif}GetScanLineVESA256;
|
||||
mode.PatternLine := {$ifdef fpc}@{$endif}PatternLineVESA256;
|
||||
mode.XAspect := 10000;
|
||||
mode.YAspect := 10000;
|
||||
AddMode(mode);
|
||||
@ -2470,9 +2474,9 @@ const CrtAddress: word = 0;
|
||||
mode.PaletteSize := mode.MaxColor;
|
||||
mode.MaxX := 1279;
|
||||
mode.MaxY := 1023;
|
||||
mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32k;
|
||||
mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32k;
|
||||
mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32k;
|
||||
mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32kOr64k;
|
||||
mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32kOr64k;
|
||||
mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32kOr64k;
|
||||
mode.InitMode := {$ifdef fpc}@{$endif}Init1280x1024x32k;
|
||||
mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
|
||||
mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
|
||||
@ -2496,9 +2500,9 @@ const CrtAddress: word = 0;
|
||||
mode.PaletteSize := mode.MaxColor;
|
||||
mode.MaxX := 1279;
|
||||
mode.MaxY := 1023;
|
||||
mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA64k;
|
||||
mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA64k;
|
||||
mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA64k;
|
||||
mode.DirectPutPixel:={$ifdef fpc}@{$endif}DirectPutPixVESA32kOr64k;
|
||||
mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA32kOr64k;
|
||||
mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA32kOr64k;
|
||||
mode.InitMode := {$ifdef fpc}@{$endif}Init1280x1024x64k;
|
||||
mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
|
||||
mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
|
||||
@ -2513,7 +2517,12 @@ const CrtAddress: word = 0;
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.9 1999-12-25 22:26:10 jonas
|
||||
Revision 1.10 1999-12-26 10:36:00 jonas
|
||||
* finished patternlineVESA256 and enabled it
|
||||
* folded (direct)put/getpixVESA32k and 64k into one procedure since
|
||||
they were exactly the same code
|
||||
|
||||
Revision 1.9 1999/12/25 22:26:10 jonas
|
||||
* vlinevesa256 wasn't used yet for 640x480x256
|
||||
|
||||
Revision 1.8 1999/12/25 08:25:20 jonas
|
||||
|
@ -1003,22 +1003,6 @@ end;
|
||||
OldWriteMode : word;
|
||||
OldCurrentColor : word;
|
||||
TmpFillPattern, patternPos : byte;
|
||||
begin
|
||||
OldWriteMode := CurrentWriteMode;
|
||||
CurrentWriteMode := NormalPut;
|
||||
{ Get the current pattern }
|
||||
TmpFillPattern := FillPatternTable
|
||||
[FillSettings.Pattern][((y + startYViewPort) and $7)+1];
|
||||
Case TmpFillPattern Of
|
||||
0:
|
||||
begin
|
||||
OldCurrentColor := CurrentColor;
|
||||
CurrentColor := CurrentBkColor;
|
||||
HLineVESA256(x1,x2,y);
|
||||
CurrentColor := OldCurrentColor;
|
||||
end;
|
||||
$ff: HLineVESA256(x1,x2,y);
|
||||
else
|
||||
begin
|
||||
{ convert to global coordinates ... }
|
||||
x1 := x1 + StartXViewPort;
|
||||
@ -1028,6 +1012,11 @@ end;
|
||||
if LineClipped(x1,y,x2,y,StartXViewPort,StartYViewPort,
|
||||
StartXViewPort+ViewWidth, StartYViewPort+ViewHeight) then
|
||||
exit;
|
||||
OldWriteMode := CurrentWriteMode;
|
||||
CurrentWriteMode := NormalPut;
|
||||
{ Get the current pattern }
|
||||
TmpFillPattern := FillPatternTable
|
||||
[FillSettings.Pattern][((y + startYViewPort) and $7)+1];
|
||||
{$ifdef logging}
|
||||
LogLn('patternline '+strf(x1)+' - '+strf(x2)+' on '+strf(y));
|
||||
{$endif logging}
|
||||
@ -1117,8 +1106,6 @@ end;
|
||||
currentColor := oldCurrentColor;
|
||||
End
|
||||
Until amount = 0;
|
||||
end;
|
||||
end;
|
||||
currentWriteMode := oldWriteMode;
|
||||
end;
|
||||
|
||||
@ -1224,7 +1211,7 @@ end;
|
||||
{* 15/16bit pixels VESA mode routines *}
|
||||
{************************************************************************}
|
||||
|
||||
procedure PutPixVESA32k(x, y : integer; color : word); {$ifndef fpc}far;{$endif fpc}
|
||||
procedure PutPixVESA32kOr64k(x, y : integer; color : word); {$ifndef fpc}far;{$endif fpc}
|
||||
var
|
||||
offs : longint;
|
||||
begin
|
||||
@ -1244,27 +1231,7 @@ end;
|
||||
memW[WinWriteSeg : word(offs)] := color;
|
||||
end;
|
||||
|
||||
procedure PutPixVESA64k(x, y : integer; color : word); {$ifndef fpc}far;{$endif fpc}
|
||||
var
|
||||
offs : longint;
|
||||
begin
|
||||
X:= X + StartXViewPort;
|
||||
Y:= Y + StartYViewPort;
|
||||
{ convert to absolute coordinates and then verify clipping...}
|
||||
if ClipPixels then
|
||||
Begin
|
||||
if (X < StartXViewPort) or (X > (StartXViewPort + ViewWidth)) then
|
||||
exit;
|
||||
if (Y < StartYViewPort) or (Y > (StartYViewPort + ViewHeight)) then
|
||||
exit;
|
||||
end;
|
||||
Y := Y + YOffset; { adjust pixel for correct virtual page }
|
||||
offs := longint(y) * BytesPerLine + 2*x;
|
||||
SetWriteBank(integer(offs shr 16));
|
||||
memW[WinWriteSeg : word(offs)] := color;
|
||||
end;
|
||||
|
||||
function GetPixVESA32k(x, y : integer): word; {$ifndef fpc}far;{$endif fpc}
|
||||
function GetPixVESA32kOr64k(x, y : integer): word; {$ifndef fpc}far;{$endif fpc}
|
||||
var
|
||||
offs : longint;
|
||||
begin
|
||||
@ -1272,21 +1239,10 @@ end;
|
||||
Y:= Y + StartYViewPort + YOffset;
|
||||
offs := longint(y) * BytesPerLine + 2*x;
|
||||
SetReadBank(integer(offs shr 16));
|
||||
GetPixVESA32k:=memW[WinReadSeg : word(offs)];
|
||||
GetPixVESA32kOr64k:=memW[WinReadSeg : word(offs)];
|
||||
end;
|
||||
|
||||
function GetPixVESA64k(x, y : integer): word; {$ifndef fpc}far;{$endif fpc}
|
||||
var
|
||||
offs : longint;
|
||||
begin
|
||||
X:= X + StartXViewPort;
|
||||
Y:= Y + StartYViewPort + YOffset;
|
||||
offs := longint(y) * BytesPerLine + 2*x;
|
||||
SetReadBank(integer(offs shr 16));
|
||||
GetPixVESA64k:=memW[WinReadSeg : word(offs)];
|
||||
end;
|
||||
|
||||
procedure DirectPutPixVESA32k(x, y : integer); {$ifndef fpc}far;{$endif fpc}
|
||||
procedure DirectPutPixVESA32kOr64k(x, y : integer); {$ifndef fpc}far;{$endif fpc}
|
||||
var
|
||||
offs : longint;
|
||||
col : word;
|
||||
@ -1320,40 +1276,6 @@ end;
|
||||
End;
|
||||
end;
|
||||
|
||||
procedure DirectPutPixVESA64k(x, y : integer); {$ifndef fpc}far;{$endif fpc}
|
||||
var
|
||||
offs : longint;
|
||||
Col : word;
|
||||
begin
|
||||
Y:= y + YOffset;
|
||||
offs := longint(y) * BytesPerLine + 2*x;
|
||||
SetWriteBank(integer(offs shr 16));
|
||||
Case CurrentWriteMode of
|
||||
XorPut:
|
||||
Begin
|
||||
SetReadBank(integer(offs shr 16));
|
||||
memW[WinWriteSeg : word(offs)] := memW[WinReadSeg : word(offs)] xor currentcolor;
|
||||
End;
|
||||
AndPut:
|
||||
Begin
|
||||
SetReadBank(integer(offs shr 16));
|
||||
memW[WinWriteSeg : word(offs)] := memW[WinReadSeg : word(offs)] And currentcolor;
|
||||
End;
|
||||
OrPut:
|
||||
Begin
|
||||
SetReadBank(integer(offs shr 16));
|
||||
memW[WinWriteSeg : word(offs)] := memW[WinReadSeg : word(offs)] or currentcolor;
|
||||
End
|
||||
Else
|
||||
Begin
|
||||
If CurrentWriteMode <> NotPut Then
|
||||
col := CurrentColor
|
||||
Else col := Not(CurrentColor);
|
||||
memW[WinWriteSeg : word(offs)] := Col;
|
||||
End
|
||||
End;
|
||||
end;
|
||||
|
||||
{$ifdef FPC}
|
||||
{************************************************************************}
|
||||
{* 15/16bit pixels VESA mode routines Linear mode *}
|
||||
@ -1376,6 +1298,7 @@ end;
|
||||
offs := longint(y) * BytesPerLine + 2*x;
|
||||
seg_move(get_ds,longint(@color),WinWriteSeg,offs+LinearPageOfs,2);
|
||||
end;
|
||||
|
||||
function GetPixVESA32kor64kLinear(x, y : integer): word; {$ifndef fpc}far;{$endif fpc}
|
||||
var
|
||||
offs : longint;
|
||||
@ -2512,16 +2435,21 @@ end;
|
||||
YOffset := (MaxY+1)*page;
|
||||
end;
|
||||
|
||||
{
|
||||
(*
|
||||
$Log$
|
||||
Revision 1.11 1999-12-25 22:31:09 jonas
|
||||
Revision 1.12 1999-12-26 10:36:00 jonas
|
||||
* finished patternlineVESA256 and enabled it
|
||||
* folded (direct)put/getpixVESA32k and 64k into one procedure since
|
||||
they were exactly the same code
|
||||
|
||||
Revision 1.11 1999/12/25 22:31:09 jonas
|
||||
+ patternlineVESA256, not yet used because I'm not yet sure it's
|
||||
already working 100%
|
||||
* changed {$ifdef logging} to {$ifdef logging2} for vlineVESA256 and
|
||||
hlineVESA256 (they're used a lot a working properly afaik)
|
||||
|
||||
Revision 1.10 1999/12/21 17:42:17 jonas
|
||||
* changed vesa.inc do it doesn't try to use linear modes anymore (doesn't work
|
||||
* changed vesa.inc so it doesn't try to use linear modes anymore (doesn't work
|
||||
yet!!)
|
||||
* fixed mode detection so the low modenumber of a driver doesn't have to be zero
|
||||
anymore (so VESA autodetection now works)
|
||||
@ -2636,7 +2564,7 @@ Revision 1.9 1999/08/01 14:51:07 jonas
|
||||
* added notput support to directputpix256
|
||||
|
||||
Revision 1.8 1999/07/18 15:07:21 jonas
|
||||
+ xor-, and and- orput support for VESA256 modes
|
||||
+ xor-, and- and orput support for VESA256 modes
|
||||
* compile with -dlogging if you wnt some info to be logged to grlog.txt
|
||||
|
||||
Revision 1.7 1999/07/14 15:21:49 jonas
|
||||
@ -2651,4 +2579,4 @@ Revision 1.6 1999/07/14 13:17:29 jonas
|
||||
Revision 1.5 1999/07/12 13:28:33 jonas
|
||||
* forgot log tag in previous commit
|
||||
|
||||
}
|
||||
*)
|
||||
|
Loading…
Reference in New Issue
Block a user