@@ -59,20 +59,28 @@ impl PdfSurface {
59
59
vers_slice. iter ( ) . map ( |v| PdfVersion :: from ( * v) )
60
60
}
61
61
62
- pub fn restrict ( & self , version : PdfVersion ) {
62
+ pub fn restrict ( & self , version : PdfVersion ) -> Result < ( ) , Status > {
63
63
unsafe {
64
64
ffi:: cairo_pdf_surface_restrict_to_version ( self . inner . to_raw_none ( ) , version. into ( ) ) ;
65
65
}
66
+ match self . status ( ) {
67
+ Status :: Success => Ok ( ( ) ) ,
68
+ s => Err ( s) ,
69
+ }
66
70
}
67
71
68
- pub fn set_size ( & self , width : f64 , height : f64 ) {
72
+ pub fn set_size ( & self , width : f64 , height : f64 ) -> Result < ( ) , Status > {
69
73
unsafe {
70
74
ffi:: cairo_pdf_surface_set_size ( self . inner . to_raw_none ( ) , width, height) ;
71
75
}
76
+ match self . status ( ) {
77
+ Status :: Success => Ok ( ( ) ) ,
78
+ s => Err ( s) ,
79
+ }
72
80
}
73
81
74
82
#[ cfg( any( all( feature = "pdf" , feature = "v1_16" ) , feature = "dox" ) ) ]
75
- pub fn set_metadata ( & self , metadata : PdfMetadata , value : & str ) {
83
+ pub fn set_metadata ( & self , metadata : PdfMetadata , value : & str ) -> Result < ( ) , Status > {
76
84
let value = CString :: new ( value) . unwrap ( ) ;
77
85
unsafe {
78
86
ffi:: cairo_pdf_surface_set_metadata (
@@ -81,25 +89,37 @@ impl PdfSurface {
81
89
value. as_ptr ( ) ,
82
90
) ;
83
91
}
92
+ match self . status ( ) {
93
+ Status :: Success => Ok ( ( ) ) ,
94
+ s => Err ( s) ,
95
+ }
84
96
}
85
97
86
98
#[ cfg( any( all( feature = "pdf" , feature = "v1_16" ) , feature = "dox" ) ) ]
87
- pub fn set_page_label ( & self , label : & str ) {
99
+ pub fn set_page_label ( & self , label : & str ) -> Result < ( ) , Status > {
88
100
let label = CString :: new ( label) . unwrap ( ) ;
89
101
unsafe {
90
102
ffi:: cairo_pdf_surface_set_page_label ( self . inner . to_raw_none ( ) , label. as_ptr ( ) ) ;
91
103
}
104
+ match self . status ( ) {
105
+ Status :: Success => Ok ( ( ) ) ,
106
+ s => Err ( s) ,
107
+ }
92
108
}
93
109
94
110
#[ cfg( any( all( feature = "pdf" , feature = "v1_16" ) , feature = "dox" ) ) ]
95
- pub fn set_thumbnail_size ( & self , width : i32 , height : i32 ) {
111
+ pub fn set_thumbnail_size ( & self , width : i32 , height : i32 ) -> Result < ( ) , Status > {
96
112
unsafe {
97
113
ffi:: cairo_pdf_surface_set_thumbnail_size (
98
114
self . inner . to_raw_none ( ) ,
99
115
width as _ ,
100
116
height as _ ,
101
117
) ;
102
118
}
119
+ match self . status ( ) {
120
+ Status :: Success => Ok ( ( ) ) ,
121
+ s => Err ( s) ,
122
+ }
103
123
}
104
124
105
125
#[ cfg( any( all( feature = "pdf" , feature = "v1_16" ) , feature = "dox" ) ) ]
@@ -109,18 +129,23 @@ impl PdfSurface {
109
129
name : & str ,
110
130
link_attribs : & str ,
111
131
flags : PdfOutline ,
112
- ) -> i32 {
132
+ ) -> Result < i32 , Status > {
113
133
let name = CString :: new ( name) . unwrap ( ) ;
114
134
let link_attribs = CString :: new ( link_attribs) . unwrap ( ) ;
115
135
116
- unsafe {
136
+ let res = unsafe {
117
137
ffi:: cairo_pdf_surface_add_outline (
118
138
self . inner . to_raw_none ( ) ,
119
139
parent_id,
120
140
name. as_ptr ( ) ,
121
141
link_attribs. as_ptr ( ) ,
122
142
flags. bits ( ) as _ ,
123
143
) as _
144
+ } ;
145
+
146
+ match self . status ( ) {
147
+ Status :: Success => Ok ( res) ,
148
+ s => Err ( s) ,
124
149
}
125
150
}
126
151
}
@@ -279,7 +304,7 @@ mod test {
279
304
let custom_writer = CustomWriter ( 0 ) ;
280
305
281
306
let surface = PdfSurface :: for_stream ( 20. , 20. , custom_writer) . unwrap ( ) ;
282
- surface. set_size ( 100. , 100. ) ;
307
+ surface. set_size ( 100. , 100. ) . unwrap ( ) ;
283
308
draw ( & surface) ;
284
309
let stream = surface. finish_output_stream ( ) . unwrap ( ) ;
285
310
let custom_writer = stream. downcast :: < CustomWriter > ( ) . unwrap ( ) ;
0 commit comments