This file is indexed.

/usr/share/ada/adainclude/gtkada/cairo-pattern.ads is in libgtkada16.1.0-dev 17.0.2017-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
------------------------------------------------------------------------------
--                  GtkAda - Ada95 binding for Gtk+/Gnome                   --
--                                                                          --
--                     Copyright (C) 2010-2017, AdaCore                     --
--                                                                          --
-- This library is free software;  you can redistribute it and/or modify it --
-- under terms of the  GNU General Public License  as published by the Free --
-- Software  Foundation;  either version 3,  or (at your  option) any later --
-- version. This library is distributed in the hope that it will be useful, --
-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE.                            --
--                                                                          --
--                                                                          --
--                                                                          --
--                                                                          --
--                                                                          --
-- You should have received a copy of the GNU General Public License and    --
-- a copy of the GCC Runtime Library Exception along with this program;     --
-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
-- <http://www.gnu.org/licenses/>.                                          --
--                                                                          --
------------------------------------------------------------------------------

--  <description>
--  A Cairo_Pattern is the paintbrush with which cairo draws. The primary use
--  of patterns is as the source for all cairo drawing operations.
--
--  A cairo pattern is created by using one of the many constructors, of the
--  form Cairo_Pattern.Create_<type> or implicitly through
--  Cairo.Set_Source_<type> subprograms.
--  </description>
--
--  <c_version>1.8.8</c_version>
--  <group>Cairo</group>

with System;

