text:
#9 Angel Sharks | Deep Sea | Sawfish
Lauren de Vos
The Nature of Science index
The Nature of Science
How we choose to see the sea has profound consequences for the way we will protect it. While statistics and mathematical models give us vital projections of the state of our oceans, there is a case for knowing the oceans in all the intricacy and familiarity of the natural history tradition. Lauren De Vos talks to conservationists about getting to know the ocean on its own terms.
Immersion, observation and connection: detailing life on earth takes time, but choosing to see nature on its own terms often yields surprising rewards.
Photo by Michael Scholl
On 12 March 1940, the purse-seiner Western Flyer sailed for the Gulf of California. With shiny engines and a lick of green paint, the Flyer was taking her crew to document marine life in the Sea of Cortez. Together with self-taught biologist Ed Ricketts, the Nobel Prize-winning novelist John Steinbeck was behind the expedition and in The Log from the Sea of Cortez he gives an account of their six-week voyage. He details their foray into the natural history of the sea, seeking a connection to the ocean that conjured the curiosity of Darwin and the sense of adventure of Alexander von Humboldt.
The expedition this unlikely duo embarked upon was underpinned by three important pillars: immersion, observation and connection. Steinbeck states quite clearly that he wishes to watch and record, ignoring scientific 'strictures', and in doing so he evokes an image of a natural historian that is familiar, if a little antiquated. A lone figure wading through a stream, noting the birds in the trees that line its banks. Another striding the shorelines, bending to root around in a rock pool or tilting the head skyward to observe a gull wheeling above. Tidy boxes of specimens, labelled in a neat hand, and carefully pinned insect collections. In any image there is a common thread: attention to the details of life on earth. Some time before the filters of statistics and society colour our observations, there is clarity that stems from curiosity. Conservation biologist Thomas Fleischner writes of the value in this: 'Natural history helps us see the world, and thus ourselves, more accurately. Moreover, it encourages and inspires better stewardship of the Earth.'
'I see it very much as in the Aristotelian approach to science. It's a case of "look at the evidence and take it from there", rather than conjuring up wild ideas and trying to impose them on what you see,' explains Colin Attwood, an associate professor of marine biology at the University of Cape Town. The definition of natural history research is broad, he says. Simply put, it's the study of animals and plants in their environment, with the emphasis on observation rather than testing hypotheses. 'It's much wider than just taxonomy. It really is about the life of the animals and the plants. It's providing the details of their existence.'
It's in those details that a mind like Colin's revels. His office shelves are filled with well-thumbed books with titles like Sharks of the World, while a skyline of student reports rises from his desk like a haphazardly built paper city. The unmistakable scent of ethanol seeps from countless jars preserving everything from the ear bones of fish to the ghostly remains of gobies and spiny dogfish.
There is, however, a problem. There's a good chance that our idea of the biologist as someone immersed for years in the wilderness deciphering an ecological puzzle will be replaced by the image of a deskbound scientist. Reed Noss sounded the alarm in 'The naturalists are dying off', his 1996 editorial for Conservation Biology. He was concerned that natural history had been sidelined. 'Scientific abstractions and fancy technologies are no substitutes for the wisdom that springs from knowing the world and its creatures in intimate, loving detail,' laments Noss. His views are echoed across editorials and discussion pieces in the scientific literature that detail the loss of funding – and favour – for natural history, where university field trips are increasingly scant and a natural history focus is considered 'a relict discipline, a holdover from the era of Victorian cabinets and private butterfly collections'.
Lauren de Vos Project Leader
The days, weeks and months spent on D'Arros Island and St Joseph Atoll in the Seychelles have seen Clare and Ryan Daly tuning into the subtle cues of the ecosystem, with startling results. Photo by Clare Keating Daly
Photo by Olivier Born
'People just don't have time to do what Jane Goodall did,' muses Colin. 'As much as I'd like to sit on the ocean every day, I wouldn't be able to pay my way. Of course, there are people who do that, but they tend to be fishermen or others who have a job out there.' As Noss notes, the reality of current funding models, universities and the hypothesis-driven approach means that scientists find themselves less often in the field and more often at a desk, teaching in classrooms and attending to institutional and funding administration.
Another shift that has minimised natural history lies in the abashed reticence modern scientists have when they call themselves ecologists or biologists, but rarely natural historians. Charles Darwin, Alfred Russel Wallace and Alexander von Humboldt had no problem calling themselves natural historians; how did it become so unfashionable?
'Part of the problem started when statisticians told us [biologists] that our raw observations were unreliable,' observes Colin. 'Though we saw it in front of our eyes, it didn't paint the general picture because there was some bias in our observational structure. And therein crept the need for rigorous statistical treatment of absolutely everything that we observe and measure. Now we find that students spend more time trying to get to grips with the statistical treatments than with the observations themselves. They're told that before they can trust their observations, they've got to learn all this other stuff. So it has downplayed the prevalence of the actual natural history activity itself. I'm not saying that the move to the quantitative sciences was misplaced. It is absolutely necessary, but it should never have been at the expense of natural history.'
Much of natural history has to do with how we choose to see nature. 'Seeing versus looking at,' notes Clare Daly, the programme director of the D'Arros Research Centre in the Seychelles. 'One of the things that has been so interesting about living on D'Arros full-time has been the chance to see the slightest fluctuation in daily happenings, having the chance to really immerse ourselves. That means that we find things: the first national record of a seabird, potential new species of fish, the first regional record of a parasitic leech and even, can you imagine, a blue whale!' Clare lives on the island with her husband, research director Dr Ryan Daly. 'This is just from being here, present, and opening our eyes. If we had come as researchers focused on a specific project, we might have missed these things.'
Colin echoes her point. 'Hypothesis testing has made scientists focus on an idea they have and then go out and test it in a very narrow way. All kinds of other information enter that data-collection process, but it is not useful for that investigation. So people have an idea of what they're looking for, but if they went in there with a blank cheque, they might absorb a lot of other information.'
In trying to understand the species she studies, Félicie Dhellemmes has become a firm advocate for the conservation of sharks.
Photo by Sirachai Arunrugstichai
'Knowing a place well enough to know what's out of place, and having the time to look at, and within, the ocean every single day, makes a difference,' maintains Clare. Her and Ryan's experience of this on D'Arros has led to some startling new discoveries. 'Suddenly we stumble upon a fish we can't identify. Then, oh my gosh, we find out maybe it's even a species new to science.' She understands that sometimes there is a sense of urgency that fuels hypothesis-driven research and that in today's conservation climate, where a strong basis of scientific evidence is critical to underpin management decisions, such research is without doubt a necessity. It is not, however, the only way to make leaps in our knowledge. 'We would have never imagined discovering new fish species just by being more observant. You think you'd have to go on an expedition to do that, but now we're collecting specimens and speaking with taxonomists. It's pretty exciting.'
Clare is animated about the full spectrum of information available when not testing precast ideas. 'I believe that the only way you can do this is through immersion in the ecosystem,' she says.
Natural historians have been synonymous with travel and long periods in wilderness. Biologist George Schaller titled one of his memoirs A Naturalist and Other Beasts: Tales from a Life in the Field. How different his contribution to our understanding of lions, gorillas and giant pandas might have been if his biography had been called A Life at my Desktop! With time, funding and truly wild places at a premium nowadays, the 21st-century equivalent of experiences like those of Schaller, Goodall, Darwin and Von Humboldt might lie in the biological field station. Long-term monitoring sites like D'Arros Research Centre keep a steady stream of natural history research going. This idea of accumulated knowledge is a topic of importance for Félicie Dhellemmes, a PhD student based at the Bimini Biological Field Station in The Bahamas. Known affectionately to resident students past and present as the Shark Lab, the field station is one of the longest-running shark research stations in the world.
Félicie investigates personality in juvenile lemon sharks and aims to understand what the ecological consequences of personality might be. 'My entire project relies on the strong foundations provided by the long-term work of the Bimini Biological Field Station,' she explains. 'Working on shark personality is like working with icing: you need a cake to spread it on. My research is one of the last elements needed for a clear picture and it can usually only be done when knowledge about the behaviour of the study species is already available. I rely heavily on this accumulation of knowledge.' The baseline established by decades of work at Bimini Biological Field Station – that steady, cumulative stream of information that is only possible when an area and its inhabitants are observed for long periods of time – provides the perfect springboard for Félicie to launch into more daring questions.
There is delight in the details, and in the diversity, that observing nature brings to the fore. Clare Daly's passion for ornithology has blossomed on D'Arros Island, where the astounding birdlife is but one piece in the complex ecological puzzle that is the Indian Ocean archipelago.
'I believe that I get a better grip on my project and am able to understand things that are still hidden by statistics at that point,' says Félicie of spending immersive periods of time in the field. The haze of statistics provides a necessary quantitative basis for what biologists observe. Less often emphasised is what Félicie speaks of: having spent enough time observing her study site and subjects to have a gut feel that enables her to interpret the numerical results run through the gamut of statistical wizardry. This gives Félicie the ability to trust her dataset (Do the numbers actually reflect what I've observed? Does this make both mathematical and ecological sense?). It also gives a little wiggle room to detect other happenings in the environment that may be outside the scope of her current study, but could prove useful in ways she's not yet figured out.
Reed Noss argues that the value of natural history lies not only in science, but in the conservation ethos it engenders. 'Empathy for living things comes from many years of observing them in their natural environments, which is why field biologists have always been among the most adamant defenders of wild Nature,' he writes in the same editorial. Félicie agrees that her time at the Shark Lab has changed the way she sees sharks: 'I advocate for them at family dinners, in the bus, at the bar… I even recently went to talk to 250 kids at a school!' She also points out that many scientists do good work in spite of obstacles to immersive field time. 'I'm very lucky to have intensive field work and great contact with sharks,' she says. 'Many scientists don't have this opportunity, but their science is just as important. I'm always impressed by scientists who rarely get to meet their study subject and are still such important actors in the conservation of their species.'
Marine researcher Peter Musembi knows only too well that time spent immersed in an ecosystem can result in deep knowledge about the ocean. Based in Watamu, Kenya, Peter works with faith-based organisation A Rocha to restore degraded natural areas. Rather than being aimed solely at publication in scientific journals, Peter's research is fed back to local community members. 'About 70% of the work we do is with people,' he notes. 'Most of these people are highly dependent on natural resources, so we cannot separate them from their environment.' It is perhaps not the same kind of connection that biologists have with the ecosystem, but it is a connection no less intimate. In an age when biologists are more often in front of their computers than at the helm of a research boat, there is a case for addressing how to unlock natural history knowledge embedded in those who spend their lives connected to the ocean.
Peter's work has given him unique insights into how people in Watamu interpret the ocean. 'Our connection to the ocean is through biology: measuring, counting,' he offers. 'Some of these locals have never gone to school, but they can describe the tides in such a way that's comparable to a tide table. I don't think biologists fully understand how they can do this, but they've grown up observing the ocean.'
With wilderness at a premium today, natural history finds its place in the museums and university cabinets around the world. In a strange juxtaposition, the Hayden Planetarium and American Museum of Natural History forms a kind of time capsule to house the intricacies of hundreds of years spent deciphering life on planet earth, set against the backdrop of a neon New York skyline.
Photo by George Steinmetz | National Geographic Creative
For Peter, acknowledging the depth of knowledge that comes from a lifetime of observation is as much about respecting different ways of seeing the sea as it is about its value for biologists. 'This is information that, for a scientist, is sometimes very easy to push away. But I think it's very useful.' Peter and his ilk are biologists of a different kind; not, perhaps, spending time in the field as natural historians themselves, but realising that all of us are, innately, natural historians to begin with and may have insights to offer.
In Peter's experience, combining local knowledge with modern science is powerful. For the people of Watamu, zambarani is the tiger shark and papashilingi is the whale shark, whereas most other sharks are lumped together as a group. 'I think that's because they have a special connection to the species they've named, either through cultural or spiritual affiliation or because they're target species,' he explains. He conducts his own biodiversity surveys in the region and shares his findings on the full spectrum of species with the community. 'I think that there should be a connection between the two,' he says of these disparate knowledge reserves. 'If we observe coral bleaching, the local people have seen that too and know that when the water is warm, the coral bleaches and becomes white. What we can do is add to that, explaining what it is that happens, and that feeds into and develops their knowledge base. It's important that the two knowledge systems feed into one another and maintain some holistic view of the general field.'
Clare's quiet personal philosophy ties all these insights together to make the simplest, but perhaps strongest case for a return to natural history. 'As children we were taught that it wasn't just a tree; it was always an oak, or an elm, or a maple tree. I think that has stuck with me. I don't know how to get more people to be like that, but I'd imagine that this way of seeing nature, rather than glazing over and saying "I know this place", could be important.' Her point speaks to the spirit of Steinbeck and Rickett's expedition nearly eight decades ago. Giving something a name is to acknowledge it. It establishes a vital connection. The more disconnected from nature we become, the greater the need to cultivate an ability to observe deeply and therefore acknowledge other species. 'I remember hearing the Zulu greeting Sawubona for the first time when I moved to South Africa. It means "I see you",' adds Clare. 'I think this applies to the natural world: I see you for what you are, not what I think you are. I think it's so much more enriching to take a perspective of discovery rather than familiarity.'
On 13 April 1940, the Western Flyer and her motley crew charted a new course to the north. The little purse-seiner pitched and rolled homeward as the sky darkened and Steinbeck reflected on truths he had gleaned from the expedition. New insights into other species' lives helped Steinbeck and Ricketts find something that human beings battle with most today: our place in the ecosystem alongside Nature and its inhabitants. When we choose to look carefully enough, we can relate our life to other life on this planet and find our place within its complex fabric. Moulded by his foray into natural history, Steinbeck's philosophical insights cut gently to the core of a profound truth and prompt us to think about the route that we shape for a future for all life on earth: we are nothing more extraordinary than the starfish, or the urchin, or the humpback whale, and yet we are just as extraordinary as these other lives.
Fleischner TL. 2011. Why Natural History Matters. The Journal of Natural History Education and Experience. 5: 21-24.
Noss R. 1996. The naturalists are dying off. Conservation Biology. 10: 1-3.
Wilcove D & Eisner T. 2000. The impending extinction of natural history. Chronicle of Higher Education. 47: B24
Read article Inside Stories Exploring Personality in Sharks Félicie Dhellemmes
Read article Inside Stories Better for sharks, better for people Clare Keating Daly
Read article Articles Science at the far end of the world Lauren de Vos, Naiti Morales Serrano
Read article Articles Good science and recognising recoveries Chris Lowe, Gregory Gilbert-Lodge

redpajama_set_name: RedPajamaCommonCrawl


Shop the World' einaudi s Largest Sheet Music Selection today at scribd Sheet Music Plus. Ludovico scribd Einaudi Free listening - listen free to Ludovico Einaudi: Primavera, ludovico Divenire primavera 363, reviews videos 757 listeners. Author: Stephan Huck Created Date: 7/ 11/ 1: 53: 43 PM. Ludovico Einaudi grade standard? Ludovico einaudi primavera sheet music scribd reviews. " Scribd is a way to easily put your documents online. Ludovico Einaudi: Islands - scribd scribd Essential Einaudi Solo ludovico primavera Piano:. ludovico einaudi: help a ludovico philistine out Rate my remix of Ludovico Einaudi - primavera Night Your Top 5 Albums?
From piano sheet music to reviews einaudi flute sheet music choral sheet music , Christian sheet music to Jazz primavera sheet music, , octavos to scribd guitar tabs, beyond you' ll find it here. Can' t find it anywhere! Please try again later. einaudi Descrição do produto O material da capa é plástico TPU Premium reviews material flexível resistente e de maior qualidade que o silicone primavera comum. Another composition by Ludovico Einaudi based on the minimalist style, featuring the piano in its orignal version. ludovico piano sheet music, guitar. Download and Print Ascolta sheet music primavera for piano solo by Ludovico Einaudi. Limited edition CD and.
We offer a huge library of accurate affordable artist- approved arrangements for 20 different instruments. pdf), Text file (. New Music Reviews. a tempo più lento a primavera tempo acc. Although Einaudi would prefer not to be labeled as any particular type of genre, he primavera reviews is sometimes referred to scribd as Minimalist.
einaudi 12 gentle piano instrumentals for fans of Ludovico Einaudi. scribd What grade is primavera Passaggio reviews scribd ( piano)? Ludovico scribd Einaudi' s profile including the latest music albums, songs, music videos more updates. Ludovico Einaudi- Primavera Sheet Music. Any piano songbook recommendations?
There was a ludovico scribd problem filtering reviews right now. Antarctica : : Antarctic Treaty System. Divenire sheet music ludovico - Piano sheet music by Ludovico Einaudi: Chester Music. We' re your online reviews sheet music source for music books songbooks, music scores, music scribd sheets, choral sheet einaudi music more! com/ ludovicoeinaudispace.
Ludovico Einaudi Divenire scribd - Scribd - Ludovico Einaudi Divenire - Free download primavera as PDF File (. Ludovico einaudi primavera sheet music scribd reviews. United States: Charlotte ( Nc) Nagaoka Guinea- Bissau; Czestochowa, Brazil; ludovico Bissau, Japan; Cachoeiro De Itapemirim Poland. As capas são impressas com reviews a mais alta tecnologia! Electronics also ludovico is a big part of his ludovico musical thought.
txt) divenire ludovico einaudi. Ludovico Einaudi - Una Mattina Displaying the top 1 out of 2 reviews for " Una Mattina" - See All 2 Reviews In order to write a review on digital sheet music you must first have purchased the item. Belo Horizonte | Brazil. What is this acoustic piece?
Mix - Chopin - Spring Waltz ( Mariage d' Amour) [ Piano Tutorial] ( Synthesia/ Sheet Music) YouTube Top 5 Piano Airport Amazing and Beautiful Performances - Duration: 8: 23. Valuable 548, 069 views. Wait for the sheet music viewer to load in a few seconds. Click Here if it doesn' t refresh within 20 seconds.
Ludovico Einaudi: Primavera for piano four hands sheet music. High Quality and Interactive, transposable in any key, play along and easy practice by changing the tempo, and more.


text:
A&E, WWE partner on projects for 'Biography' banner
WWE Studios is producing a roster of documentaries showcasing some of WWE Superstars most iconic faces for A&E Network's acclaimed 'Biography' strand. Each feature-length film will boast new and archival interviews ...
WWE Studios is producing a roster of documentaries showcasing some of WWE Superstars most iconic faces for A&E Network's acclaimed 'Biography' strand.
Each feature-length film will boast new and archival interviews along with never-before-seen footage, giving fans an in-depth look at the early lives, rise to fame and careers of some of WWE's well-known stars. The five original two-hour documentaries will spotlight WWE's Randy Savage, Roddy Piper, Booker T, Stone Cold Steve Austin and Shawn Michaels.
The first three films, currently in pre-production and slated to air in spring 2020 are below with summaries courtesy of A&E:
Biography: "Macho Man" Randy Savage
Directed by Billy Corben, this film will tell the story of Randy Savage, one of the most colorful and charismatic wrestlers to ever step foot inside the ring. With two WWE Championships, four WCW World Championships and a 14-month reign as Intercontinental Champion, Savage became known for his famous catch phrases, gregarious personality and the flashy robes he wore into the ring. He was inducted into the WWE Hall of Fame in 2015.
Biography: "Rowdy" Roddy Piper
Emmy and Peabody Award-winning director Joe Lavine turns his lens on "Rowdy" Roddy Piper, considered one of WWE's greatest villains. During his Hall of Fame career, Piper played the role of the antagonist against a number of WWE greats and garnered more than 30 championships.
Biography: Booker T
Acclaimed director George Roy spotlights multiple-award winner Booker T in his film. Brooker T is an 11-time WCW Tag Team Champion, two-time inductee into the WWE Hall of Fame, and more. In addition to his wrestling career, Booker T also went on to become a commentator for WWE's weekly programming.
Directors for Biography: Stone Cold Steve Austin and Biography: Shawn Michaels will be announced at a later date. These films will bow on A&E in 2021.
The WWE 'Biography' documentaries are produced by WWE Studios for A&E Network. Executive producers for WWE Studios are Kevin Dunn, Chris Kaiser and Richard Lowell. Executive producers for A&E Network are Elaine Frontain Bryant and Brad Abramson.
(Photos courtesy of WWE)
A&E, Biography, Brad Abramson, Chris Kaiser, Elaine Frontain Bryant, Kevin Dunn, Richard Lowell, WWE, WWE Studios
A&E to air documentary on LA Riots
A&E reboots 'Biography' with Biggie and Tupac docs
A&E readies Left/Right's "David Cassidy: The Last Session"
A&E to premiere TLC doc special under 'Biography' strand


text:
/**************************************************************************//**
 * RMagick declarations and definitions.
 *
 * Copyright © 2002 - 2009 by Timothy P. Hunter
 *
 * Changes since Nov. 2009 copyright © by Benjamin Thomas and Omer Bar-or
 *
 * @file     rmagick.h
 * @version  $Id: rmagick.h,v 1.282 2010/02/16 06:50:28 baror Exp $
 * @author   Tim Hunter
 ******************************************************************************/

#ifndef _RMAGICK_H_
#define _RMAGICK_H_

//! Suppress warnings about deprecated functions on Windows
#define _CRT_SECURE_NO_DEPRECATE 1

#include <assert.h>
#include <stdio.h>
#include <ctype.h>
#if defined(HAVE_STDINT_H)
#include <stdint.h>
#endif
#include <stdlib.h>
#include <math.h>
#include <time.h>
#if defined(HAVE_SYS_TYPES_H)
#include <sys/types.h>
#endif
#include "ruby.h"
#if defined(HAVE_RUBY_IO_H)
#include "ruby/io.h"        // >= 1.9.0-5
#else
#include "rubyio.h"
#endif

// Undef Ruby's versions of these symbols
#undef PACKAGE_VERSION
#undef PACKAGE_NAME
#undef PACKAGE_STRING
#undef PACKAGE_BUGREPORT
#undef PACKAGE_TARNAME
#undef WORDS_BIGENDIAN

#include "magick/MagickCore.h"
#include "magick/magick-config.h"

// Undef ImageMagick's versions of these symbols
#undef PACKAGE_STRING

#include "extconf.h"

//! For quoting preprocessor symbols
#define Q2(q) #q
//! For quoting preprocessor symbols
#define Q(q) Q2(q)

//! Trace new image creation in bang methods
#define UPDATE_DATA_PTR(_obj_, _new_) \
    do { (void) rm_trace_creation(_new_);\
    DATA_PTR(_obj_) = (void *)(_new_);\
    } while(0)

// Handle Quantum <-> Ruby Numeric object conversion
#if (MAGICKCORE_QUANTUM_DEPTH == 8 || MAGICKCORE_QUANTUM_DEPTH == 16)
#define QUANTUM2NUM(q) INT2FIX((q)) /**< Quantum -> Ruby Numeric conversion */
#define NUM2QUANTUM(n) (Quantum)NUM2UINT((n)) /**< Quantum <- Ruby Numeric conversion */
#elif (MAGICKCORE_QUANTUM_DEPTH == 32)
#define QUANTUM2NUM(q) UINT2NUM((q)) /**< Quantum -> Ruby Numeric conversion */
#define NUM2QUANTUM(n) (Quantum)NUM2UINT((n)) /**< Quntum <- Ruby Numeric conversion */
#elif (MAGICKCORE_QUANTUM_DEPTH == 64)
#define QUANTUM2NUM(q) ULL2NUM((q)) /**< Quantum -> Ruby Numeric conversion */
#define NUM2QUANTUM(n) (Quantum)NUM2ULL((n)) /**< Quntum <- Ruby Numeric conversion */
#else
#error Specified MAGICKCORE_QUANTUM_DEPTH is not supported.
#endif
//! Convert user-supplied objects to Quantum
#define APP2QUANTUM(n) rm_app2quantum((n))

//! degrees to radians conversion
#undef DegreesToRadians     // defined in ImageMagick.h in 6.0.2
#define DegreesToRadians(x) ((x)*3.14159265358979323846/180.0)

//! pixel intensity calculation
#define PIXEL_INTENSITY(q) ((Quantum)(0.299*(q)->red + 0.587*(q)->green + 0.114*(q)->blue + 0.5))

//! find maximum of longs
#define LMAX(a,b) ((((long)(a))>((long)(b)))?((long)(a)):((long)(b)))
//! find maximum of floats
#define FMAX(a,b) ((((double)(a))>((double)(b)))?((double)(a)):((double)(b)))
//! find minimum of floats
#define FMIN(a,b) ((((double)(a))<=((double)(b)))?((double)(a)):((double)(b)))

#define RMAGICK_PI 3.14159265358979  /**< pi */

//! round to Quantum
#define ROUND_TO_QUANTUM(value) ((Quantum) ((value) > (Quantum)QuantumRange ? QuantumRange : (value) + 0.5))

// Ruby 1.9.0 changed the name to rb_frame_this_func
#if defined(HAVE_RB_FRAME_THIS_FUNC)
#define THIS_FUNC() rb_frame_this_func() /**< get the Ruby function being called */
#else
#define THIS_FUNC() rb_frame_last_func() /**< get the Ruby function being called */
#endif

// GetReadFile doesn't exist in Ruby 1.9.0
#if !defined(GetReadFile)
#define GetReadFile(fptr) rb_io_stdio_file(fptr) /**< Ruby read file pointer */
#define GetWriteFile(fptr) rb_io_stdio_file(fptr) /**< Ruby write file pointer */
#endif

// rb_io_t replaces OpenFile in Ruby 1.9.0
#if defined(HAVE_RB_IO_T)
#undef OpenFile
#define OpenFile rb_io_t /**< Ruby open file */
#endif

// These macros are required in 1.9.1 but aren't defined prior to 1.8.6.
#if !defined(RSTRING_LEN)
#define RSTRING_LEN(s) (RSTRING((s))->len) /**< Ruby string length */
#endif
#if !defined(RSTRING_PTR)
#define RSTRING_PTR(s) (RSTRING((s))->ptr) /**< Ruby string pointer */
#endif

// Backport these two macros to 1.8
#if !defined(RARRAY_LEN)
#define RARRAY_LEN(a) RARRAY((a))->len /**< Ruby array length */
#endif
// Matz says this macro is read-only! (see http://www.ruby-forum.com/topic/146072)
#if !defined(RARRAY_PTR)
#define RARRAY_PTR(a) RARRAY((a))->ptr /**< Ruby array pointer */
#endif

// Backport this macro to 1.8.6
#if !defined(RB_GC_GUARD)
#define RB_GC_GUARD(x) (x)
#endif

//! Convert a C string to a Ruby symbol. Used in marshal_dump/marshal_load methods
#define CSTR2SYM(s) ID2SYM(rb_intern(s))
//! Convert a C string to a Ruby String, or nil if the ptr is NULL
#define MAGICK_STRING_TO_OBJ(f) (f) ? rb_str_new2(f) : Qnil
/**
 * Copy the C string in a Ruby String object to ImageMagick memory, or set the
 * pointer to NULL if the object is nil.
 */
#define OBJ_TO_MAGICK_STRING(f, obj) \
    if ((obj) != Qnil)\
        magick_clone_string(&f, RSTRING_PTR(obj));\
    else\
        f = NULL;

/** ImageMagick 6.5.7 replaced DestroyConstitute with
 * ConstituteComponentTerminus. Both have the same signature.
 */
#if defined(HAVE_CONSTITUTECOMPONENTTERMINUS)
#define DestroyConstitute(void) ConstituteComponentTerminus(void)
#endif

/** ImageMagick 6.5.9 replaced MagickLibSubversion with
 * MagickLibAddendum.
 */
#if defined(HAVE_MAGICKLIBADDENDUM)
#define MagickLibSubversion MagickLibAddendum
#endif

/** IM 6.4.1 replaced AllocateImage with AcquireImage.
 * Both have the same signature.
 */
#if !defined(HAVE_ACQUIREIMAGE)
#define AcquireImage(info) AllocateImage(info)
#endif

// ImageLayerMethod replaced MagickLayerMethod starting with 6.3.6
#if defined(HAVE_TYPE_IMAGELAYERMETHOD)
#define LAYERMETHODTYPE ImageLayerMethod /**< layer method */
#define CLASS_LAYERMETHODTYPE Class_ImageLayerMethod /**< layer method class */
#define LAYERMETHODTYPE_NAME ImageLayerMethod_name /**< layer method name */
#define LAYERMETHODTYPE_NEW  ImageLayerMethod_new /**< new layer method */
#else
#define LAYERMETHODTYPE MagickLayerMethod /**< layer method */
#define CLASS_LAYERMETHODTYPE Class_MagickLayerMethod /**< layer method class */
#define LAYERMETHODTYPE_NAME MagickLayerMethod_name /**< layer method name */
#define LAYERMETHODTYPE_NEW  MagickLayerMethod_new /**< new layer method */
#endif

typedef ImageInfo Info; /**< Make type name match class name */
typedef PixelPacket Pixel; /**< Make type name match class name */

//! Montage
typedef struct
{
    CompositeOperator compose; /**< compose operator */
    MontageInfo *info; /**< montage info */
} Montage;

// Draw
//! tmp filename linked list
struct TmpFile_Name
{
    struct TmpFile_Name *next; /**< the next tmp filename */
    char name[1]; /**< expandable char array for this filename */
};

//! Draw class.
typedef struct
{
    DrawInfo *info;             /**< the DrawInfo struct */
    VALUE primitives;           /**< the primitive string */
    struct TmpFile_Name *tmpfile_ary; /**< the tmp filenames */
    PixelPacket shadow_color;   /**< PolaroidOptions#shadow_color */
} Draw;             // make the type match the class name

// Enum
//! enumerator over Magick ids
typedef struct
{
   ID id; /**< the Magick id */
   int val; /**< its value */
} MagickEnum;

#undef False    // defined in deprecate.h in 6.0.2
#undef True     // defined in deprecate.h in 6.0.2
//! generic boolean
typedef enum
{
    False = 0, /**< false */
    True = 1   /**< true */
} rm_boolean;

//! enumerator over weight types
typedef enum {
    AnyWeight,     /**< any */
    NormalWeight,  /**< normal */
    BoldWeight,    /**< bold */
    BolderWeight,  /**< bolder */
    LighterWeight  /**< lighter */
} WeightType;

//! Draw#text_anchor AnchorType argument
typedef enum {
    StartAnchor = 1,  /**< start */
    MiddleAnchor = 2, /**< midle */
    EndAnchor = 3     /**< end */
} AnchorType;

//! dumped image
typedef struct
{
    unsigned char id;   /**< Dumped image id = 0xd1 */
    unsigned char mj;   /**< Major format number = 1 */
    unsigned char mi;   /**< Minor format number = 0 */
    unsigned char len;  /**< Length of image magick string */
    char magick[MaxTextExtent]; /**< magick string */
} DumpedImage;

#define DUMPED_IMAGE_ID      0xd1 /**< ID of Dumped image id */
#define DUMPED_IMAGE_MAJOR_VERS 1 /**< Dumped image major version */
#define DUMPED_IMAGE_MINOR_VERS 0 /**< Dumped image minor version */

#define MAGICK_LOC "magick_location"     /**< instance variable name in ImageMagickError class */

#define MAX_GEOM_STR 51                 /**< max length of a geometry string */

//! Quantum expression adapter.
/**
 * Both ImageMagick and GraphicsMagick define an enum type for quantum-level
 * expressions, but they're different types. The QuantumExpressionOperator
 * type is an adapter type that can be mapped to either one.
 */
typedef enum _QuantumExpressionOperator
{
    UndefinedQuantumOperator, /**< undefined */
    AddQuantumOperator,       /**< add */
    AndQuantumOperator,       /**< and */
    DivideQuantumOperator,    /**< divide */
    LShiftQuantumOperator,    /**< lshift */
    MaxQuantumOperator,       /**< max */
    MinQuantumOperator,       /**< min */
    MultiplyQuantumOperator,  /**< multiply */
    OrQuantumOperator,        /**< or */
    RShiftQuantumOperator,    /**< rshift */
    SubtractQuantumOperator,  /**< subtract */
    XorQuantumOperator,       /**< xor */
#if defined(HAVE_ENUM_POWEVALUATEOPERATOR)
    PowQuantumOperator,       /**< pow */
#endif
#if defined(HAVE_ENUM_LOGEVALUATEOPERATOR)
    LogQuantumOperator,       /**< log */
#endif
#if defined(HAVE_ENUM_THRESHOLDEVALUATEOPERATOR)
    ThresholdQuantumOperator, /**< threshold */
#endif
#if defined(HAVE_ENUM_THRESHOLDBLACKEVALUATEOPERATOR)
    ThresholdBlackQuantumOperator, /**< threshold black */
#endif
#if defined(HAVE_ENUM_THRESHOLDWHITEEVALUATEOPERATOR)
    ThresholdWhiteQuantumOperator, /**< threshold white */
#endif
#if defined(HAVE_ENUM_GAUSSIANNOISEEVALUATEOPERATOR)
    GaussianNoiseQuantumOperator, /**< gaussian noise */
#endif
#if defined(HAVE_ENUM_IMPULSENOISEEVALUATEOPERATOR)
    ImpulseNoiseQuantumOperator, /**< impulse noise */
#endif
#if defined(HAVE_ENUM_LAPLACIANNOISEEVALUATEOPERATOR)
    LaplacianNoiseQuantumOperator, /**< laplacian noise */
#endif
#if defined(HAVE_ENUM_MULTIPLICATIVENOISEEVALUATEOPERATOR)
    MultiplicativeNoiseQuantumOperator, /**< multiplicative noise */
#endif
#if defined(HAVE_ENUM_POISSONNOISEEVALUATEOPERATOR)
    PoissonNoiseQuantumOperator, /**< poisson noise */
#endif
#if defined(HAVE_ENUM_UNIFORMNOISEEVALUATEOPERATOR)
    UniformNoiseQuantumOperator, /**< uniform noise */
#endif
#if defined(HAVE_ENUM_COSINEEVALUATEOPERATOR)
    CosineQuantumOperator,    /**< cosine */
#endif
#if defined(HAVE_ENUM_SINEEVALUATEOPERATOR)
    SineQuantumOperator,      /**< sine */
#endif
#if defined(HAVE_ENUM_ADDMODULUSEVALUATEOPERATOR)
    AddModulusQuantumOperator /**< add modulus */
#endif
} QuantumExpressionOperator ;

/** This implements the "omitted storage class model" for external variables.
 * (Ref: Harbison & Steele.) The rmmain.c file defines MAIN, which causes
 * the single defining declarations to be generated. No other source files
 * define MAIN and therefore generate referencing declarations.
 */
#undef EXTERN
#if defined(MAIN)
#define EXTERN
#else
#define EXTERN extern
#endif

/*
*   RMagick Module and Class VALUEs
*/
EXTERN VALUE Module_Magick;
EXTERN VALUE Class_ImageList;
EXTERN VALUE Class_Info;
EXTERN VALUE Class_Draw;
EXTERN VALUE Class_DrawOptions;
EXTERN VALUE Class_Image;
EXTERN VALUE Class_Montage;
EXTERN VALUE Class_ImageMagickError;
EXTERN VALUE Class_FatalImageMagickError;
EXTERN VALUE Class_DestroyedImageError;
EXTERN VALUE Class_GradientFill;
EXTERN VALUE Class_TextureFill;
EXTERN VALUE Class_AffineMatrix;
EXTERN VALUE Class_Chromaticity;
EXTERN VALUE Class_Color;
EXTERN VALUE Class_Font;
EXTERN VALUE Class_Geometry;
EXTERN VALUE Class_GeometryValue;   // Defined in RMagick.rb
EXTERN VALUE Class_Pixel;
EXTERN VALUE Class_Point;
EXTERN VALUE Class_PolaroidOptions;
EXTERN VALUE Class_Primary;
EXTERN VALUE Class_Rectangle;
EXTERN VALUE Class_Segment;
EXTERN VALUE Class_TypeMetric;
EXTERN VALUE Class_MetricType;
EXTERN VALUE Class_QuantumExpressionOperator;

// Enum classes
EXTERN VALUE Class_Enum;
EXTERN VALUE Class_AlignType;
EXTERN VALUE Class_AlphaChannelType;
EXTERN VALUE Class_AnchorType;
EXTERN VALUE Class_ChannelType;
EXTERN VALUE Class_ClassType;
EXTERN VALUE Class_ColorspaceType;
EXTERN VALUE Class_ComplianceType;
EXTERN VALUE Class_CompositeOperator;
EXTERN VALUE Class_CompressionType;
EXTERN VALUE Class_DecorationType;
EXTERN VALUE Class_DisposeType;
EXTERN VALUE Class_DistortImageMethod;
#if defined(HAVE_TYPE_DITHERMETHOD)
EXTERN VALUE Class_DitherMethod;
#endif
EXTERN VALUE Class_EndianType;
EXTERN VALUE Class_FilterTypes;
EXTERN VALUE Class_GravityType;
EXTERN VALUE Class_ImageType;
EXTERN VALUE Class_InterlaceType;
EXTERN VALUE Class_InterpolatePixelMethod;
EXTERN VALUE CLASS_LAYERMETHODTYPE;
EXTERN VALUE Class_MagickFunction;
EXTERN VALUE Class_NoiseType;
EXTERN VALUE Class_OrientationType;
EXTERN VALUE Class_PaintMethod;
EXTERN VALUE Class_PreviewType;
EXTERN VALUE Class_RenderingIntent;
EXTERN VALUE Class_ResolutionType;
#if defined(HAVE_SPARSECOLORIMAGE)
EXTERN VALUE Class_SparseColorMethod;
#endif
EXTERN VALUE Class_SpreadMethod;
EXTERN VALUE Class_StorageType;
EXTERN VALUE Class_StretchType;
EXTERN VALUE Class_StyleType;
EXTERN VALUE Class_WeightType;
EXTERN VALUE Class_VirtualPixelMethod;

/**
*   Commonly-used IDs
*/
EXTERN ID rm_ID_trace_proc;        /**< "@trace_proc" */
EXTERN ID rm_ID_call;              /**< "call" */
EXTERN ID rm_ID_changed;           /**< "changed" */
EXTERN ID rm_ID_cur_image;         /**< "cur_image" */
EXTERN ID rm_ID_dup;               /**< "dup" */
EXTERN ID rm_ID_fill;              /**< "fill" */
EXTERN ID rm_ID_flag;              /**< "flag" */
EXTERN ID rm_ID_from_s;            /**< "from_s" */
EXTERN ID rm_ID_Geometry;          /**< "Geometry" */
EXTERN ID rm_ID_GeometryValue;     /**< "GeometryValue" */
EXTERN ID rm_ID_has_key_q;         /**< "has_key?" */
EXTERN ID rm_ID_height;            /**< "height" */
EXTERN ID rm_ID_initialize_copy;   /**< "initialize_copy" */
EXTERN ID rm_ID_length;            /**< "length" */
EXTERN ID rm_ID_notify_observers;  /**< "notify_observers" */
EXTERN ID rm_ID_new;               /**< "new" */
EXTERN ID rm_ID_push;              /**< "push" */
EXTERN ID rm_ID_spaceship;         /**< "<=>" */
EXTERN ID rm_ID_to_i;              /**< "to_i" */
EXTERN ID rm_ID_to_s;              /**< "to_s" */
EXTERN ID rm_ID_values;            /**< "values" */
EXTERN ID rm_ID_width;             /**< "width" */
EXTERN ID rm_ID_x;                 /**< "x" */
EXTERN ID rm_ID_y;                 /**< "y" */

#if !defined(min)
#define min(a,b) ((a)<(b)?(a):(b)) /**< min of two values */
#endif
#if !defined(max)
#define max(a,b) ((a)>(b)?(a):(b)) /**< max of two values */
#endif

/**
   Handle warnings & errors
*/
//! Handle warnings & errors
#define CHECK_EXCEPTION() rm_check_exception(exception, NULL, RetainOnError);

/*
    Call rb_define_method for an attribute accessor method
*/
//! attribute reader
#define DCL_ATTR_READER(class, attr) \
    rb_define_method(Class_##class, #attr, class##_##attr, 0);
//! attribute writer
#define DCL_ATTR_WRITER(class, attr) \
    rb_define_method(Class_##class, #attr "=", class##_##attr##_eq, 1);
//! attribute accessor
#define DCL_ATTR_ACCESSOR(class, attr) \
    DCL_ATTR_READER(class, attr) \
    DCL_ATTR_WRITER(class, attr)
//! Borrow another class' attribute writer definition
#define SHARE_ATTR_WRITER(to, from, attr) \
    rb_define_method(Class_##to, #attr "=", from##_##attr##_eq, 1);

/*
    Define simple attribute accessor methods (boolean, int, string, and double types)
*/
#define C_bool_to_R_bool(attr) (attr) ? Qtrue : Qfalse /**< C boolean -> Ruby boolean */
#define R_bool_to_C_bool(attr) RTEST(attr) /**<  C boolean <- Ruby boolean */
#define C_int_to_R_int(attr) INT2FIX(attr) /**< C int -> Ruby int */
#define R_int_to_C_int(attr) NUM2INT(attr) /**< C int <- Ruby int */
#define C_long_to_R_long(attr) INT2NUM(attr) /**< C long -> Ruby long */
#define R_long_to_C_long(attr) NUM2LONG(attr) /**< C long <- Ruby long */
#define C_ulong_to_R_ulong(attr) UINT2NUM(attr) /**< C unsigned long -> Ruby unsigned long */
#define R_ulong_to_C_ulong(attr) NUM2ULONG(attr) /**< C unsigned long <- Ruby unsigned long */
#define C_str_to_R_str(attr) attr ? rb_str_new2(attr) : Qnil /**< C string -> Ruby string */
#define C_dbl_to_R_dbl(attr) rb_float_new(attr) /**< C double -> Ruby double */
#define R_dbl_to_C_dbl(attr) NUM2DBL(attr) /**< C double <- Ruby double */

//! define attribute reader
#define DEF_ATTR_READER(class, attr, type) \
    VALUE class##_##attr(VALUE self)\
    {\
        class *ptr;\
        if (rb_obj_is_kind_of(self, Class_Image) == Qtrue) {\
            (void) rm_check_destroyed(self); \
        }\
        Data_Get_Struct(self, class, ptr);\
        return C_##type##_to_R_##type(ptr->attr);\
    }

//! define attribute reader when attribute name is different from the field name
#define DEF_ATTR_READERF(class, attr, field, type) \
    VALUE class##_##attr(VALUE self)\
    {\
        class *ptr;\
        (void) rm_check_destroyed(self); \
        Data_Get_Struct(self, class, ptr);\
        return C_##type##_to_R_##type(ptr->field);\
    }

//! define attribute writer
#define DEF_ATTR_WRITER(class, attr, type) \
    VALUE class##_##attr##_eq(VALUE self, VALUE val)\
    {\
        class *ptr;\
        if (rb_obj_is_kind_of(self, Class_Image) == Qtrue) {\
            (void) rm_check_destroyed(self); \
        }\
        rb_check_frozen(self);\
        Data_Get_Struct(self, class, ptr);\
        ptr->attr = R_##type##_to_C_##type(val);\
        return self;\
    }

//! define attribute accessor
#define DEF_ATTR_ACCESSOR(class, attr, type)\
    DEF_ATTR_READER(class, attr, type)\
    DEF_ATTR_WRITER(class, attr, type)

/*
 *  Declare attribute accessors
 */
//! declare attribute reader
#define ATTR_READER(class, attr) \
    extern VALUE class##_##attr(VALUE);
//! declare attribute writer
#define ATTR_WRITER(class, attr) \
    extern VALUE class##_##attr##_eq(VALUE, VALUE);
//! declare attribute accessor
#define ATTR_ACCESSOR(class, attr) \
    ATTR_READER(class, attr)\
    ATTR_WRITER(class, attr)

/*
 *  Define functions to get/set attributes in Image::Info that
 *  use the Get/SetImageOption API.
*/
//! Option attribute reader. For Image::Info.
#define OPTION_ATTR_READER(opt, key) \
    VALUE Info_##opt(VALUE self)\
    {\
        return get_option(self, #key);\
    }
//! Option attribute writer. For Image::Info.
#define OPTION_ATTR_WRITER(opt, key) \
    VALUE Info_##opt##_eq(VALUE self, VALUE string)\
    {\
        return set_option(self, #key, string);\
    }
//! Option attribute accessor. For Image::Info.
#define OPTION_ATTR_ACCESSOR(opt, key)\
    OPTION_ATTR_READER(opt, key)\
    OPTION_ATTR_WRITER(opt, key)

/*
 *  Declare Pixel channel attribute writers
*/
//! Pixel channel attribute writer.
#define DEF_PIXEL_CHANNEL_WRITER(_channel_) \
extern VALUE \
Pixel_##_channel_##_eq(VALUE self, VALUE v) \
{ \
    Pixel *pixel; \
 \
    rb_check_frozen(self); \
    Data_Get_Struct(self, Pixel, pixel); \
    pixel->_channel_ = APP2QUANTUM(v); \
    (void) rb_funcall(self, rm_ID_changed, 0); \
    (void) rb_funcall(self, rm_ID_notify_observers, 1, self); \
    return QUANTUM2NUM((pixel->_channel_)); \
}

/*
 *  Declare Pixel CMYK channel attribute accessors
*/
//! Pixel CMYK channel attribute accessor.
#define DEF_PIXEL_CMYK_CHANNEL_ACCESSOR(_cmyk_channel_, _rgb_channel_) \
extern VALUE \
Pixel_##_cmyk_channel_##_eq(VALUE self, VALUE v) \
{ \
    Pixel *pixel; \
 \
    rb_check_frozen(self); \
    Data_Get_Struct(self, Pixel, pixel); \
    pixel->_rgb_channel_ = APP2QUANTUM(v); \
    (void) rb_funcall(self, rm_ID_changed, 0); \
    (void) rb_funcall(self, rm_ID_notify_observers, 1, self); \
    return QUANTUM2NUM(pixel->_rgb_channel_); \
} \
 \
extern VALUE \
Pixel_##_cmyk_channel_(VALUE self) \
{ \
    Pixel *pixel; \
 \
    Data_Get_Struct(self, Pixel, pixel); \
    return INT2NUM(pixel->_rgb_channel_); \
}

/*
 *  Enum constants - define a subclass of Enum for the specified enumeration.
 *  Define an instance of the subclass for each member in the enumeration.
 *  Initialize each instance with its name and value.
 */
//! define Ruby enum
#define DEF_ENUM(tag) {\
   VALUE _cls, _enum;\
   _cls =  Class_##tag = rm_define_enum_type(#tag);

//! define Ruby enumerator elements
#define ENUMERATOR(val)\
   _enum = rm_enum_new(_cls, ID2SYM(rb_intern(#val)), INT2NUM(val));\
   rb_define_const(Module_Magick, #val, _enum);
//! end of an enumerator
#define END_ENUM }

//!  Define a Magick module constant
#if MAGICKCORE_QUANTUM_DEPTH == 64
#define DEF_CONST(constant) rb_define_const(Module_Magick, #constant, ULL2NUM(constant))
#else   // MAGICKCORE_QUANTUM_DEPTH == 8, 16, 32
#define DEF_CONST(constant) rb_define_const(Module_Magick, #constant, UINT2NUM(constant))
#endif

//! Convert a Ruby enum constant back to a C enum member.
#define VALUE_TO_ENUM(value, e, type) \
   do {\
   MagickEnum *magick_enum;\
   if (CLASS_OF(value) != Class_##type)\
       rb_raise(rb_eTypeError, "wrong enumeration type - expected %s, got %s"\
                   , rb_class2name(Class_##type),rb_class2name(CLASS_OF(value)));\
   Data_Get_Struct(value, MagickEnum, magick_enum);\
   e = (type)(magick_enum->val);\
   } while(0)

//! create case statement, mapping enum to its name
#define ENUM_TO_NAME(_enum) case _enum: return #_enum;

// Method, external function declarations. These declarations are
// grouped by the source file in which the methods are defined.

// We don't need any "extern/no extern" stuff here. An external function
// declaration can refer to a function defined in another source file or
// the same source file.

// rmmain.c
extern void Init_RMagick2(void);

// rmagick.c
extern VALUE Magick_colors(VALUE);
extern VALUE Magick_fonts(VALUE);
extern VALUE Magick_init_formats(VALUE);
extern VALUE Magick_limit_resource(int, VALUE *, VALUE);
extern VALUE Magick_set_cache_threshold(VALUE, VALUE);
extern VALUE Magick_set_log_event_mask(int, VALUE *, VALUE);
extern VALUE Magick_set_log_format(VALUE, VALUE);

// rmdraw.c
ATTR_WRITER(Draw, affine)
ATTR_WRITER(Draw, align)
ATTR_WRITER(Draw, border_color)
ATTR_WRITER(Draw, decorate)
ATTR_WRITER(Draw, density)
ATTR_WRITER(Draw, encoding)
ATTR_WRITER(Draw, fill)
ATTR_WRITER(Draw, fill_pattern)
ATTR_WRITER(Draw, font)
ATTR_WRITER(Draw, font_family)
ATTR_WRITER(Draw, font_stretch)
ATTR_WRITER(Draw, font_style)
ATTR_WRITER(Draw, font_weight)
ATTR_WRITER(Draw, gravity)
ATTR_WRITER(Draw, interline_spacing)
ATTR_WRITER(Draw, interword_spacing)
ATTR_WRITER(Draw, kerning)
ATTR_WRITER(Draw, pointsize)
ATTR_WRITER(Draw, rotation)
ATTR_WRITER(Draw, stroke)
ATTR_WRITER(Draw, stroke_pattern)
ATTR_WRITER(Draw, stroke_width)
ATTR_WRITER(Draw, text_antialias)
ATTR_WRITER(Draw, tile)
ATTR_WRITER(Draw, undercolor)
extern VALUE Draw_alloc(VALUE);
extern VALUE Draw_annotate(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
extern VALUE Draw_clone(VALUE);
extern VALUE Draw_composite(int, VALUE *, VALUE);
extern VALUE Draw_draw(VALUE, VALUE);
extern VALUE Draw_dup(VALUE);
extern VALUE Draw_get_multiline_type_metrics(int, VALUE *, VALUE);
extern VALUE Draw_get_type_metrics(int, VALUE *, VALUE);
extern VALUE Draw_init_copy(VALUE, VALUE);
extern VALUE Draw_initialize(VALUE);
extern VALUE Draw_inspect(VALUE);
extern VALUE Draw_marshal_dump(VALUE);
extern VALUE Draw_marshal_load(VALUE, VALUE);
extern VALUE Draw_primitive(VALUE, VALUE);
extern VALUE DrawOptions_alloc(VALUE);
extern VALUE DrawOptions_initialize(VALUE);

extern VALUE PolaroidOptions_alloc(VALUE);
extern VALUE PolaroidOptions_initialize(VALUE);
extern VALUE rm_polaroid_new(void);
ATTR_WRITER(PolaroidOptions, shadow_color);
ATTR_WRITER(PolaroidOptions, border_color);

// rmmontage.c
ATTR_WRITER(Montage, background_color)
ATTR_WRITER(Montage, border_color)
ATTR_WRITER(Montage, border_width)
ATTR_WRITER(Montage, compose)
ATTR_WRITER(Montage, filename)
ATTR_WRITER(Montage, fill)
ATTR_WRITER(Montage, font)
ATTR_WRITER(Montage, frame)
ATTR_WRITER(Montage, geometry)
ATTR_WRITER(Montage, gravity)
ATTR_WRITER(Montage, matte_color)
ATTR_WRITER(Montage, pointsize)
ATTR_WRITER(Montage, shadow)
ATTR_WRITER(Montage, stroke)
ATTR_WRITER(Montage, texture)
ATTR_WRITER(Montage, tile)
ATTR_WRITER(Montage, title)
extern VALUE Montage_initialize(VALUE);
extern VALUE Montage_alloc(VALUE);
extern VALUE rm_montage_new(void);

// rmilist.c
extern VALUE ImageList_animate(int, VALUE *, VALUE);
extern VALUE ImageList_append(VALUE, VALUE);
extern VALUE ImageList_average(VALUE);
extern VALUE ImageList_coalesce(VALUE);
extern VALUE ImageList_composite_layers(int, VALUE *, VALUE);
extern VALUE ImageList_deconstruct(VALUE);
extern VALUE ImageList_display(VALUE);
extern VALUE ImageList_flatten_images(VALUE);
extern VALUE ImageList_fx(int, VALUE *, VALUE);
extern VALUE ImageList_map(int, VALUE *, VALUE);
extern VALUE ImageList_montage(VALUE);
extern VALUE ImageList_morph(VALUE, VALUE);
extern VALUE ImageList_mosaic(VALUE);
extern VALUE ImageList_optimize_layers(VALUE, VALUE);
extern VALUE ImageList_quantize(int, VALUE*, VALUE);
extern VALUE ImageList_remap(int, VALUE *, VALUE);
extern VALUE ImageList_to_blob(VALUE);
extern VALUE ImageList_write(VALUE, VALUE);

extern VALUE rm_imagelist_from_images(Image *);

// rminfo.c
ATTR_ACCESSOR(Info, antialias)
ATTR_ACCESSOR(Info, attenuate)
ATTR_ACCESSOR(Info, authenticate)
ATTR_ACCESSOR(Info, background_color)
ATTR_ACCESSOR(Info, border_color)
ATTR_ACCESSOR(Info, caption)
ATTR_ACCESSOR(Info, colorspace)
ATTR_ACCESSOR(Info, comment)
ATTR_ACCESSOR(Info, compression)
ATTR_ACCESSOR(Info, delay)
ATTR_ACCESSOR(Info, density)
ATTR_ACCESSOR(Info, depth)
ATTR_ACCESSOR(Info, dispose)
ATTR_ACCESSOR(Info, dither)
ATTR_ACCESSOR(Info, encoding)
ATTR_ACCESSOR(Info, endian)
ATTR_ACCESSOR(Info, extract)
ATTR_ACCESSOR(Info, filename)
ATTR_ACCESSOR(Info, fill)
ATTR_ACCESSOR(Info, font)
ATTR_ACCESSOR(Info, format)
ATTR_ACCESSOR(Info, fuzz)
ATTR_ACCESSOR(Info, gravity)
ATTR_ACCESSOR(Info, group)
ATTR_ACCESSOR(Info, image_type)
ATTR_ACCESSOR(Info, interlace)
ATTR_ACCESSOR(Info, label)
ATTR_ACCESSOR(Info, matte_color)
ATTR_WRITER(Info, monitor)
ATTR_ACCESSOR(Info, monochrome)
ATTR_ACCESSOR(Info, number_scenes)
ATTR_ACCESSOR(Info, orientation)
ATTR_ACCESSOR(Info, origin)
ATTR_ACCESSOR(Info, page)
ATTR_ACCESSOR(Info, pen)
// ATTR_ACCESSOR(Info, ping) obsolete
ATTR_ACCESSOR(Info, pointsize)
ATTR_ACCESSOR(Info, quality)
ATTR_ACCESSOR(Info, sampling_factor)
ATTR_ACCESSOR(Info, scene)
ATTR_ACCESSOR(Info, server_name)
ATTR_ACCESSOR(Info, size)
ATTR_ACCESSOR(Info, stroke)
ATTR_ACCESSOR(Info, stroke_width)
ATTR_WRITER(Info, texture)
ATTR_ACCESSOR(Info, tile_offset)
ATTR_ACCESSOR(Info, transparent_color)
ATTR_ACCESSOR(Info, undercolor)
ATTR_ACCESSOR(Info, units)
ATTR_ACCESSOR(Info, view)
//ATTR_ACCESSOR(Info, verbose)

extern VALUE Info_alloc(VALUE);

extern VALUE Info_define(int, VALUE *, VALUE);
extern VALUE Info_aset(int, VALUE *, VALUE);
extern VALUE Info_aref(int, VALUE *, VALUE);
extern VALUE Info_channel(int, VALUE *, VALUE);
extern VALUE Info_undefine(VALUE, VALUE, VALUE);
extern VALUE Info_initialize(VALUE);
extern VALUE rm_info_new(void);
extern DisposeType rm_dispose_to_enum(const char *);
extern GravityType rm_gravity_to_enum(const char *);

// rmimage.c
ATTR_WRITER(Image, alpha)
ATTR_ACCESSOR(Image, background_color)
ATTR_READER(Image, base_columns)
ATTR_READER(Image, base_filename)
ATTR_READER(Image, base_rows)
ATTR_ACCESSOR(Image, bias)
ATTR_ACCESSOR(Image, black_point_compensation)
ATTR_ACCESSOR(Image, blur)
ATTR_ACCESSOR(Image, border_color)
ATTR_READER(Image, bounding_box)
ATTR_ACCESSOR(Image, chromaticity)
ATTR_ACCESSOR(Image, class_type)
ATTR_ACCESSOR(Image, color_profile)
ATTR_READER(Image, colors)
ATTR_ACCESSOR(Image, colorspace)
ATTR_READER(Image, columns)
ATTR_ACCESSOR(Image, compose)
ATTR_ACCESSOR(Image, compression)
ATTR_ACCESSOR(Image, delay)
ATTR_ACCESSOR(Image, density)
ATTR_READER(Image, depth)
ATTR_READER(Image, directory)
ATTR_ACCESSOR(Image, dispose)
ATTR_ACCESSOR(Image, endian)
ATTR_ACCESSOR(Image, extract_info)
ATTR_READER(Image, filename)
ATTR_READER(Image, filesize)
ATTR_ACCESSOR(Image, filter)
ATTR_ACCESSOR(Image, format)
ATTR_ACCESSOR(Image, fuzz)
ATTR_ACCESSOR(Image, gamma)
ATTR_ACCESSOR(Image, geometry)
ATTR_ACCESSOR(Image, gravity)
ATTR_ACCESSOR(Image, image_type)
ATTR_ACCESSOR(Image, interlace)
ATTR_ACCESSOR(Image, iptc_profile)
ATTR_ACCESSOR(Image, iterations)
ATTR_WRITER(Image, mask)
ATTR_ACCESSOR(Image, matte)
ATTR_ACCESSOR(Image, matte_color)
ATTR_READER(Image, mean_error_per_pixel)
ATTR_READER(Image, mime_type)
ATTR_WRITER(Image, monitor)
ATTR_READER(Image, montage)
ATTR_READER(Image, normalized_mean_error)
ATTR_READER(Image, normalized_maximum_error)
ATTR_READER(Image, number_colors)
ATTR_ACCESSOR(Image, offset)
ATTR_WRITER(Image, opacity)
ATTR_ACCESSOR(Image, orientation)
ATTR_ACCESSOR(Image, page)
ATTR_ACCESSOR(Image, pixel_interpolation_method)
ATTR_READER(Image, quality)
ATTR_READER(Image, quantum_depth)
ATTR_ACCESSOR(Image, rendering_intent)
ATTR_READER(Image, rows)
ATTR_READER(Image, scene)
ATTR_ACCESSOR(Image, start_loop)
ATTR_ACCESSOR(Image, ticks_per_second)
ATTR_READER(Image, total_colors)
ATTR_READER(Image, total_ink_density)
ATTR_ACCESSOR(Image, transparent_color)
ATTR_ACCESSOR(Image, units)
ATTR_ACCESSOR(Image, virtual_pixel_method)
ATTR_ACCESSOR(Image, x_resolution)
ATTR_ACCESSOR(Image, y_resolution)

extern ChannelType extract_channels(int *, VALUE *);
extern void raise_ChannelType_error(VALUE);
extern void add_format_prefix(Info *, VALUE);

extern VALUE Image_alloc(VALUE);
extern VALUE Image_initialize(int, VALUE *, VALUE);
extern VALUE Image_adaptive_blur(int, VALUE *, VALUE);
extern VALUE Image_adaptive_blur_channel(int, VALUE *, VALUE);
extern VALUE Image_adaptive_resize(int, VALUE *, VALUE);
extern VALUE Image_adaptive_sharpen(int, VALUE *, VALUE);
extern VALUE Image_adaptive_sharpen_channel(int, VALUE *, VALUE);
extern VALUE Image_adaptive_threshold(int, VALUE *, VALUE);
extern VALUE Image_add_compose_mask(VALUE, VALUE);
extern VALUE Image_add_noise(VALUE, VALUE);
extern VALUE Image_add_noise_channel(int, VALUE *, VALUE);
extern VALUE Image_add_profile(VALUE, VALUE);
extern VALUE Image_affine_transform(VALUE, VALUE);
extern VALUE Image_alpha(int, VALUE *, VALUE);
extern VALUE Image_alpha_q(VALUE);
extern VALUE Image_aref(VALUE, VALUE);
extern VALUE Image_aset(VALUE, VALUE, VALUE);
extern VALUE Image_auto_gamma_channel(int, VALUE *, VALUE);
extern VALUE Image_auto_level_channel(int, VALUE *, VALUE);
extern VALUE Image_auto_orient(VALUE);
extern VALUE Image_auto_orient_bang(VALUE);
extern VALUE Image_properties(VALUE);
extern VALUE Image_bilevel_channel(int, VALUE *, VALUE);
extern VALUE Image_black_threshold(int, VALUE *, VALUE);
extern VALUE Image_blend(int, VALUE *, VALUE);
extern VALUE Image_blue_shift(int, VALUE *, VALUE);
extern VALUE Image_blur_image(int, VALUE *, VALUE);
extern VALUE Image_blur_channel(int, VALUE *, VALUE);
extern VALUE Image_border(VALUE, VALUE, VALUE, VALUE);
extern VALUE Image_border_bang(VALUE, VALUE, VALUE, VALUE);
extern VALUE Image_capture(int, VALUE *, VALUE);
extern VALUE Image_change_geometry(VALUE, VALUE);
extern VALUE Image_changed_q(VALUE);
extern VALUE Image_channel(VALUE, VALUE);
extern VALUE Image_check_destroyed(VALUE);
extern VALUE Image_compare_channel(int, VALUE *, VALUE);
extern VALUE Image_channel_depth(int, VALUE *, VALUE);
extern VALUE Image_channel_extrema(int, VALUE *, VALUE);
extern VALUE Image_channel_mean(int, VALUE *, VALUE);
extern VALUE Image_charcoal(int, VALUE *, VALUE);
extern VALUE Image_chop(VALUE, VALUE, VALUE, VALUE, VALUE);
extern VALUE Image_clone(VALUE);
extern VALUE Image_clut_channel(int, VALUE *, VALUE);
extern VALUE Image_color_flood_fill(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
extern VALUE Image_color_histogram(VALUE);
extern VALUE Image_colorize(int, VALUE *, VALUE);
extern VALUE Image_colormap(int, VALUE *, VALUE);
extern VALUE Image_combine(int, VALUE *, VALUE);
extern VALUE Image_composite(int, VALUE *, VALUE);
extern VALUE Image_composite_affine(VALUE, VALUE, VALUE);
extern VALUE Image_composite_bang(int, VALUE *, VALUE);
extern VALUE Image_composite_channel(int, VALUE *, VALUE);
extern VALUE Image_composite_channel_bang(int, VALUE *, VALUE);
extern VALUE Image_composite_mathematics(int, VALUE *, VALUE);
extern VALUE Image_composite_tiled(int, VALUE *, VALUE);
extern VALUE Image_composite_tiled_bang(int, VALUE *, VALUE);
extern VALUE Image_compress_colormap_bang(VALUE);
extern VALUE Image_constitute(VALUE, VALUE, VALUE, VALUE, VALUE);
extern VALUE Image_contrast(int, VALUE *, VALUE);
extern VALUE Image_contrast_stretch_channel(int, VALUE *, VALUE);
extern VALUE Image_convolve(VALUE, VALUE, VALUE);
extern VALUE Image_convolve_channel(int, VALUE *, VALUE);
extern VALUE Image_copy(VALUE);
extern VALUE Image_crop(int, VALUE *, VALUE);
extern VALUE Image_crop_bang(int, VALUE *, VALUE);
extern VALUE Image_cycle_colormap(VALUE, VALUE);
extern VALUE Image_decipher(VALUE, VALUE);
extern VALUE Image_define(VALUE, VALUE, VALUE);
extern VALUE Image_delete_profile(VALUE, VALUE);
extern VALUE Image_delete_compose_mask(VALUE);
extern VALUE Image_deskew(int, VALUE *, VALUE);
extern VALUE Image_despeckle(VALUE);
extern VALUE Image_destroy_bang(VALUE);
extern VALUE Image_destroyed_q(VALUE);
extern VALUE Image_difference(VALUE, VALUE);
extern VALUE Image_dispatch(int, VALUE *, VALUE);
extern VALUE Image_displace(int, VALUE *, VALUE);
extern VALUE Image_display(VALUE);
extern VALUE Image_dissolve(int, VALUE *, VALUE);
extern VALUE Image_distort(int, VALUE *, VALUE);
extern VALUE Image_distortion_channel(int, VALUE *, VALUE);
extern VALUE Image__dump(VALUE, VALUE);
extern VALUE Image_dup(VALUE);
extern VALUE Image_each_profile(VALUE);
extern VALUE Image_edge(int, VALUE *, VALUE);
extern VALUE Image_emboss(int, VALUE *, VALUE);
extern VALUE Image_encipher(VALUE, VALUE);
extern VALUE Image_enhance(VALUE);
extern VALUE Image_equalize(VALUE);
extern VALUE Image_equalize_channel(int, VALUE *, VALUE);
extern VALUE Image_erase_bang(VALUE);
extern VALUE Image_excerpt(VALUE, VALUE, VALUE, VALUE, VALUE);
extern VALUE Image_excerpt_bang(VALUE, VALUE, VALUE, VALUE, VALUE);
extern VALUE Image_export_pixels(int, VALUE *, VALUE);
extern VALUE Image_export_pixels_to_str(int, VALUE *, VALUE);
extern VALUE Image_extent(int, VALUE *, VALUE);
extern VALUE Image_find_similar_region(int, VALUE *, VALUE);
extern VALUE Image_flip(VALUE);
extern VALUE Image_flip_bang(VALUE);
extern VALUE Image_flop(VALUE);
extern VALUE Image_flop_bang(VALUE);
extern VALUE Image_frame(int, VALUE *, VALUE);
extern VALUE Image_from_blob(VALUE, VALUE);
extern VALUE Image_function_channel(int, VALUE *, VALUE);
extern VALUE Image_gamma_channel(int, VALUE *, VALUE);
extern VALUE Image_gamma_correct(int, VALUE *, VALUE);
extern VALUE Image_gaussian_blur(int, VALUE *, VALUE);
extern VALUE Image_gaussian_blur_channel(int, VALUE *, VALUE);
extern VALUE Image_get_pixels(VALUE, VALUE, VALUE, VALUE, VALUE);
extern VALUE Image_gray_q(VALUE);
extern VALUE Image_histogram_q(VALUE);
extern VALUE Image_implode(int, VALUE *, VALUE);
extern VALUE Image_import_pixels(int, VALUE *, VALUE);
extern VALUE Image_init_copy(VALUE, VALUE);
extern VALUE Image_inspect(VALUE);
extern VALUE Image_level2(int, VALUE *, VALUE);
extern VALUE Image_level_channel(int, VALUE *, VALUE);
extern VALUE Image_level_colors(int, VALUE *, VALUE);
extern VALUE Image_levelize_channel(int, VALUE *, VALUE);
extern VALUE Image_linear_stretch(int, VALUE *, VALUE);
extern VALUE Image_liquid_rescale(int, VALUE *, VALUE);
extern VALUE Image__load(VALUE, VALUE);
extern VALUE Image_magnify(VALUE);
extern VALUE Image_magnify_bang(VALUE);
extern VALUE Image_map(int, VALUE *, VALUE);
extern VALUE Image_marshal_dump(VALUE);
extern VALUE Image_marshal_load(VALUE, VALUE);
extern VALUE Image_mask(int, VALUE *, VALUE);
extern VALUE Image_matte_flood_fill(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
extern VALUE Image_median_filter(int, VALUE *, VALUE);
extern VALUE Image_minify(VALUE);
extern VALUE Image_minify_bang(VALUE);
extern VALUE Image_modulate(int, VALUE *, VALUE);
extern VALUE Image_monochrome_q(VALUE);
extern VALUE Image_motion_blur(int, VALUE *, VALUE);
extern VALUE Image_negate(int, VALUE *, VALUE);
extern VALUE Image_negate_channel(int, VALUE *, VALUE);
extern VALUE Image_normalize(VALUE);
extern VALUE Image_normalize_channel(int, VALUE *, VALUE);
extern VALUE Image_oil_paint(int, VALUE *, VALUE);
extern VALUE Image_opaque(VALUE, VALUE, VALUE);
extern VALUE Image_opaque_channel(int, VALUE *, VALUE);
extern VALUE Image_opaque_q(VALUE);
extern VALUE Image_ordered_dither(int, VALUE *, VALUE);
extern VALUE Image_paint_transparent(int, VALUE *, VALUE);
extern VALUE Image_palette_q(VALUE);
extern VALUE Image_ping(VALUE, VALUE);
extern VALUE Image_pixel_color(int, VALUE *, VALUE);
extern VALUE Image_polaroid(int, VALUE *, VALUE);
extern VALUE Image_posterize(int, VALUE *, VALUE);
extern VALUE Image_preview(VALUE, VALUE);
extern VALUE Image_profile_bang(VALUE, VALUE, VALUE);
extern VALUE Image_quantize(int, VALUE *, VALUE);
extern VALUE Image_quantization_error(VALUE);
extern VALUE Image_quantum_operator(int, VALUE *, VALUE);
extern VALUE Image_radial_blur(VALUE, VALUE);
extern VALUE Image_radial_blur_channel(int, VALUE *, VALUE);
extern VALUE Image_raise(int, VALUE *, VALUE);
extern VALUE Image_random_threshold_channel(int, VALUE *, VALUE);
extern VALUE Image_read(VALUE, VALUE);
extern VALUE Image_read_inline(VALUE, VALUE);
extern VALUE Image_recolor(VALUE, VALUE);
extern VALUE Image_reduce_noise(VALUE, VALUE);
extern VALUE Image_remap(int, VALUE *, VALUE);
extern VALUE Image_resample(int, VALUE *, VALUE);
extern VALUE Image_resample_bang(int, VALUE *, VALUE);
extern VALUE Image_resize(int, VALUE *, VALUE);
extern VALUE Image_resize_bang(int, VALUE *, VALUE);
extern VALUE Image_roll(VALUE, VALUE, VALUE);
extern VALUE Image_rotate(int, VALUE *, VALUE);
extern VALUE Image_rotate_bang(int, VALUE *, VALUE);
extern VALUE Image_sample(int, VALUE *, VALUE);
extern VALUE Image_sample_bang(int, VALUE *, VALUE);
extern VALUE Image_scale(int, VALUE *, VALUE);
extern VALUE Image_scale_bang(int, VALUE *, VALUE);
extern VALUE Image_selective_blur_channel(int, VALUE *, VALUE);
extern VALUE Image_segment(int, VALUE *, VALUE);
extern VALUE Image_separate(int, VALUE *, VALUE);
extern VALUE Image_sepiatone(int, VALUE *, VALUE);
extern VALUE Image_set_channel_depth(VALUE, VALUE, VALUE);
extern VALUE Image_shade(int, VALUE *, VALUE);
extern VALUE Image_shadow(int, VALUE *, VALUE);
extern VALUE Image_sharpen(int, VALUE *, VALUE);
extern VALUE Image_sharpen_channel(int, VALUE *, VALUE);
extern VALUE Image_shave(VALUE, VALUE, VALUE);
extern VALUE Image_shave_bang(VALUE, VALUE, VALUE);
extern VALUE Image_shear(VALUE, VALUE, VALUE);
extern VALUE Image_sigmoidal_contrast_channel(int, VALUE *, VALUE);
extern VALUE Image_signature(VALUE);
extern VALUE Image_sketch(int, VALUE *, VALUE);
extern VALUE Image_solarize(int, VALUE *, VALUE);
extern VALUE Image_spaceship(VALUE, VALUE);
extern VALUE Image_sparse_color(int, VALUE *, VALUE);
extern VALUE Image_splice(int, VALUE *, VALUE);
extern VALUE Image_spread(int, VALUE *, VALUE);
extern VALUE Image_stegano(VALUE, VALUE, VALUE);
extern VALUE Image_stereo(VALUE, VALUE);
extern VALUE Image_store_pixels(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
extern VALUE Image_strip_bang(VALUE);
extern VALUE Image_swirl(VALUE, VALUE);
extern VALUE Image_sync_profiles(VALUE);
extern VALUE Image_texture_flood_fill(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
extern VALUE Image_threshold(VALUE, VALUE);
extern VALUE Image_thumbnail(int, VALUE *, VALUE);
extern VALUE Image_thumbnail_bang(int, VALUE *, VALUE);
extern VALUE Image_tint(int, VALUE *, VALUE);
extern VALUE Image_to_blob(VALUE);
extern VALUE Image_to_color(VALUE, VALUE);
extern VALUE Image_transparent(int, VALUE *, VALUE);
extern VALUE Image_transparent_chroma(int, VALUE *, VALUE);
extern VALUE Image_transpose(VALUE);
extern VALUE Image_transpose_bang(VALUE);
extern VALUE Image_transverse(VALUE);
extern VALUE Image_transverse_bang(VALUE);
extern VALUE Image_trim(int, VALUE *, VALUE);
extern VALUE Image_trim_bang(int, VALUE *, VALUE);
extern VALUE Image_undefine(VALUE, VALUE);
extern VALUE Image_unique_colors(VALUE);
extern VALUE Image_unsharp_mask(int, VALUE *, VALUE);
extern VALUE Image_unsharp_mask_channel(int, VALUE *, VALUE);
extern VALUE Image_vignette(int, VALUE *, VALUE);
extern VALUE Image_watermark(int, VALUE *, VALUE);
extern VALUE Image_wave(int, VALUE *, VALUE);
extern VALUE Image_wet_floor(int, VALUE *, VALUE);
extern VALUE Image_white_threshold(int, VALUE *, VALUE);
extern VALUE Image_write(VALUE, VALUE);

extern VALUE rm_image_new(Image *);
extern void  rm_image_destroy(void *);
extern void  rm_trace_creation(Image *);

// rmfill.c
extern VALUE  GradientFill_alloc(VALUE);
extern VALUE  GradientFill_initialize(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
extern VALUE  GradientFill_fill(VALUE, VALUE);

extern VALUE  TextureFill_alloc(VALUE);
extern VALUE  TextureFill_initialize(VALUE, VALUE);
extern VALUE  TextureFill_fill(VALUE, VALUE);

// rmpixel.c

ATTR_ACCESSOR(Pixel, red)
ATTR_ACCESSOR(Pixel, green)
ATTR_ACCESSOR(Pixel, blue)
ATTR_ACCESSOR(Pixel, opacity)
ATTR_ACCESSOR(Pixel, cyan)
ATTR_ACCESSOR(Pixel, magenta)
ATTR_ACCESSOR(Pixel, yellow)
ATTR_ACCESSOR(Pixel, black)
extern void   destroy_Pixel(Pixel *);
extern VALUE  Pixel_alloc(VALUE);
extern VALUE  Pixel_case_eq(VALUE, VALUE);
extern VALUE  Pixel_clone(VALUE);
extern VALUE  Pixel_dup(VALUE);
extern VALUE  Pixel_eql_q(VALUE, VALUE);
extern VALUE  Pixel_fcmp(int, VALUE *, VALUE);
extern VALUE  Pixel_from_color(VALUE, VALUE);
extern VALUE  Pixel_from_HSL(VALUE, VALUE);
extern VALUE  Pixel_from_hsla(int, VALUE *, VALUE);
extern VALUE  Pixel_hash(VALUE);
extern VALUE  Pixel_initialize(int, VALUE *, VALUE);
extern VALUE  Pixel_init_copy(VALUE, VALUE);
extern VALUE  Pixel_intensity(VALUE);
extern VALUE  Pixel_marshal_dump(VALUE);
extern VALUE  Pixel_marshal_load(VALUE, VALUE);
extern VALUE  Pixel_spaceship(VALUE, VALUE);
extern VALUE  Pixel_to_color(int, VALUE *, VALUE);
extern VALUE  Pixel_to_HSL(VALUE);
extern VALUE  Pixel_to_hsla(VALUE);
extern VALUE  Pixel_to_s(VALUE);

// rmenum.c
extern VALUE  Enum_alloc(VALUE);
extern VALUE  Enum_initialize(VALUE, VALUE, VALUE);
extern VALUE  Enum_to_s(VALUE);
extern VALUE  Enum_to_i(VALUE);
extern VALUE  Enum_spaceship(VALUE, VALUE);
extern VALUE  Enum_case_eq(VALUE, VALUE);
extern VALUE  Enum_type_initialize(VALUE, VALUE, VALUE);
extern VALUE  Enum_type_each(VALUE);
extern VALUE  rm_enum_new(VALUE, VALUE, VALUE);

// rmstruct.c
extern VALUE  ChromaticityInfo_to_s(VALUE);
extern VALUE  ChromaticityInfo_new(ChromaticityInfo *);
extern void   Color_to_PixelPacket(PixelPacket *, VALUE);
extern void   Color_to_MagickPixelPacket(Image *, MagickPixelPacket *, VALUE);
extern VALUE  Color_to_s(VALUE);
extern VALUE  Import_ColorInfo(const ColorInfo *);
extern VALUE  ClassType_new(ClassType);
extern VALUE  ColorspaceType_new(ColorspaceType);
extern VALUE  CompositeOperator_new(CompositeOperator);
extern VALUE  CompressionType_new(CompressionType);
extern VALUE  DisposeType_new(DisposeType);
extern VALUE  EndianType_new(EndianType);
extern VALUE  FilterTypes_new(FilterTypes);
extern VALUE  GravityType_new(GravityType);
extern VALUE  Font_to_s(VALUE);
extern VALUE  ImageType_new(ImageType);
extern VALUE  InterlaceType_new(InterlaceType);
extern VALUE  Pixel_from_MagickPixelPacket(const MagickPixelPacket *);
extern VALUE  Pixel_from_PixelPacket(const PixelPacket *);
extern void   Export_PointInfo(PointInfo *, VALUE);
extern VALUE  Import_PointInfo(PointInfo *);
extern VALUE  PrimaryInfo_to_s(VALUE);
extern VALUE  Import_PrimaryInfo(PrimaryInfo *);
extern VALUE  RectangleInfo_to_s(VALUE);
extern VALUE  Import_RectangleInfo(RectangleInfo *);
extern VALUE  RenderingIntent_new(RenderingIntent);
extern VALUE  ResolutionType_new(ResolutionType);
extern VALUE  SegmentInfo_to_s(VALUE);
extern VALUE  Import_SegmentInfo(SegmentInfo *);
extern void   Export_AffineMatrix(AffineMatrix *, VALUE);
extern VALUE  Import_AffineMatrix(AffineMatrix *);
extern void   Export_ChromaticityInfo(ChromaticityInfo *, VALUE);
extern void   Export_ColorInfo(ColorInfo *, VALUE);
extern VALUE  InterpolatePixelMethod_new(InterpolatePixelMethod);
extern VALUE  OrientationType_new(OrientationType);
extern void   Export_PrimaryInfo(PrimaryInfo *, VALUE);
extern void   Export_RectangleInfo(RectangleInfo *, VALUE);
extern void   Export_SegmentInfo(SegmentInfo *, VALUE);
extern void   Font_to_TypeInfo(TypeInfo *, VALUE);
extern void   Export_TypeMetric(TypeMetric *, VALUE);
extern VALUE  Import_TypeInfo(const TypeInfo *);
extern VALUE  TypeMetric_to_s(VALUE);
extern void   Export_TypeInfo(TypeInfo *, VALUE);
extern VALUE  Import_TypeMetric(TypeMetric *);
extern const char *StorageType_name(StorageType);
extern VALUE  VirtualPixelMethod_new(VirtualPixelMethod);
extern VALUE  LAYERMETHODTYPE_NEW(LAYERMETHODTYPE);

// rmutil.c
extern VALUE  ImageMagickError_initialize(int, VALUE *, VALUE);
extern void  *magick_malloc(const size_t);
extern void  *magick_safe_malloc(const size_t, const size_t);
extern void   magick_free(void *);
extern void  *magick_realloc(void *, const size_t);
extern void  *magick_safe_realloc(void *, const size_t, const size_t);
extern void   magick_clone_string(char **, const char *);
extern VALUE  rm_cur_image(VALUE);
extern VALUE  rm_pixelpacket_to_color_name(Image *, PixelPacket *);
extern VALUE  rm_pixelpacket_to_color_name_info(Info *, PixelPacket *);
extern VALUE  rm_no_freeze(VALUE);
extern int    rm_strcasecmp(const char *, const char *);
extern int    rm_strncasecmp(const char *, const char *, size_t);
extern void   rm_check_ary_len(VALUE, long);
extern Image *rm_check_destroyed(VALUE);
extern Image *rm_check_frozen(VALUE);
extern VALUE  rm_to_s(VALUE);
extern char  *rm_str2cstr(VALUE, long *);
extern int    rm_check_num2dbl(VALUE);
extern double rm_fuzz_to_dbl(VALUE);
extern Quantum rm_app2quantum(VALUE);
extern double rm_percentage(VALUE,double);
extern double rm_str_to_pct(VALUE);
extern VALUE  rm_define_enum_type(const char *);
extern void   rm_write_temp_image(Image *, char *);
extern void   rm_delete_temp_image(char *);
extern void   rm_not_implemented(void);
extern void   rm_attr_write(VALUE, VALUE);
extern void   rm_get_geometry(VALUE, long *, long *, unsigned long *, unsigned long *, int *);
extern const char *rm_get_property(const Image *, const char *);
extern MagickBooleanType rm_set_property(Image *, const char *, const char *);
extern void   rm_set_user_artifact(Image *, Info *);
void          rm_set_magick_pixel_packet(Pixel *, MagickPixelPacket *);
extern void   rm_sync_image_options(Image *, Info *);
extern void   rm_split(Image *);
extern void   rm_magick_error(const char *, const char *);

//! whether to retain on errors
typedef enum
{
    RetainOnError = 0, /**< retain on error */
    DestroyOnError = 1 /**< do not retain on error */
} ErrorRetention;

extern void   rm_check_image_exception(Image *, ErrorRetention);
extern void   rm_check_exception(ExceptionInfo *, Image *, ErrorRetention);
extern void   rm_ensure_result(Image *);
extern Image *rm_clone_image(Image *);
extern MagickBooleanType rm_progress_monitor(const char *, const MagickOffsetType, const MagickSizeType, void *);
extern VALUE  rm_exif_by_entry(Image *);
extern VALUE  rm_exif_by_number(Image *);
extern void   rm_get_optional_arguments(VALUE);
extern void   rm_fatal_error_handler(const ExceptionType, const char *, const char *);
extern void   rm_error_handler(const ExceptionType, const char *, const char *);
extern void   rm_warning_handler(const ExceptionType, const char *, const char *);
#endif

redpajama_set_name: RedPajamaGithub


4,802 Companies found that match your criteria.
We are regularly Selling: genuine fine leather bags, gift sets, handmade genuine lether bags, handmade leather bag, italian beg-tanned leather bag, mens leather bag, shoulder bags, woman bags, woman leather handbag.
We are regularly Selling: custom hardware, custom-made plastic products, custom-made products, household products, key chain products, metal gift, metal hardware, pet products manufacturer, stationery goods.
We are regularly Selling: building blocks, fishing game, railcar toy, pre laptop, helicopter, doll, plastic toy, electronic toy, gift.
We are regularly Selling: clothing, gifts, pens, banners, balloons, lip ice, coffee mugs, caps, embroidery.
We are regularly Selling: book, magazine, catalogue, bag, calendar, label, gift box, business cards, greeting cards.
We are regularly Selling: led flashlights, led torch, led lanterna, led taschenlampen, led linterna elctrica, led gift, aaa flashlight, mini flashlight, led lampe de poche.
We are regularly Selling: painting material, water color, acrylic paint, art paint, diy product, toys, holiday gifts, drawing paint, stationery.
We are regularly Selling: consultancy, promotional gifts, uniforms, screen printing, heat transfer, monogrammy, branding, designs, fashion.
We are regularly Selling: online ecommerce marketing, business consulting, kitchen appliances, web development, boating products, unique gifts, search engine optimization, italian products, european products.
We are regularly Selling: branded perfumes, calvin klein chanel dior azzaro clarins clinique dkny kenzo, clinique chanel dior loreal professional paul mitchell, gift sets, hair care, kerastase redken schwarzkopf, liquor, liquor cognacs apertifs, skincare cosmetics.
We are regularly Selling: promotional gifts, corporate clothing, safety workwear, foam products, hospitality products, usbs, events, calendars diaries, conference goodies.


text:
LEON KOCH (published on October 06, 2011)
LEON KOCH Leon passed away peacefully at the age of 96 on October 3, 2011 at the Boyne Lodge in Carman, MB, who was formerly of Moosehorn, MB. Leon was born on April 21, 1915 in Moosehorn, MB. He is survived by his wife Anna (nee Yanke) who were married for 72 years; his daughter Beatrice and grandchildren Clinton (Louise), Darryl and Kimberly (Murray); son Kenneth (Kelly) and grandchildren Melisa and Jennifer (Jason); son Alvin (Nadia) and grandchildren Christopher (Athena), Denise (Aaron), Orysyia (Alan) and Trina (Steven); great grandchildren Carrie, Kyle, Kylie, Andrew, Anastasia, Kathleen, Chase and Brian along with many nieces and nephews. Leon was predeceased by his parents Adolph and Emelia; three sisters Olga, Elsie and Helen; two brothers Arthur and Albert; son-in-law Benjamin and daughter-in-law Joanne. A funeral service will be held at 2:00 p.m. on Sunday, October 9, 2011 at the Peace Lutheran Church in Moosehorn, MB with Pastor Erwin Tippel officiating. Viewing will be held one hour prior to the service at the church. Interment to follow in the Peace Lutheran Cemetery. Memorial donations may be made to the Peace Lutheran Church Memorial Fund, PO Box 68, Moosehorn, MB R0C 2E0 or to the Boyne Lodge, PO Box 910, Carman, MB R0G 0J0. Arrangements by: ARNASON FUNERAL HOME Ashern Lundar 1-204-768-2072 1-866-323-3593


text:
Bad River Bank of Lake Superior Chippewa
Photographed April 17, 2015
Opened October 12, 2013
Oshkosh, Winnebago County, Wisconsin
44.033489,-88.580486 (where to park to access the trail)
44.032903,-88.581758 (where to access the trail)
BAD RIVER BAND OF LAKE SUPERIOR CHIPPEWA
Namadabin "Sit"
and let us tellyou a little about us --
We are located in Ashland and Iron Counties in northern Wisconsin and are one Chippewa Band of The Great Chippewa Nation that spans from Michigan to Montana and throughout southern Canada. Our reservation boundaries encompass about 125,000 acres of land, which includes over 30 miles of natural shoreline along Gitchi-Gami, or Lake Superior. Our government seat is located in the Town of Odanah and we have an estimated 2,300 members of our nearly 8,000 enrolled who live within our boundaries. Originally, before the band was named Bar River, it was known as "Anishinabe Odetowin," meaning "the place with the people of good heart." Bad River comes from the English version of the river that runs through the center of our reservation "Mashkii Ziibing." In our language "mashkii" refers to "mashkiikii," which is "swamp" or "medicine." It is uncertain how the French translated it to "bad," and is still a topic of conversation among our members today.
Along with the Bad River, several other tributaries throughout the reservation contribute greatly to the ecological beauty of our reservation. Nearly ninety percent of our reservation is left in its natural state for the subsistence hunting, fishing, trapping, gathering and enjoyment of our membership. One of our most significant rivers is the Kakagon, which lends itself greatly to our Great Migration Story as it has a 16,000 acre wild rice marsh estuary at its mouth. A portion of the Kakagon is on the Register of National Natural Landmarks. It is the largest naturally grown wild rich marsh in the world today.
Today in Odanah, we also have several tribal member and tribal government owned businesses such as: a casino, restaurant, hotel, gift shops, gas station, firework shops and more.
Miigwetch "thank-you" for taking the time to learn about our tribe.
The entrance (I used) to the Tribal Heritage Crossing of the Wiouwash State Trail is located adjacent to the parking lot for Two Brothers Family Restaurant, located at 1930 Rath Lane, Oshkosh, Wisconsin 54904.
NOTE: The parking lot adjacent to the restaurant is posted as "for customers only". However, there is plenty of parking on Rath Lane. Be sure to check the Google Map coordinates before heading out.
NOTE: The trial loop is about four miles in length.
This location is Overlook 1 (see map below) in a series of historical marker kiosks that comprise the Tribal Heritage Crossing of the Wiouwash State Trail. Click here for more information about the Tribal Heritage Crossing project and links to photos / transcriptions of all markers on the Trail.
This media file prepared by US I 41 Project is in the public domain.
Labels: Tribal Heritage Crossing, Winnebago County Wisconsin Historical Markers, Wisconsin Native American History
Location: Highway 41 Lake Butte des Morts Causeway & U.S. 41, Oshkosh, WI 54904, USA
Markers by County
Numerical List of Wisconsin Historical Society "Official" Markers
Wisconsin Regisitered Landmarks
National Historic Landmarks
National Natural Landmarks
Wisconsin Heritage Sign Program
Wisconsin's Whimsical Roadside Attractions
Veterans Memorials
Follow @WIHistory
This website endorsed by:
Door County Coastal Byway
Comments from Visitors
Thank you so much for visiting, documenting, photographing and sharing our historic markers! This is truly an honor and it is much appreciated.
Jim Schuh
Chippewa County Historical Society
I just discovered your site and have been using it in my fourth grade summer school class in Viroqua, WI. We learned about Wisconsin throughout the year and are spending some time during summer school reading and talking about the history of Viroqua. We plan to take a walking trip to the Pioneer Cemetery and Lucy Stone marker. Thank you for all of your information!
Kimberly (Brye) Cade
Hi, I really love your historic marker site a lot, I write a travel blog and I get pictures of these markers to assist in my writing about each town. I went to the Dean House in January for their monthly tour. Here is a link.
lauriesportraits
Very nice blog post. I certainly love this site. Keep it up!
Thank you for posting this! I am Russ & Grace's grand-daughter & very happy they helped preserve this little slice of Soo Line history for future generations! Awesome website. Thanks for your work!
Lillian Ferrall
Thanks for writing about your experiences! This is such a unique and wonderful way to share the history of our wonderful Wisconsin!
tessalynn
© 2011-2018 Unless otherwise noted, content on this website is copyrighted. Click here for more information.
Stevens Point Historic Mural "The Old Post Office"
Marker 121: Du Bay Trading Post
Packer Heritage Trail Marker 13: Green Bay Press-Gazette
Chippewa County Historical Society Historical Markers
Edward Rutledge Charity
Cook-Rutledge Mansion
Hannah M. Rutledge Home for the Aged
Hurley's Famous Silver Street
In the News / On TV
12/04/2017: Discovering Wisconsin, One History Marker at a Time (Northwest Quarterly)
07/29/2016: Marking History: Wisconsin transplant brings state history to the digital age (Door County Peninsula Pulse)
06/08/2016: Wisconsin Historian Is On A Mision To See, Photograph State's Historical Markers, Sites (Wisconsin Public Radio: Central Time Article))
06/08/2016: Woman's Thousands Of Photos Document Wisconsin's History (Wisconsin Public Radio: Central Time Radio Interview)
05/30/2016: Woman's 50K photos document Wisconsin history (Green Bay Press-Gazette)
06/20/2015: Robers travels Wisconsin from marker to marker (Your Daily Globe)
05/30/2016: Documenting Wisconsin Veterans Memorials (Channel 5: We Are Green Bay)
05/27/2016: A Patriotic Mission (ABC 2 WBAY)
12/31/2015: Visiting Past Brings Woman peace in Present (Wisconsin Life)
12/31/2015: Historical Visitor (Wisconsin Public Television: Wisconsin Life)
03/27/2015: Facing cancer, De Pere woman visited every state historical marker (Journal Sentinel Wisconsin Trails)
Manitowoc County Historical Society Award Recipient
2014 Historic Preservation Award for Preservation Service
CardCow.com generously supports this website with vintage postcard screenshots of Wisconsin historical sites.
Wisconsin Historical Markers Collaboration
Memorial Day Foundation
WRL-54: Jacques Vieau Trading Post
WRL-74: St. Josaphat Basilica
The Meskwaki and Big Lake Butte Des Morts
Bloecher-Johnson American Legion Post No. 502 Veterans Memorial
Maribel Caves Hotel
Elvis Presley Fight Scene
Little Red Inn
Flag Counter Installed 3/14/2014
Search for posts by label:
Wisconsin Veterans Memorials (1330) Wisconsin Historical Society "Official" Markers (570) National Register of Historic Places in Wisconsin (516) Wisconsin Native American History (175) Wisconsin World War II Memorial (170) American Legion Wisconsin Veterans Memorials (165) Museums in Wisconsin (135) Marker Photo Needed (116) Wisconsin Registered Landmark (111) Wisconsin Outdoor Murals (105) Smokey the Bear (101) Wisconsin Veterans Memorial Artillery (97) Waukesha County Wisconsin Veterans Memorials (87) Dane County | Madison Landmarks Commission (84) Wisconsin Vietnam War Memorial (84) Wisconsin Cemeteries with Historical Markers (83) Wisconsin's whimsical roadside attractions (80) VFW Veterans Memorial (78) Wisconsin Veterans Memorials by County (78) National Historic Landmarks in Wisconsin (76) Wisconsin World War I Memorial (73) Green Bay Packers (71) Manitowoc County Wisconsin Veterans Memorials (66) Churches with Historical Markers (62) Wisconsin Railroad History (60) Wisconsin Statues (60) Chippewa County Historical Society Markers (57) Wisconsin Medal of Honor Recipient (57) Outagamie County Wisconsin Veterans Memorials (56) Wisconsin's Maritime Trails Markers (52) miscellaneous shots (52) Racine County Wisconsin Veterans Memorials (51) Lighthouses of Wisconsin (50) Wisconsin Korean War Memorial (49) City of Eau Claire Historic Building (45) Wisconsin in World War I (45) new york connection (45) Effigy Mounds in Wisconsin (42) Jefferson County Wisconsin Veterans Memorials (40) Wisconsin in World War II (39) Price County Wisconsin Veterans Memorials (38) Wood County Wisconsin Veterans Memorials (38) Wisconsin State Register of Historic Places (37) City of Omro Historical Tour (35) Fond du Lac County Wisconsin Veterans Memorials (35) Ozaukee County Wisconsin Veterans Memorials (35) Waupaca County Wisconsin Veterans Memorials (34) Columbia County Wisconsin Veterans Memorials (33) Washington County (Wisconsin) Landmarks Commission (33) City of Sheboygan (32) Chippewa County Wisconsin Veterans Memorials (31) Wisconsin Ice Age National Scenic Trail (31) Wisconsin Statues with Markers (31) Calumet County Wisconsin Veterans Memorials (30) Clark County Wisconsin Veterans Memorials (30) Iron County Heritage Area (30) Rock County Wisconsin Veterans Memorials (30) U.S. 32nd Infantry Red Arrow Division (29) UW Madison Marker Series (28) Dodge County Wisconsin Veterans Memorials (27) Governors of Wisconsin (27) Jackson County Wisconsin Veterans Memorials (27) Juneau County Wisconsin Veterans Memorials (27) Oneida Nation Walk of Legends (27) Trempealeau County Wisconsin Veterans Memorial (27) Wisconsin Historical Societies (27) Kenosha County Wisconsin Veterans Memorials (25) Wisconsin Spanish-American War Veterans Memorials (25) The Peshtigo Fire / The Great Fire of 1871 (24) Wisconsin 9/11 Memorials (23) Door County Maritime Museum (22) Grant County Wisconsin Veterans Memorials (22) M60A3 tank (22) Wisconsin County Courthouses (22) Wisconsin Pulp and Paper History (22) Chief Waubeka Historical Trail (21) National Railroad Museum (21) Green Lake County Wisconsin Veterans Memorials (20) Kelly Meredith Murals (20) Marathon County Wisconsin Veterans Memorials (20) Marinette County Wisconsin Veterans Memorials (20) Sheboygan County Wisconsin Veterans Memorials (20) Eau Claire Historic Building (19) Peninsula State Park (19) Wisconsin Baseball History (19) Wisconsin Pioneer Schoolhouses (19) Wisconsin Train Depots (19) Civilian Conservation Corps Wisconsin (18) Tribal Heritage Crossing (18) Wisconsin Native American Veterans Memorial (18) Door County Maritime History (17) Eau Claire Landmarks Commission (17) Wisconsin Veterans Memorial Highway (17) Crawford County Wisconsin Veterans Memorials (16) Door County Wisconsin Veterans Memorials (16) Dwight D. Eisenhower No. 60008 (16) Marquette County Wisconsin Veterans Memorials (16) Village of Thiensville Historic Buildings (16) Washington County Wisconsin Veterans Memorials (16) Black History in Wisconsin (15) Boy Scouts of America Eagle Scout Project (15) Clarence Addison Shaler (15) Deland Park Walking Tour (15) Historic Plymouth Walking Tour (15) Langlade County Wisconsin Veterans Memorial (15) Neenah Legacy Park (15) Old Abe the War Eagle (15) Pinecrest Historical Village (15) Pioneer Cemeteries in Wisconsin (15) Wisconsin Soo Line (15) Father Jacques Marquette (1637-1675) in Wisconsin (14) Mazomanie Downtown Historic District (14) Sauk County Wisconsin Veterans Memorials (14) Chippewa Falls Irvine Park (13) Eau Claire Baseball Hall of Fame (13) Harrington Beach State Park (13) Monroe County Wisconsin Veterans Memorials (13) Shawano County Wisconsin Veterans Memorials (13) Ashland County Wisconsin Veterans Memorials (12) Belgian Heritage History in Wisconsin (12) City of Plymouth Landmark (12) Devil's Lake State Park (12) Douglas County Wisconsin Veterans Memorials (12) Polk County Wisconsin Veterans Memorials (12) missing marker (12) Archaeology and History of the WIS 57 Transportation Corridor (11) Art in Public Places in Wisconsin (11) Col. John Hicks (11) Door County Wisconsin Lighthouses (11) Historic Home Museums in Wisconsin (11) Norwegian Pioneer Settlers in Wisconsin (11) Portage County Wisconsin Veterans Memorials (11) West Allis Historical Society Museum (11) Wisconsin's Mining History (11) Blue Star Memorial Highway Wisconsin (10) Circus World Baraboo State Historic Site (10) Cobra helicopters in Wisconsin (10) Forest County Wisconsin Veterans Memorials (10) Haunted Wisconsin (10) Iron County Wisconsin Veterans Memorials (10) Rib Mountain State Park (10) Southern Wisconsin Veterans Memorial Cemetery (10) Wisconsin Circus History (10) Wisconsin Historic Military Roads (10) Buffalo County Wisconsin Veterans Memorials (9) Hartman Creek State Park (9) It Originated in Wisconsin! (9) Lafayette County Wisconsin Veterans Memorials (9) New Berlin Historical Society (9) Old Falls Village Historical Park & Museum (9) Vernon County Wisconsin Veterans Memorials (9) Vilas County Wisconsin Veterans Memorials (9) Walworth County Wisconsin Veterans Memorials (9) War in Iraq Memorial (9) Wisconsin Register of Historic Places (9) American Gold Star Mothers Wisconsin (8) Carnegie Libraries in Wisconsin (8) Father Claude Allouez (1622-1689) in Wisconsin (8) Medal of Honor Recipient Mitchell Red Cloud Jr. (8) Military aircraft public displays in Wisconsin (8) Oconto County Wisconsin Veterans Memorials (8) The Wind Point Lighthouse (8) Town of Wabeno Wisconsin (8) Underground Railroad in Wisconsin (8) Wisconsin Veterans Memorial Aircraft (8) Wisconsin Women Historical Markers (8) Arvid E. Miller Stockbridge Munsee Historical Library Museum (7) Green County Wisconsin Veterans Memorials (7) Heritage Hill State Historic Park (7) John Muir in Wisconsin (7) Lincoln County Wisconsin Veterans Memorials (7) Military Roads of Wisconsin (7) My Articles (7) New Berlin City Landmark (7) Oneida County Wisconsin Veterans Memorials (7) Richland County Wisconsin Veterans Memorials (7) The Yellowstone Trail in Wisconsin (7) Waushara County Wisconsin Veterans Memorials (7) Wisconsin Fireman's Memorial (7) Wisconsin Yellowstone Trail (7) Wood National Cemetery (7) Bayfield County Wisconsin Veterans Memorials (6) Dunn County Wisconsin Veterans Memorials (6) Iowa County Wisconsin Veterans Memorials (6) La Crosse County Wisconsin Veterans Memorials (6) Lighthouses of Lake Winnebago Wisconsin (6) Natural National Landmark Wisconsin (6) Pepin County Wisconsin Veterans Memorials (6) Spirit of the American Doughboy (6) U.S.S. Maine Memorials (6) Adams County Wisconsin Veterans Memorials (5) Barron County Wisconsin Historical Markers (5) Green Bay City Stadium (5) Neenah Historical Tour (5) Octagon Houses in Wisconsin (5) Pierce County Wisconsin Veterans Memorials (5) Sawyer County Wisconsin Veterans Memorials (5) St. Croix County Wisconsin Veterans Memorials (5) Tower Hill State Park (5) American Society of Mechanical Engineers (4) Eau Claire County Wisconsin Veterans Memorials (4) James Duane Doty (4) John Bergstrom Statues (4) Kewaunee County Courthouse (4) Menominee County Wisconsin Veterans Memorials (4) Purple Heart Recipients in Wisconsin (4) War in Afghanistan (4) War of 1812 (4) Wisconsin Liberty Tree Memorials (4) Wisconsin Veterans Memorial Bridge (4) Belgian Roadside Chapels in Wisconsin (3) Burnett County Wisconsin Veterans Memorials (3) Frank E. Noyes (3) Great Lakes Shipwrecks of Wisconsin (3) Jewish History in Wisconsin (3) Oneida Holy Apostles Cemetery (3) Rusk County Wisconsin Veterans Memorials (3) Wisconsin Purple Heart Recipient (3) Wisconsin Veterans Museum (3) DAV Wisconsin Veterans Memorials (2) Milwaukee Landmark Commission (2) Wisconsin Pioneer Village (2) michigan lighthouses (2) Kilbourn Landmark (1) NEON Wisconsin (1) Oneida Tribe of Indians of Wisconsin (1) Operation Enduring Freedom (1) VVA Veterans Memorial (1) Wisconsin Hamburger Joints (1) michigan historical markers (1) operation desert storm (1)


Be sure to try out our instant Towing Quote Calculator and get a instant towing price online for your Harlin Towing requirements and you can even book your Towing job online.
Locally based. Our contractors are locally based and have a extensive knowledge of Harlin and its surrounding suburbs, thus ensuring we can attend to your Tow Job without delay.
There are a total of 3 Tow Trucks standing by within 25 kilometers of the Harlin area.


text:
Utility Vehicle at Center of Trek and Pursuit
KSAL StaffMarch 25, 2022
A man has been arrested after he resorted to an interesting tactic to get to Salina from McPherson County.
Joshua Baker, a 34-year-old man of Midwest City, Oklahoma, was arrested Thursday on charges that could include flee and attempt to elude, driving while suspended and felony possession of stolen property among others.
Saline County Sheriff Roger Soldan tells KSAL News that at 11:56 a.m., deputies received a report of a John Deere Gator being driven at high speeds on Old Highway 40 just west of Uptown.
They caught up with the Gator near the area of Crawford Street and Fairchilds Road and attempted a stop, but the Gator continued through a field and back toward Old Highway 40.
The Gator started back east toward town near the railroad tracks, but Soldan said the utility vehicle either was disabled or got stuck.
The driver of the Gator, later identified as Baker, then fled on foot. Deputies found Baker near Lum Felton Park and arrested him.
After further investigation, the 2022 Gator, valued at $22,000, was reported stolen earlier from PrairieLand Partners in McPherson County.
Soldan said that Baker drove the Gator from McPherson County to Salina, and when the vehicle was retrieved, it had 49 miles on it. It is unknown what route Baker took to Salina until he was reported on Old Highway 40.
Photos Courtesy of the Saline County Sheriff's Office