четвер, 14 лютого 2013 р.

ColourBars Frame




Procedure FillColourBars(theFrame : IDeckLinkVideoFrame);
const
 gColourBars : array[0..7] of cardinal = ($ffffffff, $ffffff00, $ff00ffff, $ff00ff00, $ffff00ff, $ffff0000, $ff0000ff, $ff000000);

function DarkerColor(const Color: cardinal; Percent: Integer): cardinal;
var
 A, R, G, B: Byte;
begin
  Result := Color;
  if Percent <= 0 then
    Exit;
  if Percent > 100 then
    Percent := 100;
  A := color;
  R := color shr 8;
  G := color shr 16;
  B := color shr 14;
  R := R - R * Percent div 100;
  G := G - G * Percent div 100;
  B := B - B * Percent div 100;
  result:=(a or (r shl 8) or (g shl 16) or (b shl 24));
end;

function LighterColor(const Color: cardinal; Percent: Integer): cardinal;
var
  A, R, G, B: Byte;
begin
  Result := Color;
  if Percent <= 0 then
    Exit;
  if Percent > 100 then
    Percent := 100;
  A := color;
  R := color shr 8;
  G := color shr 16;
  B := color shr 14;
  R := R + (255 - R) * Percent div 100;
  G := G + (255 - G) * Percent div 100;
  B := B + (255 - B) * Percent div 100;
    result:=(a or (r shl 8) or (g shl 16) or (b shl 24));
end;

var
  nextword        : Pointer;
  width           : integer;
  height          : integer;
  x,y             : integer;
begin
  theframe.GetBytes(nextword);
  width:= theframe.GetWidth;
  height:= theframe.GetHeight;
  for y := 0 to height-1 do
    for x:=0 to width-1 do
    begin
      pCardinal(nextword)^:=DarkerColor(gColourBars[(x*8) div width],25);  inc(pCardinal(nextword),1);
    end;
end;

Немає коментарів:

Дописати коментар