package Cairo.Pattern is

   --------------------------------
   -- Pattern creation functions --
   --------------------------------

   --  Cairo_Pattern_Type is used to describe the type of a given pattern.
   --
   --  The type of a pattern is determined by the function used to create
   --  it. The Cairo.Pattern.Create_Rgb and Cairo.Pattern.Create_Rgba
   --  functions create Solid patterns. The remaining
   --  Cairo.Pattern.Create_<> functions map to pattern types in obvious
   --  ways.
   --
   --  The pattern type can be queried with Cairo.Pattern.Get_Type
   --
   --  Most Cairo_Pattern functions can be called with a pattern of any type,
   --  (though trying to change the extend or filter for a solid pattern will
   --  have no effect). A notable exception is Cairo.Pattern.Add_Color_Stop_Rgb
   --  and Cairo.Pattern.Add_Color_Stop_Rgba which must only be called with
   --  gradient patterns (either Linear or Radial). Otherwise the pattern will
   --  be shutdown and put into an error state.
   --
   --  New entries may be added in future versions.
   --
   --  Since: 1.2
   type Cairo_Pattern_Type is
     (Cairo_Pattern_Type_Solid,
      --  The pattern is a solid (uniform) color. It may be opaque or
      --  translucent.

      Cairo_Pattern_Type_Surface,
      --  The pattern is a based on a surface (an image).

      Cairo_Pattern_Type_Linear,
      --  The pattern is a linear gradient.

      Cairo_Pattern_Type_Radial
      --  The pattern is a radial gradient.
     );
   pragma Convention (C, Cairo_Pattern_Type);

   --  Cairo_extend is used to describe how pattern color/alpha will be
   --  determined for areas "outside" the pattern's natural area, (for
   --  example, outside the surface bounds or outside the gradient
   --  geometry).
   --
   --  The default extend mode is CAIRO_EXTEND_NONE for surface patterns
   --  and CAIRO_EXTEND_PAD for gradient patterns.
   --
   --  New entries may be added in future versions.
   type Cairo_Extend is
     (Cairo_Extend_None,
      --  Pixels outside of the source pattern are fully transparent

      Cairo_Extend_Repeat,
      --  The pattern is tiled by repeating

      Cairo_Extend_Reflect,
      --  The pattern is tiled by reflecting at the edges (Implemented for
      --  surface patterns since 1.6)

      Cairo_Extend_Pad
      --  Pixels outside of the pattern copy
      --  the closest pixel from the source (Since 1.2; but only
      --  implemented for surface patterns since 1.6)
     );
   pragma Convention (C, Cairo_Extend);

   --  Cairo_filter is used to indicate what filtering should be
   --  applied when reading pixel values from patterns. See
   --  Cairo.Pattern.Set_Source for indicating the desired filter to be
   --  used with a particular pattern.
   type Cairo_Filter is
     (Cairo_Filter_Fast,
      --  A high-performance filter, with quality similar to
      --  Cairo_Filter_Nearest

      Cairo_Filter_Good,
      --  A reasonable-performance filter, with quality similar to
      --  Cairo_Filter_Bilinear

      Cairo_Filter_Best,
      --  The highest-quality available, performance may
      --  not be suitable for interactive use.

      Cairo_Filter_Nearest,
      --  Nearest-neighbor filtering

      Cairo_Filter_Bilinear,
      --  Linear interpolation in two dimensions

      Cairo_Filter_Gaussian
      --  This filter value is currently unimplemented, and should not be used
      --  in current code.
     );
   pragma Convention (C, Cairo_Filter);

   function Create_Rgb
     (Red   : Gdouble;
      Green : Gdouble;
      Blue  : Gdouble)
      return  Cairo_Pattern;
   --  Red:   Red component of the color
   --  Green: Green component of the color
   --  Blue:  Blue component of the color
   --
   --  Creates a new Cairo_Pattern corresponding to an opaque color.  The
   --  color components are floating point numbers in the range 0 to 1.
   --  If the values passed in are outside that range, they will be
   --  clamped.
   --
   --  Return value: the newly created Cairo_Pattern if successful, or
   --  an error pattern in case of no memory.  The caller owns the
   --  returned object and should call Cairo.Pattern.Destroy when
   --  finished with it.
   --
   --  This function will always return a valid pointer, but if an error
   --  occurred the pattern status will be set to an error. To inspect
   --  the status of a pattern use Cairo.Pattern.Status.

   function Create_Rgba
     (Red   : Gdouble;
      Green : Gdouble;
      Blue  : Gdouble;
      Alpha : Gdouble)
      return  Cairo_Pattern;
   --  Red: Red component of the color
   --  Green: Green component of the color
   --  Blue: Blue component of the color
   --  Alpha: Alpha component of the color
   --
   --  Creates a new Cairo_Pattern corresponding to a translucent color.
   --  The color components are floating point numbers in the range 0 to
   --  1.  If the values passed in are outside that range, they will be
   --  clamped.
   --
   --  Return value: the newly created Cairo_Pattern if successful, or
   --  an error pattern in case of no memory.  The caller owns the
   --  returned object and should call Cairo.Pattern.Destroy when
   --  finished with it.
   --
   --  This function will always return a valid pointer, but if an error
   --  occurred the pattern status will be set to an error. To inspect
   --  the status of a pattern use Cairo.Pattern.Status.

   function Create_For_Surface
     (Surface : Cairo_Surface)
      return    Cairo_Pattern;
   --  Surface: the Surface
   --
   --  Create a new Cairo_Pattern for the given surface.
   --
   --  Return value: the newly created Cairo_Pattern if successful, or
   --  an error pattern in case of no memory.  The caller owns the
   --  returned object and should call Cairo.Pattern.Destroy when
   --  finished with it.
   --
   --  This function will always return a valid pointer, but if an error
   --  occurred the pattern status will be set to an error. To inspect
   --  the status of a pattern use Cairo.Pattern.Status.

   function Create_Linear
     (X0   : Gdouble;
      Y0   : Gdouble;
      X1   : Gdouble;
      Y1   : Gdouble)
      return Cairo_Pattern;
   --  X0: x coordinate of the start point
   --  Y0: y coordinate of the start point
   --  X1: x coordinate of the end point
   --  Y1: y coordinate of the end point
   --
   --  Create a new linear gradient Cairo_Pattern along the line defined
   --  by (X0, Y0) and (X1, Y1).  Before using the gradient pattern, a
   --  number of color stops should be defined using
   --  Cairo.Pattern.Add_Color_Stop_Rgb or
   --  Cairo.Pattern.Add_Color_Stop_Rgba.
   --
   --  Note: The coordinates here are in pattern space. For a new pattern,
   --  pattern space is identical to user space, but the relationship
   --  between the spaces can be changed with Cairo.Pattern.Set_Matrix.
   --
   --  Return value: the newly created Cairo_Pattern if successful, or
   --  an error pattern in case of no memory.  The caller owns the
   --  returned object and should call Cairo.Pattern.Destroy when
   --  finished with it.
   --
   --  This function will always return a valid pointer, but if an error
   --  occurred the pattern status will be set to an error.  To inspect
   --  the status of a pattern use Cairo.Pattern.Status.

   function Create_Radial
     (Cx0     : Gdouble;
      Cy0     : Gdouble;
      Radius0 : Gdouble;
      Cx1     : Gdouble;
      Cy1     : Gdouble;
      Radius1 : Gdouble)
      return    Cairo_Pattern;
   --  Cx0: X coordinate for the center of the start circle
   --  Cy0: Y coordinate for the center of the start circle
   --  Radius0: radius of the start circle
   --  Cx1: X coordinate for the center of the end circle
   --  Cy1: Y coordinate for the center of the end circle
   --  Radius1: radius of the end circle
   --
   --  Creates a new radial gradient Cairo_Pattern between the two circles
   --  defined by (Cx0, Cy0, Radius0) and (Cx1, Cy1, Radius1). Before using the
   --  gradient pattern, a number of color stops should be defined using
   --  Cairo.Pattern.Add_Color_Stop_Rgb or Cairo.Pattern.Add_Color_Stop_Rgba.
   --
   --  Note: The coordinates here are in pattern space. For a new pattern,
   --  pattern space is identical to user space, but the relationship
   --  between the spaces can be changed with Cairo.Pattern.Set_Matrix.
   --
   --  Return value: the newly created Cairo_Pattern if successful, or
   --  an error pattern in case of no memory.  The caller owns the
   --  returned object and should call Cairo.Pattern.Destroy when
   --  finished with it.
   --
   --  This function will always return a valid pointer, but if an error
   --  occurred the pattern status will be set to an error.  To inspect
   --  the status of a pattern use Cairo.Pattern.Status.

   function Reference (Pattern : Cairo_Pattern) return Cairo_Pattern;
   --  Pattern: a Cairo_Pattern
   --
   --  Increases the reference count on pattern by one. This prevents
   --  pattern from being destroyed until a matching call to
   --  Cairo.Pattern.Destroy is made.
   --
   --  The number of references to a Cairo_Pattern can be get using
   --  Cairo.Pattern.Get_Reference_Count.
   --
   --  Return value: the referenced Cairo_Pattern.

   procedure Destroy (Pattern : Cairo_Pattern);
   --  Pattern: a Cairo_Pattern
   --
   --  Decreases the reference count on pattern by one. If the result is
   --  zero, then pattern and all associated resources are freed.  See
   --  Cairo.Pattern.Reference.

   function Get_Reference_Count (Pattern : Cairo_Pattern) return Guint;
   --  Pattern: a Cairo_Pattern
   --
   --  Returns the current reference count of pattern.
   --
   --  Return value: the current reference count of pattern.  If the
   --  object is a nil object, 0 will be returned.
   --
   --  Since: 1.4

   function Status (Pattern : Cairo_Pattern) return Cairo_Status;
   --  Pattern: a Cairo_Pattern
   --
   --  Checks whether an error has previously occurred for this
   --  pattern.
   --
   --  Return value: Cairo_Status_Success, Cairo_Status_No_Memory, or
   --  Cairo_Status_Pattern_Type_Mismatch.

   function Get_User_Data
     (Pattern : Cairo_Pattern;
      Key     : access Cairo_User_Data_Key) return System.Address;
   --  Pattern: a Cairo_Pattern
   --  Key: the address of the Cairo_User_Data_Key the user data was
   --  attached to
   --
   --  Return user data previously attached to pattern using the
   --  specified key.  If no user data has been attached with the given
   --  key this function returns System.Null_Address.
   --
   --  Return value: the user data previously attached or System.Null_Address.
   --
   --  Since: 1.4

   function Set_User_Data
     (Pattern   : Cairo_Pattern;
      Key       : access Cairo_User_Data_Key;
      User_Data : System.Address;
      Destroy   : Cairo_Destroy_Func) return Cairo_Status;
   --  Pattern: a Cairo_Pattern
   --  Key: the address of a Cairo_User_Data_Key to attach the user data to
   --  User_Data: the user data to attach to the Cairo_Pattern
   --  Destroy: a Cairo_Destroy_Func which will be called when the
   --  Cairo_Context is destroyed or when new user data is attached using the
   --  same key.
   --
   --  Attach user data to pattern.  To remove user data from a surface,
   --  call this function with the key that was used to set it and Null_Address
   --  for data.
   --
   --  Return value: Cairo_Status_Success or Cairo_Status_No_Memory if a
   --  slot could not be allocated for the user data.
   --
   --  Since: 1.4

   function Get_Type (Pattern : Cairo_Pattern) return Cairo_Pattern_Type;
   --  Pattern: a Cairo_Pattern
   --
   --  This function returns the type a pattern.
   --  See Cairo_Pattern_Type for available types.
   --
   --  Return value: The type of pattern.
   --
   --  Since: 1.2

   procedure Add_Color_Stop_Rgb
     (Pattern : Cairo_Pattern;
      Offset  : Gdouble;
      Red     : Gdouble;
      Green   : Gdouble;
      Blue    : Gdouble);
   --  Pattern: a Cairo_Pattern
   --  Offset: an Offset in the range [0.0 .. 1.0]
   --  Red: Red component of color
   --  Green: Green component of color
   --  Blue: Blue component of color
   --
   --  Adds an opaque color stop to a gradient pattern. The offset
   --  specifies the location along the gradient's control vector. For
   --  example, a linear gradient's control vector is from (X0,Y0) to
   --  (X1,Y1) while a radial gradient's control vector is from any point
   --  on the start circle to the corresponding point on the end circle.
   --
   --  The color is specified in the same way as in Cairo.Set_Source_Rgb.
   --
   --  If two (or more) stops are specified with identical offset values,
   --  they will be sorted according to the order in which the stops are
   --  added, (stops added earlier will compare less than stops added
   --  later). This can be useful for reliably making sharp color
   --  transitions instead of the typical blend.
   --
   --
   --  Note: If the pattern is not a gradient pattern, (eg. a linear or
   --  radial pattern), then the pattern will be put into an error status
   --  with a status of Cairo_Status_Pattern_Type_Mismatch.

   procedure Add_Color_Stop_Rgba
     (Pattern : Cairo_Pattern;
      Offset  : Gdouble;
      Red     : Gdouble;
      Green   : Gdouble;
      Blue    : Gdouble;
      Alpha   : Gdouble);
   --  Pattern: a Cairo_Pattern
   --  Offset: an Offset in the range [0.0 .. 1.0]
   --  Red: Red component of color
   --  Green: Green component of color
   --  Blue: Blue component of color
   --  Alpha: Alpha component of color
   --
   --  Adds a translucent color stop to a gradient pattern. The offset
   --  specifies the location along the gradient's control vector. For
   --  example, a linear gradient's control vector is from (x0,y0) to
   --  (x1,y1) while a radial gradient's control vector is from any point
   --  on the start circle to the corresponding point on the end circle.
   --
   --  The color is specified in the same way as in Cairo_Set_Source_Rgba.
   --
   --  If two (or more) stops are specified with identical offset values,
   --  they will be sorted according to the order in which the stops are
   --  added, (stops added earlier will compare less than stops added
   --  later). This can be useful for reliably making sharp color
   --  transitions instead of the typical blend.
   --
   --  Note: If the pattern is not a gradient pattern, (eg. a linear or
   --  radial pattern), then the pattern will be put into an error status
   --  with a status of Cairo_Status_Pattern_Type_Mismatch.

   procedure Set_Matrix
     (Pattern : Cairo_Pattern;
      Matrix  : access Cairo_Matrix);
   --  Pattern: a Cairo_Pattern
   --  Matrix: a Cairo_Matrix
   --
   --  Sets the pattern's transformation matrix to matrix. This matrix is
   --  a transformation from user space to pattern space.
   --
   --  When a pattern is first created it always has the identity matrix
   --  for its transformation matrix, which means that pattern space is
   --  initially identical to user space.
   --
   --  Important: Please note that the direction of this transformation
   --  matrix is from user space to pattern space. This means that if you
   --  imagine the flow from a pattern to user space (and on to device
   --  space), then coordinates in that flow will be transformed by the
   --  inverse of the pattern matrix.
   --
   --  For example, if you want to make a pattern appear twice as large as
   --  it does by default the correct code to use is:
   --
   --  Cairo.Matrix.Init_Scale (Matrix, 0.5, 0.5);
   --  Cairo.Pattern.Set_Matrix (Pattern, Matrix);
   --
   --  Meanwhile, using values of 2.0 rather than 0.5 in the code above
   --  would cause the pattern to appear at half of its default size.
   --
   --  Also, please note the discussion of the user-space locking
   --  semantics of Cairo_Set_Source.

   procedure Get_Matrix
     (Pattern : Cairo_Pattern;
      Matrix  : access Cairo_Matrix);
   --  Pattern: a Cairo_Pattern
   --  Matrix: return value for the Matrix
   --
   --  Stores the pattern's transformation matrix into matrix.

   procedure Set_Extend (Pattern : Cairo_Pattern; Extend : Cairo_Extend);
   --  Pattern: a Cairo_Pattern
   --  Extend: a Cairo_Extend describing how the area outside of the
   --  pattern will be drawn
   --
   --  Sets the mode to be used for drawing outside the area of a pattern.
   --  See Cairo_Extend for details on the semantics of each extend
   --  strategy.
   --
   --  The default extend mode is Cairo_Extend_None for surface patterns
   --  and Cairo_Extend_PAd for gradient patterns.

   function Get_Extend (Pattern : Cairo_Pattern) return Cairo_Extend;
   --  Pattern: a Cairo_Pattern
   --
   --  Gets the current extend mode for a pattern.  See Cairo_Extend
   --  for details on the semantics of each extend strategy.
   --
   --  Return value: the current extend strategy used for drawing the
   --  pattern.

   procedure Set_Filter (Pattern : Cairo_Pattern; Filter : Cairo_Filter);
   --  Pattern: a Cairo_Pattern
   --  Filter: a Cairo_Filter describing the Filter to use for resizing
   --  the pattern
   --
   --  Sets the filter to be used for resizing when using this pattern.
   --  See Cairo_Filter for details on each filter.
   --
   --  Note that you might want to control filtering even when you do not
   --  have an explicit Cairo_Pattern object, (for example when using
   --  Cairo_Set_Source_Surface). In these cases, it is convenient to
   --  use Cairo_Get_Source to get access to the pattern that cairo
   --  creates implicitly. For example:
   --
   --  Cairo_Set_Source_Surface (Cr, Image, X, Y);
   --  Cairo.Pattern.Set_Filter (Cairo_Get_Source (Cr), Cairo_Filter_Nearest);

   function Get_Filter (Pattern : Cairo_Pattern) return Cairo_Filter;
   --  Pattern: a Cairo_Pattern
   --
   --  Gets the current filter for a pattern.  See Cairo_Filter
   --  for details on each filter.
   --
   --  Return value: the current filter used for resizing the pattern.

   function Get_Rgba
     (Pattern : Cairo_Pattern;
      Red     : access Gdouble;
      Green   : access Gdouble;
      Blue    : access Gdouble;
      Alpha   : access Gdouble)
      return    Cairo_Status;
   --  Pattern: a Cairo_Pattern
   --  Red: return value for Red component of color, or null
   --  Green: return value for Green component of color, or null
   --  Blue: return value for Blue component of color, or null
   --  Alpha: return value for Alpha component of color, or null
   --
   --  Gets the solid color for a solid color pattern.
   --
   --  Return value: Cairo_Status_Success, or
   --  Cairo_Status_Pattern_Type_Mismatch if the pattern is not a solid
   --  color pattern.
   --
   --  Since: 1.4

   function Get_Surface
     (Pattern : Cairo_Pattern;
      Surface : Cairo_Surface)
      return    Cairo_Status;
   --  Pattern: a Cairo_Pattern
   --  Surface: return value for Surface of pattern, or null
   --
   --  Gets the surface of a surface pattern.  The reference returned in
   --  surface is owned by the pattern; the caller should call
   --  Cairo.Surface.Reference if the surface is to be retained.
   --
   --  Return value: Cairo_Status_Success, or
   --  Cairo_Status_Pattern_Type_Mismatch if the pattern is not a surface
   --  pattern.
   --
   --  Since: 1.4

   function Get_Color_Stop_Rgba
     (Pattern : Cairo_Pattern;
      Index   : Gint;
      Offset  : access Gdouble;
      Red     : access Gdouble;
      Green   : access Gdouble;
      Blue    : access Gdouble;
      Alpha   : access Gdouble)
      return    Cairo_Status;
   --  Pattern: a Cairo_Pattern
   --  Index: Index of the stop to return data for
   --  Offset: return value for the Offset of the stop, or null
   --  Red: return value for Red component of color, or null
   --  Green: return value for Green component of color, or null
   --  Blue: return value for Blue component of color, or null
   --  Alpha: return value for Alpha component of color, or null
   --
   --  Gets the color and offset information at the given index for a
   --  gradient pattern.  Values of index are 0 to 1 less than the number
   --  returned by Cairo.Pattern.Get_Color_Stop_Count.
   --
   --  Return value: Cairo_Status_Success, or Cairo_Status_Invalid_Index
   --  if index is not valid for the given pattern.  If the pattern is
   --  not a gradient pattern, Cairo_Status_Pattern_Type_Mismatch is
   --  returned.
   --
   --  Since: 1.4

   function Get_Color_Stop_Count
     (Pattern : Cairo_Pattern;
      Count   : access Gint)
      return    Cairo_Status;
   --  Pattern: a Cairo_Pattern
   --  Count: return value for the number of color stops, or NULL
   --
   --  Gets the number of color stops specified in the given gradient
   --  pattern.
   --
   --  Return value: Cairo_Status_Success, or
   --  Cairo_Status_Pattern_Type_Mismatch if pattern is not a gradient
   --  pattern.
   --
   --  Since: 1.4

   function Get_Linear_Points
     (Pattern : Cairo_Pattern;
      X0      : access Gdouble;
      Y0      : access Gdouble;
      X1      : access Gdouble;
      Y1      : access Gdouble)
      return    Cairo_Status;
   --  Pattern: a Cairo_Pattern
   --  X0: return value for the x coordinate of the first point, or null
   --  Y0: return value for the y coordinate of the first point, or null
   --  X1: return value for the x coordinate of the second point, or null
   --  Y1: return value for the y coordinate of the second point, or null
   --
   --  Gets the gradient endpoints for a linear gradient.
   --
   --  Return value: Cairo_Status_Success, or
   --  Cairo_Status_Pattern_Type_Mismatch if pattern is not a linear
   --  gradient pattern.
   --
   --  Since: 1.4

   function Get_Radial_Circles
     (Pattern : Cairo_Pattern;
      X0      : access Gdouble;
      Y0      : access Gdouble;
      R0      : access Gdouble;
      X1      : access Gdouble;
      Y1      : access Gdouble;
      R1      : access Gdouble)
      return    Cairo_Status;
   --  Pattern: a Cairo_Pattern
   --  X0: return value for the x coordinate of the center of the first
   --  circle, or null
   --  Y0: return value for the y coordinate of the center of the first
   --  circle, or null
   --  R0: return value for the radius of the first circle, or null
   --  X1: return value for the x coordinate of the center of the second
   --  circle, or null
   --  Y1: return value for the y coordinate of the center of the second
   --  circle, or null
   --  R1: return value for the radius of the second circle, or null
   --
   --  Gets the gradient endpoint circles for a radial gradient, each
   --  specified as a center coordinate and a radius.
   --
   --  Return value: Cairo_Status_Success, or
   --  Cairo_Status_Pattern_Type_Mismatch if pattern is not a radial
   --  gradient pattern.
   --
   --  Since: 1.4

