our
$VERSION
=
'3.026'
;
our
$LAST_UPDATE
=
'3.026'
;
sub
new {
my
(
$class
,
$pdf
,
$key
,
$name
,
@clr
) =
@_
;
$class
=
ref
(
$class
)
if
ref
(
$class
);
my
$self
=
$class
->SUPER::new(
$pdf
,
$key
);
$pdf
->new_obj(
$self
)
unless
$self
->is_obj(
$pdf
);
$self
->{
' apipdf'
} =
$pdf
;
weaken
$self
->{
' apipdf'
};
my
$fct
= PDFDict();
my
$csname
;
$clr
[0] =
lc
(
$clr
[0]);
$self
->color(
@clr
);
if
(
$clr
[0] =~ /^[a-z\
my
(
$r
,
$g
,
$b
) = namecolor(
$clr
[0]);
$csname
=
'DeviceRGB'
;
$fct
->{
'FunctionType'
} = PDFNum(0);
$fct
->{
'Size'
} = PDFArray(PDFNum(2));
$fct
->{
'Range'
} = PDFArray(
map
{PDFNum(
$_
)} (
$r
,1,
$g
,1,
$b
,1));
$fct
->{
'Domain'
} = PDFArray(PDFNum(0), PDFNum(1));
$fct
->{
'BitsPerSample'
} = PDFNum(8);
$fct
->{
' stream'
} =
"\xff\xff\xff\x00\x00\x00"
;
}
elsif
(
$clr
[0] =~ /^[\%]+/) {
my
(
$c
,
$m
,
$y
,
$k
) = namecolor_cmyk(
$clr
[0]);
$csname
=
'DeviceCMYK'
;
$fct
->{
'FunctionType'
} = PDFNum(0);
$fct
->{
'Size'
} = PDFArray(PDFNum(2));
$fct
->{
'Range'
} = PDFArray(
map
{PDFNum(
$_
)} (0,
$c
, 0,
$m
, 0,
$y
, 0,
$k
));
$fct
->{
'Domain'
} = PDFArray(PDFNum(0), PDFNum(1));
$fct
->{
'BitsPerSample'
} = PDFNum(8);
$fct
->{
' stream'
}=
"\x00\x00\x00\x00\xff\xff\xff\xff"
;
}
elsif
(
scalar
@clr
== 1) {
$clr
[0] /= 255
while
$clr
[0] > 1;
my
$g
=
$clr
[0];
$csname
=
'DeviceGray'
;
$fct
->{
'FunctionType'
} = PDFNum(0);
$fct
->{
'Size'
} = PDFArray(PDFNum(2));
$fct
->{
'Range'
} = PDFArray(
map
{PDFNum(
$_
)} (0,
$g
));
$fct
->{
'Domain'
} = PDFArray(PDFNum(0),PDFNum(1));
$fct
->{
'BitsPerSample'
} = PDFNum(8);
$fct
->{
' stream'
} =
"\xff\x00"
;
}
elsif
(
scalar
@clr
== 3) {
my
(
$r
,
$g
,
$b
) =
@clr
;
$csname
=
'DeviceRGB'
;
$fct
->{
'FunctionType'
} = PDFNum(0);
$fct
->{
'Size'
} = PDFArray(PDFNum(2));
$fct
->{
'Range'
} = PDFArray(
map
{PDFNum(
$_
)} (
$r
,1,
$g
,1,
$b
,1));
$fct
->{
'Domain'
} = PDFArray(PDFNum(0), PDFNum(1));
$fct
->{
'BitsPerSample'
} = PDFNum(8);
$fct
->{
' stream'
}=
"\xff\xff\xff\x00\x00\x00"
;
}
elsif
(
scalar
@clr
== 4) {
my
(
$c
,
$m
,
$y
,
$k
) =
@clr
;
$csname
=
'DeviceCMYK'
;
$fct
->{
'FunctionType'
} = PDFNum(0);
$fct
->{
'Size'
} = PDFArray(PDFNum(2));
$fct
->{
'Range'
} = PDFArray(
map
{PDFNum(
$_
)} (0,
$c
, 0,
$m
, 0,
$y
, 0,
$k
));
$fct
->{
'Domain'
} = PDFArray(PDFNum(0), PDFNum(1));
$fct
->{
'BitsPerSample'
} = PDFNum(8);
$fct
->{
' stream'
}=
"\x00\x00\x00\x00\xff\xff\xff\xff"
;
}
else
{
die
'invalid color specification.'
;
}
$self
->type(
$csname
);
$pdf
->new_obj(
$fct
);
$self
->add_elements(PDFName(
'Separation'
),
PDFName(
$name
),
PDFName(
$csname
),
$fct
);
$self
->tintname(
$name
);
return
$self
;
}
sub
color {
my
$self
=
shift
;
if
(
@_
&&
defined
$_
[0]) {
$self
->{
' color'
} = [
@_
];
}
return
@{
$self
->{
' color'
}};
}
sub
tintname {
my
$self
=
shift
;
if
(
@_
&&
defined
$_
[0]) {
$self
->{
' tintname'
} = [
@_
];
}
return
@{
$self
->{
' tintname'
}};
}
sub
param {
my
$self
=
shift
;
return
$_
[0];
}
1;