private

   pragma Import (C, Create_Rgb, "cairo_pattern_create_rgb");
   pragma Import (C, Create_Rgba, "cairo_pattern_create_rgba");
   pragma Import (C, Create_For_Surface, "cairo_pattern_create_for_surface");
   pragma Import (C, Create_Linear, "cairo_pattern_create_linear");
   pragma Import (C, Create_Radial, "cairo_pattern_create_radial");
   pragma Import (C, Reference, "cairo_pattern_reference");
   pragma Import (C, Destroy, "cairo_pattern_destroy");
   pragma Import
     (C,
      Get_Reference_Count,
      "cairo_pattern_get_reference_count");
   pragma Import (C, Status, "cairo_pattern_status");
   pragma Import (C, Get_User_Data, "cairo_pattern_get_user_data");
   pragma Import (C, Set_User_Data, "cairo_pattern_set_user_data");
   pragma Import (C, Get_Type, "cairo_pattern_get_type");
   pragma Import (C, Add_Color_Stop_Rgb, "cairo_pattern_add_color_stop_rgb");
   pragma Import
     (C,
      Add_Color_Stop_Rgba,
      "cairo_pattern_add_color_stop_rgba");
   pragma Import (C, Set_Matrix, "cairo_pattern_set_matrix");
   pragma Import (C, Get_Matrix, "cairo_pattern_get_matrix");
   pragma Import (C, Set_Extend, "cairo_pattern_set_extend");
   pragma Import (C, Get_Extend, "cairo_pattern_get_extend");
   pragma Import (C, Set_Filter, "cairo_pattern_set_filter");
   pragma Import (C, Get_Filter, "cairo_pattern_get_filter");
   pragma Import (C, Get_Rgba, "cairo_pattern_get_rgba");
   pragma Import (C, Get_Surface, "cairo_pattern_get_surface");
   pragma Import
     (C,
      Get_Color_Stop_Rgba,
      "cairo_pattern_get_color_stop_rgba");
   pragma Import
     (C,
      Get_Color_Stop_Count,
      "cairo_pattern_get_color_stop_count");
   pragma Import (C, Get_Linear_Points, "cairo_pattern_get_linear_points");
   pragma Import (C, Get_Radial_Circles, "cairo_pattern_get_radial_circles");

end Cairo.Pattern;