He ran easily through the night in spite of the snow that covered the ground. He was one with the shadows, slipping through the forest, the moonlight almost as clear to his eyes as the light of the sun. A cold wind ruffled his thick fur, and suddenly brought a scent that made his hackles stand and his heart race with a hatred greater than that for the Neverborn. Hatred, and a sure knowledge of death coming. There were no choices to be made, not now. He ran harder, toward death.
Perrin woke abruptly in the deep darkness before dawn, beneath one of the high-wheeled supply carts. Cold had seeped into his bones from the ground despite his heavy fur-lined cloak and two blankets, and there was a fitful breeze, not strong or steady enough to be called a light wind, but icy. When he scrubbed at his face with gauntleted hands, frost crackled in his short beard. At least it seemed not to have snowed any more during the night. Too often he had awakened covered with a dusting despite the shelter of a cart, and snowfall made things difficult for the scouts. He wished he could speak with Elyas the same way he talked with wolves. Then he would not have to endure this endless waiting. Weariness clung to him like a second skin; he could not recall when he had last had a sound night’s sleep. Sleep, or the lack of it, seemed unimportant anyway. These days, only the heat of anger gave him the strength to keep moving.
He did not think it was the dream that had wakened him.  In the worst, he found Faile dead, or never found her. Those woke him up in shivering sweats. Anything less horrible, he slept through, or only half-woke with Trollocs cutting him up alive for the cookpot or a Draghkar eating his soul.  What? Something wolves hated more than they did Myrddraal. Something a wolf knew would kill him. The knowledge he had had in the dream was gone; only vague impressions remained. He had not been in the wolf dream, that reflection of this world where dead wolves lived on and the living could go to consult them. The wolf dream always remained clear in his head after he left, whether he had gone there consciously or not. Yet this dream still seemed real, and somehow urgent.
Lying motionless on his back, he sent his mind questing, feeling for wolves. He had tried using wolves to help his hunt, to no avail. Convincing them to take an interest in the doings of two-legs was difficult, to say the least.  Men chased away game, and most men tried to kill a wolf on sight. His thoughts found nothing, but then, after a time, he touched wolves, at a distance. How far, he could not be sure, but it was like catching a whisper almost on the edge of hearing. A long way. That was strange. Despite scattered villages and manors and even the occasional town, this was prime country for wolves, untouched forest for the most part, with plenty of deer and smaller game.
There was always a formality to speaking with a pack you were not part of. Politely, he sent his name among wolves, Young Bull, shared his scent, and received theirs in reply, Leafhunter and Tall Bear, White Tail and Feather and Thunder Mist, a cascade of others. It was a sizable pack, and Leafhunter, a female with a feel of quiet certainty, was their leader. Feather, clever and in his prime, was her mate. They had heard of Young Bull, were eager to speak with the friend of the fabled Long Tooth, the first two-legs who had learned to speak with wolves after a gap of time that carried the feel of Ages vanished into the mists of the past. It was all a torrent of images and memories of scents that his mind turned into words, as the words he thought somehow became images and scents they could understand.
There is something I want to learn, he thought, once the greetings were done. What would a wolf hate more than the Neverborn? He tried to recall the scent from the dream, to add that, but it was gone from his memory. Something that a wolf knows means death.
Silence answered him, and a thread of fear blended with hatred and determination and reluctance. He had felt fear from wolves before—above all things they feared the wildfire that raced through a forest, or so he would have said—but this was the prickling sort of fear that made a man’s skin crawl, made him shiver and jump at things unseen. Laced with the resolution to go on no matter what, it felt close to terror. Wolves never experienced that kind of dread. Except that these did.
One by one they faded from his consciousness, a deliberate act of shutting him out, until only Leafhunter remained. The Last Hunt is coming, she said at last, and then she also was gone.
Did I offend? he sent. If I did, it was in ignorance. But there was no reply. These wolves, at least, would not speak with him again, not any time soon.
The Last Hunt is coming. That was what wolves called the Last Battle, Tarmon Gai’don. They knew they would be there, at the final confrontation between the Light and the Shadow, though why was something they could not explain. Some things were fated, as sure as the rise and fall of the sun and the moon, and it was fated that many wolves would die in the Last Hunt. What they feared was something else. Perrin had a strong sense that he also had to be there, was meant to be at least, but if the Last Battle came soon, he would not be. He had a job of work in front of him that he could not shirk—would not!—even for Tarmon Gai’don.
Putting nameless fears and the Last Battle alike out of his mind, he fumbled his gauntlets off and felt in his coat pocket for the length of rawhide cord he kept there. In a morning ritual, his fingers made another knot mechanically, then slid down the cord, counting. Twenty-two knots. Twenty-two mornings since Faile was kidnapped.
At the start, he had not thought there was need to keep count. That first day, he had believed he was cold and numb but focused, yet looking back he could see he had been overwhelmed by unbound rage and a consuming need to find the Shaido as fast as possible. Men from other clans had been among the Aiel who had stolen Faile, yet on the evidence, most were Shaido, and that was how he thought of them. The need to rip Faile away from them, before she could be hurt, had gripped him by the throat till he almost choked. He would rescue the other women captured with her, of course, but sometimes he had to list their names in his head to make sure he did not forget them entirely. Alliandre Maritha Kigarin, Queen of Ghealdan, and his liege woman. It still seemed off-kilter to have anyone oathsworn to him, especially a queen—he was a blacksmith! He had been a blacksmith, once—but he had responsibilities toward Alliandre, and she would never have been in danger except for him. Bain of the Black Rock Shaarad and Chiad of the Stones River Goshien, Aiel Maidens of the Spear who had followed Faile to Ghealdan and Amadicia. They had faced Trollocs in the Two Rivers, as well, when Perrin needed every hand that could raise a weapon, and that earned them the right to call on him. Arrela Shiego and Lacile Aldorwin, two foolish young women who thought they could learn to be Aiel, or some strange version of Aiel. They were oathsworn to Faile, and so was Maighdin Dorlain, a penniless refugee Faile had taken under her wing as one of her maids. He could not abandon Faile’s people. Faile ni Bashere t’Aybara.
 With a groan, he clutched the cord so tightly that the knots impressed themselves painfully on a hand hardened by long days swinging the hammer at a forge. Light, twenty-two days!
Working iron had taught him that haste ruined metal, but in the beginning, he had been hasty, Traveling southward through gateways created by Grady and Neald, the two Asha’man, to where the farthest traces of the Shaido had been found, then leaping south again, the direction their tracks went, as soon as the Asha’man could make more gateways. Fretting every hour it took them to rest from making the first and holding them open long enough for everyone to pass through, his mind was eaten up with freeing Faile at any cost. What he found were days of increasing pain as the scouts spread farther and farther through uninhabited wilderness without locating the slightest sign that anyone had been that way before, until he knew he had to retrace his path, frittering away more days to cover ground the Asha’man had taken him across in a step, searching for any indication of where the Shaido had turned aside.
He should have known they would turn. South took them toward warmer lands, without the snow that seemed so strange to Aiel, yet it took them closer to the Seanchan in Ebou Dar, as well. He knew about the Seanchan, and he should have expected the Shaido to learn! They were after pillage, not a fight with Seanchan and damane. Days of slow marching with the scouts fanning out ahead, days when falling snow blinded even the Aiel and forced them all to a chafing halt, until finally Jondyn Barran found a tree scraped by a wagon and Elyas dug a broken Aiel spear shaft from beneath the snow. And Perrin at last turned east, at most two days south of where he had Traveled to the first time. He had wanted to howl when he realized that, yet he kept a tight hold on himself. He could not give way, not so much as an inch, not when Faile was depending on him. That was when he began to husband his anger, began to forge it.
Her kidnappers had gained a long lead because he was hasty, but since then, he had been as careful as he had been in a smithy. His anger was hardened and shaped to a purpose. Since finding the Shaido’s trail again, he had Traveled no farther in one jump than the scouts could go and come between sunrise and sunset, and it was well that he had been cautious, because the Shaido changed directions suddenly several times, zigzagging almost as though they could not decide on a destination. Or maybe they had turned to joined others of their kind. All he had to go by were old traces, old camps buried by snow, yet all of the scouts agreed the Shaido’s numbers had swollen. There had to be at least two or three septs together, maybe more, a formidable quarry to hunt. Slowly but surely, though, he had begun overtaking them. That was what was important.
The Shaido covered more ground on the march than he would have thought possible, given their numbers and the snow, yet they did not seem to care whether anyone was tracking them. Perhaps they believed no one dared. Sometimes they had camped several days in one spot. Anger forged to a purpose. Ruined villages and small towns and estates littered the Shaido’s path as if they were human locusts, storehouses and valuables looted, men and women carried off along with the livestock. Often no one remained by the time he arrived, only empty houses, the people seeking somewhere for food to survive until spring. He had crossed the Eldar into Altara where a small ferry used by peddlers and local farmers, not merchants, once ran between two villages on the forested river-banks. How the Shaido had gotten across, he did not know, but he had the Asha’man make gateways. All that remained of the ferry were the rough stone landings on either bank, and the few unburned structures were deserted except for three slat-ribbed feral dogs that slunk away at the sight of humans. Anger hardened and shaped for a hammer.
Yesterday morning, he had come to a tiny village where a double handful of stunned, dirty-faced people had stared at the hundreds of lancers and bowmen riding out of the forest at first light behind the Red Eagle of Manetheren and the crimson Wolfshead, the Silver Stars of Ghealdan and the Golden Hawk of Mayene, followed by long lines of high-wheeled carts and strings of remounts. At first sight of Gaul and the other Aiel, those people overcame their paralysis and began running for the trees in panic. Catching a few to answer questions had been difficult; they were ready to run themselves to death rather than let an Aiel near. Brytan had consisted of only a dozen families, but the Shaido had carried off nine young men and women from there, along with all of their animals, only two days ago. Two days. A hammer was a tool with a purpose, and a target.
He knew he had to be careful, or lose Faile forever, but being too careful could lose her, too. Early yesterday he had told those who were going ahead to scout that they were to go farther than before, push on harder, returning only with a full turn of the sun unless they found the Shaido sooner. In a little while the sun would rise, and at most a few hours after that, Elyas and Gaul and the others would return, the Maidens and Two Rivers men he knew could track a shadow across water. As fast as the Shaido moved, the scouts could move faster. They were not encumbered with families and wagons and captives. This time, they would be able to tell him exactly where the Shaido were. They would. He knew it in his bones. The certainty flowed in his veins. He would find Faile and free her. That came before anything, even living, so long as he lived long enough to accomplish it, yet he was a hammer, now, and if there was any way to accomplish it, any way at all, he intended to hammer these Shaido into scrap.
Tossing the blankets aside, Perrin tugged his gauntlets back on, gathered his axe from where it lay beside him, a half-moon blade balanced by a heavy spike, and rolled out into the open, rising to his feet on trampled, frozen snow. Carts stood all around him in rows, in what had been Brytan’s fields. The arrival of more strangers, so many, and armed, with their foreign banners, had been more than the survivors of the little village could absorb. As soon as Perrin would let them, the pitiful remnant had fled into the forest, carrying what they could on their backs and on drag-sleds. They had run as hard as if Perrin was another Shaido, not looking back for fear he was following them.
As he slipped the axe haft through the thick loop on his belt, a deeper shadow beside a nearby cart grew taller and resolved into a man swathed in a cloak that seemed black in the darkness. Perrin was not surprised; the nearby horselines thickened the air with the smell of several thousand animals, mounts and remounts and cart horses, not to mention the sweet stink of horse dung, but he still had caught the other’s scent on waking. Man smell always stood out. Besides, Aram was always there when Perrin woke, waiting. A waning sickle moon low in the sky still gave enough light for him to make out the other man’s face, if not clearly, and the brass-pommeled hilt of his sword slanting up past his shoulder. Aram had been a Tinker once, but Perrin did not think he would be again, even if he did wear a brightly striped Tinker coat. There was a frowning hardness about Aram now that moon shadows could not hide. He stood as though ready to draw that sword, and since Faile was taken, anger seemed a permanent part of his scent. A great deal had changed when Faile was taken. Anyway, Perrin understood anger. He had not, not really, before Faile was taken.
“They want to see you, Lord Perrin,” Aram said, jerking his head toward two dim forms farther away between the lines of carts. The words came out in a faint mist in the cold air. “I told them to let you sleep.” It was a fault Aram had, looking after him too much, unasked.
Testing the air, Perrin separated out the scents of those two shadows from the masking smell of the horses. “I’ll see them now. Have Stepper readied for me, Aram.” He tried to be in the saddle before the rest of the camp woke. Partly that was because standing still for long seemed beyond him. Standing still was not catching the Shaido. Partly it was to avoid having to share anyone’s company he could avoid. He would have gone out with the scouts himself if the men and women already doing that job were not so much better at it than he.
“Yes, my Lord.” A jaggedness entered Aram’s scent as he trudged away across the snow, but Perrin barely noted it. Only something important would make Sebban Balwer root himself out of his blankets in the dark, and as for Selande Darengil . . .
Balwer appeared skinny even in a bulky cloak, his pinched face all but hidden in the deep hood. Had he stood straight instead of hunching, he still would have been at most a hand taller than the Cairhienin woman, who was not tall. With his arms wrapped around himself, he was hopping from one foot to the other, trying to avoid the cold that must be soaking through his boots. Selande, in a man’s dark coat and breeches, made a good effort at ignoring the temperature despite the feathery white that marked every breath. She was shivering, but managed to swagger standing still, with one side of her cloak thrown back and a gloved hand on the hilt of her sword. The hood of her cloak was lowered, too, exposing hair cut short except for the tail in the back that was tied at the nape of her neck with a dark ribbon. Selande was the leader of those fools who wanted to be imitation Aiel, Aiel who carried swords. Her scent was soft and thick, like a jelly. She was worried. Balwer smelled . . . intent . . . but then, he nearly always did, though there was never any heat to his intensity, only focus.
The skinny little man stopped hopping to make a stiff, hurried bow. “The Lady Selande has news I think you should hear from her lips, my Lord.” Balwer’s thin voice was dry and precise, just like its owner. He would sound the same with his neck on a headsman’s block. “My Lady, if you would?” He was only a secretary—Faile’s secretary, and Perrin’s—a fussy self-effacing fellow for the most part, and Selande was a noblewoman, but Balwer made that more than a request.
She gave him a sharp sideways glance, shifting her sword, and Perrin tensed to grab her. He did not think she would actually draw on the man, but then again, he was not sure enough of her, or any of her ridiculous friends, to put it out of the question.
With a toss of her head, Selande turned her attention to Perrin. “I see you, Lord Perrin Goldeneyes,” she began in the crisp accents of Cairhien, but, aware that he had little patience for her pretend Aiel formality, she hurried on. “I have learned three things tonight. First, the least important, Haviar reported that Masema sent another rider back toward Amadicia yesterday. Nerion tried to follow, but lost him.”
“Tell Nerion I said he isn’t to follow anybody,” Perrin told her sharply. “And tell Haviar the same. They should know that! They are to watch, listen, and report what they see and hear, no more. Do you understand me?” Selande gave a quick nod, a thorn of fear entering her scent for a moment. Fear of him, Perrin supposed, fear that he was angry with her. Yellow eyes on a man made some people uneasy. He took his hand from his axe and clasped both hands behind his back.
Haviar and Nerion were more of Faile’s two dozen young fools, one Tairen, the other Cairhienin. Faile had used the lot of them for eyes-and-ears, a fact that still irritated him for some reason, though she had told him to his face that spying was a wife’s business.  The whole notion of spying made him uncomfortable, but if Faile could use them so, then so could her husband, when there was need. Just the two, though. Masema seemed convinced that everyone except Darkfriends were fated to follow him sooner or later, yet he might grow suspicious if too many left Perrin’s camp to join him.
“Don’t call him Masema, not even here,” he added brusquely. Lately the man claimed Masema Dagar was actually dead and risen from the grave as the Prophet of the Lord Dragon Reborn, and he was touchier than ever about mention of his former name. “You get careless with your tongue in the wrong place, and you might be lucky if he just has a few of his bullyboys flog you the next time they can find you alone.” Selande nodded again, gravely, and this time without any fear smell.
“It’s almost dawn,” Balwer murmured, shivering and pulling his cloak tighter. “All will be waking before long, and some matters are best discussed unseen. If my Lady will continue?” Once again, that was more than a suggestion. Selande and the rest of Faile’s hangers-on had been good only for causing trouble, that Perrin could see, and Balwer looked to be trying to put a fly up her nose for some reason, but she actually gave an embarrassed start and murmured an apology.
The darkness truly was beginning to lessen, Perrin realized, at least to his eyes. The sky overhead still looked black, dusted with bright stars, yet he could almost make out the colors of the six thin stripes that crossed the front of Selande’s coat. He could tell one from another, anyway. The realization that he had slept later than usual made him growl. He could not afford to give in to weariness, however tired he was! He needed to hear Selande’s report—she would not be worried about Masema sending out riders; the man did that almost every day—yet he looked anxiously for Aram and Stepper. His ears picked up the sounds of activity among the horselines, but there was no sign of his horse yet.
“The second thing, my Lord,” Selande said, “is that Haviar has seen casks of salt fish and salt beef branded with Altaran markings, a great many of them. He says there are Altarans among Mas . . . among the Prophet’s people, too. Several appear to be craftsfolk, and one or two could be merchants or town officials. Established men and women, in any case, solid folk, and some seem unsure they made the right decision. A few questions might reveal from where the fish and beef came. And perhaps gain more eyes-and-ears for you.”
“I know where the fish and beef came from and so do you,” Perrin said irritably. His hands knotted into fists behind his back. He had hoped the speed with which he was moving would keep Masema from sending out raiding parties. That was what they were, and as bad as the Shaido if not worse. They offered people a chance to swear to the Dragon Reborn, and those who refused, sometimes those who simply hesitated too long, died by fire and steel. In any case, whether or not they marched off to follow Masema, those who swore were expected to donate generously in support of the Prophet’s cause, while those who died were plainly Darkfriends, their belongings forfeit. Thieves lost a hand, by Masema’s laws, but none of what his raiders did was thieving, according to Masema. By his laws, murder and a whole host of other crimes merited hanging, yet a fair number of his followers seemed to prefer killing to receiving oaths. There was more loot, that way, and for some of them murder was a fine game to play before eating.
“Tell them to keep clear of these Altarans,” Perrin went on. “All sorts drift into Masema’s following, and even if they are having second thoughts, it won’t take them long to stink of zeal like the rest. They wouldn’t hesitate to gut a neighbor then, much less somebody who’s asked the wrong questions. What I want to know is what Masema’s doing, what he’s planning.”
That the man had some scheme seemed obvious. Masema claimed it was blasphemy for anyone except Rand to touch the One Power, claimed he wanted nothing more than to join Rand in the east. As always, thought of Rand brought colors whirling through Perrin’s head, more vividly than usual this time, but anger melted them to vapor. Blasphemy or no, Masema had accepted Traveling, which was not just channeling but men channeling. And no matter what he claimed, he had done it to remain in the west as long as possible, not to help rescue Faile. Perrin tended to trust people until they proved unreliable, but one sniff of Masema had told him the fellow was as insane as a rabid animal and less trustworthy.
He had considered ways to stop that scheme, whatever it was. Ways to stop Masema’s killing and burning. Masema had ten or twelve thousand men with him, maybe more—the man was not very forthcoming about numbers, and the way they camped in a squalid sprawl made counting impossible—while less than a quarter of that number followed Perrin, several hundred of them cart drivers and grooms and others who would be more hindrance than help in a fight, yet with three Aes Sedai and two Asha’man, not to mention six Aiel Wise Ones, he could halt Masema in his tracks. The Wise Ones and two of the Aes Sedai would be eager to take part. More than simply willing, at least. They wanted Masema dead. But dispersing Masema’s army would only break it into hundreds of smaller bands that would scatter across Altara and beyond, still looting and killing, just for themselves instead of in the name of the Dragon Reborn. Breaking the Shaido will do the same thing, he thought, and pushed the thought away. Stopping Masema would take time he did not have. The man would have to keep until Faile was safe. Until the Shaido were smashed to kindling.
“What’s the third thing you learned tonight, Selande?” he said roughly. To his surprise, the smell of worry coming from the woman thickened.
“Haviar saw someone,” she said slowly. “He did not tell me at first.” Her voice hardened for a moment. “I made sure that will not happen again!” Drawing a deep breath, she seemed to struggle with herself, then burst out, “Masuri Sedai has visited Masema . . . the Prophet. It is true, my Lord; believe me! Haviar has seen her more than once. She slips into their camp hooded and leaves the same way, but he has had a good look at her face twice. A man accompanies her each time, and sometimes another woman. Haviar has not seen the man well enough to be sure, but the description fits Rovair, Masuri’s Warder, and Haviar is certain the second woman is Annoura Sedai.”
She broke off abruptly, her eyes shining darkly in the moonlight as she watched him. Light, she was as worried about how he would take it as by what it meant! He forced his hands to unclench. Masema despised Aes Sedai as much as he did Darkfriends; he nearly considered them Darkfriends. So why would he receive two sisters? Why would they go to him? Annoura’s opinion of Masema lay hidden behind Aes Sedai mystery and double-jointed comments that could mean anything, but Masuri had said straight out that the man needed to be put down like a mad dog.
“Make sure Haviar and Nerion keep a sharp eye for the sisters and see if they can eavesdrop on one of their meetings with Masema.” Could Haviar be mistaken? No, there were few women in Masema’s camp, relatively speaking, and it passed belief that the Tairen could mistake one of those unwashed murderous-eyed harridans for Masuri. The sort of women willing to march with Masema usually made the men look like Tinkers. “Tell them to take care, though. Better to let the chance pass than get caught at it. They’re no good to anyone strung up on a tree.” Perrin knew he sounded gruff, and tried to make his voice milder. That seemed harder since Faile was kidnapped. “You’ve done well, Selande.” At least he did not sound as if he were barking at her. “You and Haviar and Nerion. Faile would be proud if she knew.”
 Pride, clean and bright, the pride of accomplishment, almost overwhelmed any other scent from her! “Thank you, my Lord. Thank you!” You would have thought he had given her a prize. Maybe he had, come to think on it. Though come to think Faile might not be best pleased that he was using her eyes-and-ears, or even knew about them. Once, the thought of Faile displeased would have made him uneasy, but that was before he learned about her spies. And that little matter of the Broken Crown that Elyas had let slip. Everybody always said that wives kept their secrets close, but there were limits!
Adjusting his cloak on his narrow shoulders with one hand, Balwer coughed behind the other. “Well said, my Lord. Very well said. My Lady, I’m sure you want to pass on Lord Perrin’s instructions as soon as possible. It wouldn’t do for there to be any misunderstanding.”
Selande nodded without taking her eyes off Perrin. Her mouth opened, and Perrin was sure she intended to say something about hoping he found water and shade. Light, water was the one thing they had in plenty, even if it was mostly frozen, and this time of year, nobody needed shade even at noon!  If I may be so bold, Grace has favored the Lady Faile in you.”
Perrin jerked his head in a nod of thanks. There was a taste of ashes in his mouth. Grace had a funny way of favoring Faile, giving her a husband who still had not found her after more than two weeks of searching. The Maidens said she had been made gai’shain, that she would not be mistreated, but they had to admit these Shaido already had broken their customs a hundred different ways.
In his book, being kidnapped was mistreatment enough. Bitter ashes.
“The lady will do very well, my Lord,” Balwer said softly, watching Selande vanish into the darkness among the carts. This approval was a surprise; he had tried to talk Perrin out of using Selande and her friends on the grounds they were hotheaded and unreliable. “She has the necessary instincts. Cairhienin do, usually, and Tairens to some extent, at least the nobles, especially once—” He cut off abruptly, and eyed Perrin cautiously. If he were another man, Perrin would have believed he had said more than he intended, but he doubted Balwer slipped in that fashion. The man’s scent remained steady, not jiggling the way it would in a man who was unsure. “May I offer one or two points on her report, my Lord?”
The crunch of hooves in the snow announced the approach of Aram, leading Perrin’s dun stallion and his own rangy gray gelding. The two animals were trying to nip at one another, and Aram was keeping them well apart, though with some difficulty. Balwer sighed.
“You can say whatever you need to in front of Aram, Master Balwer,” Perrin said. The little man bowed his head in acquiescence, but he sighed again, too. Everybody in the camp knew that Balwer had the skill of fitting together rumors and chance-heard comments and things people had done to form a picture of what had really happened or what might, and Balwer himself considered that part of his job as a secretary, but for some reason he liked to pretend he never did any such thing. It was a harmless pretense, and Perrin tended to humor him.
Taking Stepper’s reins from Aram, he said, “Walk behind us awhile, Aram. I need to talk with Master Balwer in private.” Balwer’s sigh was so faint that Perrin barely heard it.
Aram fell in behind the two of them without a word as they began to walk, frozen snow cracking beneath their feet, but his scent grew spiky again, and quivery, a thin, sour smell. This time, Perrin recognized the scent, though he paid it no more mind than usual. Aram was jealous of anyone except Faile who spent time with him. Perrin saw no way to put a stop to it, and anyway, he was as used to Aram’s possessiveness as he was to the way Balwer hopped along at his side, glancing over his shoulder to see whether Aram was close enough to hear when he finally decided to speak. Balwer’s razor-thin scent of suspicion, curiously dry and not even warm but still suspicion, provided a counterpoint to Aram’s jealousy. You could not change men who did not want to change.
The horselines and supply carts were located in the middle of the camp, where thieves would have a hard time reaching them, and although the sky still looked black to most eyes, the cart drivers and grooms, who slept close to their charges, were already awake and folding their blankets, some tending shelters made of pine boughs and other small tree limbs harvested from the surrounding forest, in case they might be needed another night. Cook fires were being lit and small black kettles set over them, though there was little to eat except porridge or dried beans. Hunting and trapping added some meat, venison and rabbits, partridges and woodhens and the like, but that could only go so far with so many to feed, and there had been nowhere to buy supplies since before crossing the Eldar. A ripple of bows and curtsies and murmurs of “A good morning, my Lord” and “The Light favor you, my Lord” followed Perrin, but the men and women who saw him stopped trying to strengthen their shelters, and a few began to pull theirs down, as though they had sensed his determination from his stride. They should have known his resolve by now. Since the day he realized how badly he had blundered, he had not spent two nights in one place. He returned the greetings without slowing.
The rest of the camp made a thin ring around the horses and carts, facing the encircling forest, with the Two Rivers men divided into four groups and the lancers from Ghealdan and Mayene spaced between them. Whoever came at them, from whatever direction, would face Two Rivers longbows and trained cavalry. It was not a sudden appearance by the Shaido that Perrin feared, but rather Masema. The man seemed to be following him meekly enough, but aside from this news of raiding, nine Ghealdanin and eight Mayeners had vanished in the last two weeks, and no one believed they had deserted. Before that, on the day Faile was stolen, twenty Mayeners had been ambushed and killed, and no one believed it had been anyone but Masema’s men who did the killing. So an uneasy peace existed, a strange thorny sort of peace, yet a copper wagered on it lasting forever was likely a copper lost. Masema pretended to be unaware of any danger to that peace, but his followers seemed not to care one way or the other, and whatever Masema pretended, they took their lead from him. Somehow, though, Perrin intended to see that it endured until Faile was free. Making his own camp too tough a nut to crack was one way of making the peace last.
The Aiel had insisted on having their own thin wedge of the strange pie, though there were fewer than fifty of them, counting the gai’shain who served the Wise Ones, and he paused to study their low dark tents. The only other tents erected anywhere in the camp were those of Berelain and her two serving women, on the other side of the camp, not far from Brytan’s few houses. Fleas and lice in hordes made those uninhabitable, even for hardened soldiers seeking shelter from the cold, and the barns were putrid ramshackle affairs that let the wind howl through and harbored worse vermin than the houses. The Maidens and Gaul, the only man among the Aiel not gai’shain, were all out with the scouts, and the Aiel tents were silent and still, though the smell of smoke coming from some of the vent holes told him the gai’shain were preparing breakfast for the Wise Ones, or serving it. Annoura was Berelain’s adviser, and usually shared her tent, but Masuri and Seonid would be with the Wise Ones, maybe even helping the gai’shain with breakfast. They still tried to hide the fact that the Wise Ones considered them apprentices, though everyone in camp must be aware of it by now. Anyone who saw an Aes Sedai actually carrying firewood or water, or heard one being switched, could make it out. The two Aes Sedai were oathsworn to Rand—again the colors whirled in his head, an explosion of hues; again they melted under his constant anger—but Edarra and the other Wise Ones had been sent to keep an eye on them.
Only the Aes Sedai themselves knew how tightly their oaths held them, or what room they saw to maneuver between the words, and neither was allowed to hop unless a Wise One said toad. Seonid and Masuri had both said Masema should be put down like a mad dog, and the Wise Ones agreed. Or so they said. They had no Three Oaths to hold them to the truth, though in truth, that particular Oath held the Aes Sedai more in letter than spirit. And he seemed to recall one of the Wise Ones telling him that Masuri thought that the mad dog could be leashed. Not allowed to hop unless a Wise One said toad. It was like a blacksmith’s puzzle with the edges of the metal pieces sharpened. He needed to solve it, but one mistake and he could cut himself to the bone.
From the corner of his eye, Perrin caught Balwer watching him, lips pursed in thought. A bird studying something unfamiliar, not afraid, not hungry, just curious. Gathering Stepper’s reins, he walked on so quickly that the little man had to lengthen his stride into small jumps to catch up.
Two Rivers men had the segment of camp next to the Aiel, facing northeast, and Perrin considered walking a little north, to where Ghealdanin lancers were camped, or south to the nearest Mayener section, but taking a deep breath, he made himself lead his horse through his friends and neighbors from home. They were all awake, huddling in their cloaks and feeding the remnants of their shelters into the cook fires or cutting up the cold remains of last night’s rabbit to add to the porridge in the kettles. Talk dwindled and the smell of wariness grew thick as heads lifted to watch him. Whetstones paused in sliding along steel, then resumed their sibilant whispering. The bow was their preferred weapon, but everyone carried a heavy dagger or a short-sword as well, or sometimes a longsword, and they had picked up spears and halberds and other polearms with strange blades and points that the Shaido had not thought worth carrying off with their pillage. Spears they were accustomed to, and hands used to wielding the quarterstaff at feastday competitions found the polearms not much different once the weight of metal on one end was accounted for. Their faces were hungry, tired and withdrawn.
Someone raised a halfhearted cry of “Goldeneyes!” but no one took it up, a thing that would have pleased Perrin a month gone. A great deal had changed since Faile was taken. Now their silence was leaden. Young Kenly Maerin, his cheeks still pale where he had scraped off his attempt at a beard, avoided meeting Perrin’s eyes, and Jori Congar, lightfingered whenever he saw anything small and valuable and drunk whenever he could manage it, spat contemptuously as Perrin passed by. Ban Crawe punched Jori’s shoulder for it, hard, but Ban did not look at Perrin either.
Dannil Lewin stood up, tugging nervously at the thick mustache that looked so ridiculous beneath his beak of a nose. “Orders, Lord Perrin?” The skinny man actually looked relieved when Perrin shook his head, and he sat down again quickly, staring at the nearest kettle as though he were anxious for the morning gruel. Maybe he was; nobody got a full belly lately, and Dannil had never had much spare flesh on his bones. Behind Perrin, Aram made a disgusted sound very like a growl.
There were others here besides Two Rivers folk, yet they were no better. Oh, Lamgwin Dorn, a hulking fellow with scars on his face, tugged his forelock and bobbed his head. Lamgwin looked like a shoulderthumper, a tavern tough, but he was Perrin’s bodyservant now, when he had need of one, which was not often, and he might just want to keep in a good odor with his employer.  Breane Taborwin, dark eyes fierce in her pale Cairhienin face, slapped Lamgwin’s arm hard and frowned up at him. She was Lamgwin’s woman, if not his wife, and the second of Faile’s three maids. They would follow the Shaido till they dropped dead, if necessary, and fall on Faile’s neck when they found her, but only Lamgwin had an ounce of welcome for Perrin. He might have gotten more from Jur Grady—the Asha’man were estranged from everyone else themselves, by who and what they were, and neither had shown any animosity toward Perrin—but despite the noise of people tramping about on the frozen snow and cursing when they slipped, Grady was still wrapped in his blankets, snoring away beneath a pine-branch lean-to. Perrin walked through his friends and neighbors and servants and felt alone. A man could only proclaim his faithfulness so long before he just gave up. The heart of his life lay somewhere to the northeast. Everything would return to normal once he had her back.
A thicket of sharpened stakes ten paces deep encircled the camp, and he went to the edge of the Ghealdanin lancers’ section, where angled paths had been left for mounted men to ride out, though Balwer and Aram had to fall in behind him in the narrow way. In front of the Two Rivers men, a man afoot would have to twist and turn to make it through. The edge of the forest lay little more than a hundred paces distant, easy bowshot for Two Rivers men, huge trees thrusting a canopy high into the sky. Some of the trees here were strange to Perrin, but there were pines and leatherleaf and elms out there, some as much as three or four paces thick at the base, and oaks that were larger still. Trees that big killed anything larger than weeds or small bushes that tried to grow beneath them, leaving wide spaces between, but shadows darker than the night filled those spaces. An old forest, one that could swallow armies whole and never give up the bones.
Balwer followed him all the way through the stakes before deciding that this was as close to alone with Perrin as he was likely to get any time soon. “The riders Masema has sent out, my Lord,” he said, and holding his cloak close he cast a suspicious look back at Aram, who met it with a flat stare.
“I know,” Perrin said, “you think they’re going to the Whitecloaks.” He was eager to be moving, and that much farther from his friends. He put the hand holding his reins on the saddlebow, but refrained from putting a boot in the stirrup. Stepper tossed his head, also impatient. “Masema could be sending messages to the Seanchan just as easily.”
“As you have said, my Lord. A viable possibility, to be sure. May I suggest once again, however, that Masema’s view of Aes Sedai is very close to that of the Whitecloaks? In fact, identical. He would see every last sister dead, if he could. The Seanchan view is more . . . pragmatic, if I may be permitted to call it that. Less in accord with Masema, in any case.”
“However much you hate Whitecloaks, Master Balwer, they aren’t at the root of every evil. And Masema has dealt with the Seanchan before.”
“As you say, my Lord.” Balwer’s face did not change, but he reeked of doubt. Perrin could not prove Masema’s meetings with the Seanchan, and telling anyone how he had learned of them would only add to his present difficulties. That gave Balwer problems; he was a man who liked evidence. “As for the Aes Sedai and the Wise Ones, my Lord . . . Aes Sedai always seem to believe they know better than anyone else, except possibly another Aes Sedai. I believe the Wise Ones are much the same.”
Perrin snorted brief white plumes in the air. “Tell me something I don’t know. Like why Masuri would meet with Masema, and why the Wise Ones allowed it. I’ll wager Stepper against a horseshoe nail she didn’t do it without their permission.” Annoura was another question, but she could be acting on her own. It certainly seemed unlikely she was acting at Berelain’s behest.
Shifting his cloak on his shoulders, Balwer peered back across the rows of sharpened stakes into the camp, toward the Aiel tents, squinting as if he hoped to see through the tent walls. “There are many possibilities, my Lord,” he said testily. “For some who swear an oath, whatever is not forbidden is permitted, and whatever is not commanded can be ignored. Others take actions they believe will help their liege without first asking permission. The Aes Sedai and the Wise Ones fall into one of those categories, it seems, but further than that, I can only speculate, as matters stand.”
“I could just ask. Aes Sedai can’t lie, and if I press hard enough, Masuri might actually tell me the truth.”
Balwer grimaced as though at a sudden stomach pain. “Perhaps, my Lord. Perhaps. More likely is that she would tell you something that sounds like the truth. Aes Sedai are experienced in that, as you know. In any event, my Lord, Masuri would wonder how you knew to ask, and that line of thought might lead to Haviar and Nerion. Under the circumstances, who can say who she might tell? Straightforward is not always the best way. Sometimes, certain things must be done behind masks, for safety.”
“I told you the Aes Sedai couldn’t be trusted,” Aram said abruptly. “I told you that, Lord Perrin.” He fell silent when Perrin raised a hand, but the stink of fury from him was so strong that Perrin had to exhale to clear his lungs. Part of him wanted to draw the scent deep and let it consume him.
Perrin studied Balwer carefully. If Aes Sedai could twist the truth till you could not tell up from down, and they could and did, how far could you trust? Trust was always the question. He had learned that in hard lessons. He took a firm check on his anger, though. A hammer had to be used with care, and he was working a forge where one slip would tear the heart out of his chest. “And might matters change if some of Selande’s friends began spending more time among the Aiel? They want to be Aiel, after all. That ought to give them enough excuse. And maybe one of them can strike up a friendship with Berelain, and with her advisor.”
“That should be possible, my Lord,” Balwer said after the slightest hesitation. “Lady Medore’s father is a High Lord of Tear, giving her sufficient rank to approach the First of Mayene, and also a reason. Possibly one or two of the Cairhienin stand high enough, as well. Finding those to live among the Aiel will be easier still.”
Perrin nodded. Infinite care with the hammer, however much you wanted to smash whatever lay within reach. “Then do it. But, Master Balwer, you’ve been trying to . . . guide . . . me to this since Selande left us. From now on, if you have a suggestion to make, make it. Even if I say no to nine in a row, I’ll always listen to a tenth. I’m not a clever man, but I’m willing to listen to people who are, and I think you are. Just don’t try poking me in the direction you want me to go. I don’t like that, Master Balwer.”
Balwer blinked, then of all things, bowed with his hands folded at his waist. He smelled surprised. And gratified. Gratified? “As you say, my Lord. My previous employer disliked me suggesting actions unless I was asked. I won’t make the same mistake again, I assure you.” Eyeing Perrin, he seemed to reach a decision. “If I may say so,” he said carefully, “I have found serving you . . . pleasant . . . in ways I did not expect. You are what you seem, my Lord, with no poisoned needles hidden away to catch the unwary. My previous employer was known widely for cleverness, but I believe you are equally clever, in a different way. I believe I would regret leaving your service. Any man might say these things to keep his place, but I mean them.”
Poisoned needles? Before entering Perrin’s service, Balwer’s last employment had been as secretary to a Murandian noblewoman fallen into hard times who could no longer afford to keep him. Murandy must be a rougher place than Perrin thought. “I see no reason for you to leave my employ. Just tell me what you want to do and let me decide, don’t try to prod. And forget the flattery.”
“I never flatter, my Lord. But I am adept at shaping myself to my master’s needs; it is a requirement of my profession.” The little man bowed once more. He had never been this formal before. “If you have no further questions, my Lord, may I go to find the Lady Medore?”
Perrin nodded. The little man bowed yet again, backing away, then went skittering toward the camp, his cloak fluttering behind him as he dodged through the sharpened stakes like a sparrow hopping across the snow. He was a strange fellow.
“I don’t trust him,” Aram muttered, staring after Balwer. “And I don’t trust Selande and that lot. They’ll throw in with the Aes Sedai, you mark my words.”
“You have to trust somebody,” Perrin said roughly. The question was, who? Swinging into Stepper’s saddle, he booted the dun in the ribs. A hammer was useless lying at rest.


Psalms 60:3
Thou hast shewed thy people hard things: thou hast made us to drink the wine of astonishment.


Currently a 3rd year undergrad student at MACE Kothamangalam. I'm pursuing B.Tech in CSE. I've been passionate about developing software in a way that it helps a lot of people. I love coding👨💻, listening to music🎶🎧, playing
football/soccer⚽, solving patterns🔢. I love sci-fi movies or series. I've been recently a lot into Dramas like Sweet Combat.


{{+bindTo:partials.standard_nacl_api}}
| void(* | AddRefResource )(PP_Resource resource) |
| void(* | ReleaseResource )(PP_Resource resource) |
| PP_Time(* | GetTime )(void) |
| PP_TimeTicks(* | GetTimeTicks )(void) |
| void(* | CallOnMainThread )(int32_t delay_in_milliseconds, struct PP_CompletionCallback callback, int32_t result) |
| PP_Bool(* | IsMainThread )(void) |
The PPB_Core
interface contains pointers to functions related to memory management, time, and threads on the browser.
| void(* PPB_Core::AddRefResource)(PP_Resource resource) |
AddRefResource() adds a reference to a resource.
| [in] | config | A PP_Resource corresponding to a resource. |
| void(* PPB_Core::CallOnMainThread)(int32_t delay_in_milliseconds, struct PP_CompletionCallback callback, int32_t result) |
CallOnMainThread() schedules work to be executed on the main module thread after the specified delay.
The delay may be 0 to specify a call back as soon as possible.
The result
parameter will just be passed as the second argument to the callback. Many applications won't need this, but it allows a module to emulate calls of some callbacks which do use this value.
Note: CallOnMainThread, even when used from the main thread with a delay of 0 milliseconds, will never directly invoke the callback. Even in this case, the callback will be scheduled asynchronously.
Note: If the browser is shutting down or if the module has no instances, then the callback function may not be called.
| [in] | delay_in_milliseconds | An int32_t delay in milliseconds. |
| [in] | callback | A PP_CompletionCallback callback function that the browser will call after the specified delay. |
| [in] | result | An int32_t that the browser will pass to the given PP_CompletionCallback . |
| PP_Time(* PPB_Core::GetTime)(void) |
GetTime() returns the "wall clock time" according to the browser.
PP_Time
containing the "wall clock time" according to the browser. | PP_TimeTicks(* PPB_Core::GetTimeTicks)(void) |
GetTimeTicks() returns the "tick time" according to the browser.
This clock is used by the browser when passing some event times to the module (e.g. using the PP_InputEvent::time_stamp_seconds
field). It is not correlated to any actual wall clock time (like GetTime()). Because of this, it will not run change if the user changes their computer clock.
PP_TimeTicks
containing the "tick time" according to the browser. | PP_Bool(* PPB_Core::IsMainThread)(void) |
IsMainThread() returns true if the current thread is the main pepper thread.
This function is useful for implementing sanity checks, and deciding if dispatching using CallOnMainThread() is required.
PP_Bool
containing PP_TRUE
if the current thread is the main pepper thread, otherwise PP_FALSE
. | void(* PPB_Core::ReleaseResource)(PP_Resource resource) |
ReleaseResource() removes a reference from a resource.
| [in] | config | A PP_Resource corresponding to a resource. |


Hamiltonia is a smart application that do the roadtrip plans for you. Whenever you want to go on a roadtrip with families and friends, open trip planner and get on your journey.
Click on DOODLE to draw your ideal route.
Press INFO to specify your trip plans
Start Date
End Date


Leave Form
First Name
Last Name
Email Address
Phone Number
Semester
Choose your semester
I
II
III
IV
V
VI
VII
VIII
Type of Leave
Choose a Leave
Not Well
Gatepass
On Duty
Branch
Choose your branch
CSE
CSC
ME
ECE
CE
Date
Time From
Time To
Reason


MT-1040 is a new product developed independently by the Charter Leader Group - Wireless network product testing machine, which can be applied to many kinds of
Wireless test equipment and commonly used wireless communication chip products, test products, test four test items simultaneously in almost the same time comparing with testing one DUT.
According to our measurement, MT-1040 could increase production capacity of more than 3.5 times; an RF tester can be measured at the same time measuring four products, greatly improving the instrument utilization.
Test machine provides a high degree of integration and stability of reliable hardware and software, convenient and clear test interface, without regular maintenance, installation is very convenient;
Reduce the purchase or lease of the RF tester, and periodic calibration costs, thereby reducing the production phase of the test costs.
Manager: Joyce Chen
TEL: +886-2-2797-0115 #292
Email: joyce_chen@clpe.com.tw


Initial economic assessment - {{ economic_assessment.created_on|date:"j F Y" }}
{% if economic_assessment.automated_analysis_data %}
{% include "barriers/assessments/economic/partials/automated_analysis_data.html" with data=economic_assessment.automated_analysis_data %}
{% endif %}


{{ "{# The default project templates assumes a _base.html template to be extended. #}" }} {{ "{% extends '_base.html' %}" }} {{ "{% block css %}" }} {{ "{{ super() }}" }} {{ "{% endblock %}" }} {{ "{% block content %}" }}
Grab a cup of coffee and tea and get started working on your new project.
Start by editing {{ project_name }}/templates/index.html
, this very file.
New to Tarbell? Check out the project building docs in the Tarbell readme.
Hey! How did that navbar get up there? The navbar is set up by
the default Javascript app associated with this project. To disable it, edit
{{ project_name }}/static/js/app.js
.


We pick out the most popular locations to shop. You can bring back souveniers for your friends and family while browsing the local markets of the each country.
We help you look for the most popular places to visit. You will be able hike up ruins, stroll along the beach, and browse historical monuments.
No more waiting for flight deals and reading reviews for the best hotel. We will book your flights for you! We will book hotels or airbnbs at your preferred location.
We know all the best locations for amazing food in the area. We will introduce you everything from local diners to restaurants that appear on TV!
If you every run into trouble, we will only be one phone call away. Our employees are trained to provide first aid.If needed, we will work with local first responders to provide you with urgent and effective care.
We provide you with your own personal chauffeur during your trip. You don't have to worry about figuring out how to read maps or ask strangers for directions.
We started off as a group of friends who simply enjoyed traveling. We wanted to provide other people with serives that we believe would make any trip more enjoyable.
We originally provided these services for friends and family. We enjoyed the process of helping other people create a memorable vacation that we built this company.
As our company gained more customers who believed in our work, we began to add more services that will allow our customers have a more enjoyable trip.
As our company gained more customers who believed in our work, we were able to find more partnering companies to expand the countries that our customers can travel to.
We are not going to stop here. Our company will continue to grow with the help of our supporters and we will continue to work hard to provide you with the best services possible!
Customer Support
Trip Planner
Deal Finder
Enjoy your trip at ease!


My First Heading
My first paragraph.
Bold stuff
more divisions
link to Goagal
first element of a list
second
blablabla
first element of a list
second
blablabla
useful links
go to google
go to github
First name
Last name
Age
Faen
Barbooso
121
Tokil
Ladude
387


Introduction
BigBit standard is an alternate of IEEE 754 standard and UTF encoding.
Benefits
- No precision loss: Now
0.3 - 0.1
is always 0.2
not 0.19999999999999998
. So if you're working on a science or finance project, switch to it immediately.
- Biggest number: It can represent any number in the universe
- Take less memory: Unlike binary16, binary32, .. It doesn't occupy fixed blocks to represent a number. And take lesser memory.
- Less decision, no confusion: LB encoding covers all UTF formats. And three data types (EB, HB, EHB) covers maximum numeric data types, like: integer, float, double, long, decimal, biginteger etc.
Try yourself
Click on any link below to see the result. Or directly put a number or string in the above text box.
Number
Text


Package org.drip.spline.stretch
Class CalibratableMultiSegmentSequence
java.lang.Object
org.drip.function.definition.R1ToR1
org.drip.spline.stretch.CalibratableMultiSegmentSequence
- All Implemented Interfaces:
MultiSegmentSequence
,SingleSegmentSequence
- Direct Known Subclasses:
CurveStretch
public class CalibratableMultiSegmentSequence extends R1ToR1 implements MultiSegmentSequence
CalibratableMultiSegmentSequence implements the MultiSegmentSequence span that spans multiple
segments. It holds the ordered segment sequence, segment sequence builder, the segment control parameters,
and, if available, the spanning Jacobian. It provides a variety of customization for the segment
construction and state representation control.
- Module = Computational Core Module
- Library = Spline Builder Library
- Project = Basis Splines and Linear Compounders across a Broad Family of Spline Basis Functions
- Package = Multi-Segment Sequence Spline Stretch
- Author:
- Lakshmi Krishnamurthy
-
Field Summary
Fields inherited from interface org.drip.spline.stretch.MultiSegmentSequence
CALIBRATE, CALIBRATE_JACOBIAN
-
Constructor Summary
Constructors Constructor Description CalibratableMultiSegmentSequence(java.lang.String strName, LatentStateResponseModel[] aCS, SegmentCustomBuilderControl[] aSCBC)
CalibratableMultiSegmentSequence constructor - Construct a sequence of Basis Spline Segments -
Method Summary
Modifier and Type Method Description double
bestFitDPE(StretchBestFitResponse rbfr)
Retrieve the Stretch Best Fit DPEdouble
calcLeftEdgeDerivative(int iOrder)
Calculate the Derivative of the requested order at the Left Edge of the Stretchdouble
calcRightEdgeDerivative(int iOrder)
Calculate the Derivative of the requested order at the right Edge of the StretchSegmentPredictorResponseDerivative
calcSPRD(double dblPredictorOrdinate)
Calculate the SPRD at the specified Predictor OrdinateCalibratableMultiSegmentSequence
clipLeft(java.lang.String strName, double dblPredictorOrdinate)
Generate a new Stretch by clipping all the Segments to the Left of the specified Predictor Ordinate.CalibratableMultiSegmentSequence
clipRight(java.lang.String strName, double dblPredictorOrdinate)
Generate a new Stretch by clipping all the Segments to the Right of the specified Predictor Ordinate.int
containingIndex(double dblPredictorOrdinate, boolean bIncludeLeft, boolean bIncludeRight)
Return the Index for the Segment containing specified Predictor Ordinatedouble
curvatureDPE()
Retrieve the Span Curvature DPEjava.lang.String
displayString()
Display the Segmentsdouble
evaluate(double dblLeftSlope)
Evaluate for the given variatedouble
getLeftPredictorOrdinateEdge()
Return the Left Predictor Ordinate Edgedouble
getRightPredictorOrdinateEdge()
Return the Right Predictor Ordinate Edgeboolean
in(double dblPredictorOrdinate)
Check if the Predictor Ordinate is in the Stretch Rangedouble
integrate(double dblBegin, double dblEnd)
Integrate over the given rangeboolean
isCoMonotone(double[] adblMeasuredResponse)
Verify whether the Stretch mini-max Behavior matches the Measurementboolean
isKnot(double dblPredictorOrdinate)
Is the given Predictor Ordinate a Knot Locationboolean
isLocallyMonotone()
Indicate if all the comprising Segments are MonotoneWengertJacobian
jackDResponseDCalibrationInput(double dblPredictorOrdinate, int iOrder)
Calculate the Response Derivative to the Calibration Inputs at the specified OrdinateWengertJacobian
jackDResponseDManifestMeasure(java.lang.String strManifestMeasure, double dblPredictorOrdinate, int iOrder)
Calculate the Response Derivative to the Manifest Measure at the specified Ordinatedouble
lengthDPE()
Retrieve the Span Length DPEMonotonocity
monotoneType(double dblPredictorOrdinate)
Identify the Monotone Type for the Segment underlying the given Predictor OrdinateMergeSubStretchManager
msm()
Retrieve the Merge Stretch Manager if it exists.java.lang.String
name()
Retrieve the Stretch Nameboolean
resetNode(int iPredictorOrdinateIndex, double dblResponseReset)
Reset the Predictor Ordinate Node Index with the given Responseboolean
resetNode(int iPredictorOrdinateIndex, SegmentResponseValueConstraint srvcReset)
Reset the Predictor Ordinate Node Index with the given Segment Constraintdouble
responseValue(double dblPredictorOrdinate)
Calculate the Response Value at the given Predictor Ordinatedouble
responseValueDerivative(double dblPredictorOrdinate, int iOrder)
Calculate the Response Value Derivative at the given Predictor Ordinate for the specified orderSegmentCustomBuilderControl[]
segmentBuilderControl()
Retrieve the Segment Builder ParametersLatentStateResponseModel[]
segments()
Retrieve the Stretch Segmentsboolean
setLeftNode(double dblStretchLeftResponse, double dblStretchLeftResponseSlope, double dblStretchRightResponse, StretchBestFitResponse sbfr)
Set the Slope at the left Edge of the Stretchboolean
setup(double dblLeftStretchResponseValue, double[] adblSegmentRightResponseValue, StretchBestFitResponse sbfr, BoundarySettings bs, int iCalibrationDetail)
Set up (i.e., calibrate) the individual Segments in the Stretch to the Response Values corresponding to each Segment Predictor right Ordinate.boolean
setup(double dblLeftStretchResponseValue, SegmentResponseValueConstraint[] aSRVC, StretchBestFitResponse sbfr, BoundarySettings bs, int iCalibrationDetail)
Set up (i.e., calibrate) the individual Segments in the Stretch to the Stretch Left Edge Response and the Target Constraints.boolean
setup(SegmentResponseValueConstraint srvcLeading, SegmentResponseValueConstraint[] aSRVC, StretchBestFitResponse sbfr, BoundarySettings bs, int iCalibrationDetail)
Set up (i.e., calibrate) the individual Segments in the Stretch to the Stretch Left Edge and the Target Constraints.boolean
setup(SegmentSequenceBuilder ssb, int iCalibrationDetail)
Set up (i.e., calibrate) the individual Segments in the Stretch to the Stretch Edge, the Target Constraints, and the custom segment sequence builder.boolean
setupHermite(SegmentPredictorResponseDerivative[] aSPRDLeft, SegmentPredictorResponseDerivative[] aSPRDRight, SegmentResponseValueConstraint[][] aaSRVC, StretchBestFitResponse sbfr, int iSetupMode)
Set up (i.e., calibrate) the individual Segment in the Stretch to the Target Segment Edge Values and Constraints.R1ToR1
toAU()
Convert the Segment Sequence into an AbstractUnivariate InstanceMethods inherited from class org.drip.function.definition.R1ToR1
antiDerivative, derivative, differential, differential, maxima, maxima, minima, minima, poleResidue
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Constructor Details
-
CalibratableMultiSegmentSequence
public CalibratableMultiSegmentSequence(java.lang.String strName, LatentStateResponseModel[] aCS, SegmentCustomBuilderControl[] aSCBC) throws java.lang.ExceptionCalibratableMultiSegmentSequence constructor - Construct a sequence of Basis Spline Segments- Parameters:
strName
- Name of the StretchaCS
- Array of SegmentsaSCBC
- Array of Segment Builder Parameters- Throws:
java.lang.Exception
- Thrown if the inputs are invalid
-
-
Method Details
-
name
public java.lang.String name()Description copied from interface:MultiSegmentSequence
Retrieve the Stretch Name- Specified by:
name
in interfaceMultiSegmentSequence
- Returns:
- The Stretch Name
-
segments
Description copied from interface:MultiSegmentSequence
Retrieve the Stretch Segments- Specified by:
segments
in interfaceMultiSegmentSequence
- Returns:
- The Stretch Segments
-
segmentBuilderControl
Description copied from interface:MultiSegmentSequence
Retrieve the Segment Builder Parameters- Specified by:
segmentBuilderControl
in interfaceMultiSegmentSequence
- Returns:
- The Segment Builder Parameters
-
setup
Description copied from interface:MultiSegmentSequence
Set up (i.e., calibrate) the individual Segments in the Stretch to the Stretch Edge, the Target Constraints, and the custom segment sequence builder.- Specified by:
setup
in interfaceMultiSegmentSequence
- Parameters:
ssb
- The Segment Sequence Builder InstanceiCalibrationDetail
- The Calibration Detail- Returns:
- TRUE - Set up was successful
-
setup
public boolean setup(SegmentResponseValueConstraint srvcLeading, SegmentResponseValueConstraint[] aSRVC, StretchBestFitResponse sbfr, BoundarySettings bs, int iCalibrationDetail)Description copied from interface:MultiSegmentSequence
Set up (i.e., calibrate) the individual Segments in the Stretch to the Stretch Left Edge and the Target Constraints.- Specified by:
setup
in interfaceMultiSegmentSequence
- Parameters:
srvcLeading
- Stretch Left-most Segment Response Value ConstraintaSRVC
- Array of Segment Response Value Constraintssbfr
- Stretch Fitness Weighted Responsebs
- The Calibration Boundary ConditioniCalibrationDetail
- The Calibration Detail- Returns:
- TRUE - Set up was successful
-
setup
public boolean setup(double dblLeftStretchResponseValue, SegmentResponseValueConstraint[] aSRVC, StretchBestFitResponse sbfr, BoundarySettings bs, int iCalibrationDetail)Description copied from interface:MultiSegmentSequence
Set up (i.e., calibrate) the individual Segments in the Stretch to the Stretch Left Edge Response and the Target Constraints.- Specified by:
setup
in interfaceMultiSegmentSequence
- Parameters:
dblLeftStretchResponseValue
- Stretch Left-most Response ValueaSRVC
- Array of Segment Response Value Constraintssbfr
- Stretch Best Fit Weighted Response Valuesbs
- The Calibration Boundary ConditioniCalibrationDetail
- The Calibration Detail- Returns:
- TRUE - Set up was successful
-
setup
public boolean setup(double dblLeftStretchResponseValue, double[] adblSegmentRightResponseValue, StretchBestFitResponse sbfr, BoundarySettings bs, int iCalibrationDetail)Description copied from interface:SingleSegmentSequence
Set up (i.e., calibrate) the individual Segments in the Stretch to the Response Values corresponding to each Segment Predictor right Ordinate.- Specified by:
setup
in interfaceSingleSegmentSequence
- Parameters:
dblLeftStretchResponseValue
- Stretch Left-most ResponseadblSegmentRightResponseValue
- Array of Segment Right Edge Responsessbfr
- Stretch Fitness Weighted Responsebs
- The Calibration Boundary ConditioniCalibrationDetail
- The Calibration Detail- Returns:
- TRUE - Set up was successful
-
setupHermite
public boolean setupHermite(SegmentPredictorResponseDerivative[] aSPRDLeft, SegmentPredictorResponseDerivative[] aSPRDRight, SegmentResponseValueConstraint[][] aaSRVC, StretchBestFitResponse sbfr, int iSetupMode)Description copied from interface:MultiSegmentSequence
Set up (i.e., calibrate) the individual Segment in the Stretch to the Target Segment Edge Values and Constraints. This is also called the Hermite setup - where the segment boundaries are entirely locally set.- Specified by:
setupHermite
in interfaceMultiSegmentSequence
- Parameters:
aSPRDLeft
- Array of Left Segment Edge ValuesaSPRDRight
- Array of Right Segment Edge ValuesaaSRVC
- Double Array of Constraints - Outer Index corresponds to Segment Index, and the Inner Index to Constraint Array within each Segmentsbfr
- Stretch Fitness Weighted ResponseiSetupMode
- Set up Mode (i.e., set up ITEP only, or fully calibrate the Stretch, or calibrate Stretch plus compute Jacobian)- Returns:
- TRUE - Set up was successful
-
evaluate
public double evaluate(double dblLeftSlope) throws java.lang.ExceptionDescription copied from class:R1ToR1
Evaluate for the given variate -
integrate
public double integrate(double dblBegin, double dblEnd) throws java.lang.ExceptionDescription copied from class:R1ToR1
Integrate over the given range -
setLeftNode
public boolean setLeftNode(double dblStretchLeftResponse, double dblStretchLeftResponseSlope, double dblStretchRightResponse, StretchBestFitResponse sbfr)Description copied from interface:MultiSegmentSequence
Set the Slope at the left Edge of the Stretch- Specified by:
setLeftNode
in interfaceMultiSegmentSequence
- Parameters:
dblStretchLeftResponse
- Response Value at the Left Edge of the StretchdblStretchLeftResponseSlope
- Response Slope Value at the Left Edge of the StretchdblStretchRightResponse
- Response Value at the Right Edge of the Stretchsbfr
- Stretch Fitness Weighted Response- Returns:
- TRUE - Left slope successfully set
-
responseValue
public double responseValue(double dblPredictorOrdinate) throws java.lang.ExceptionDescription copied from interface:SingleSegmentSequence
Calculate the Response Value at the given Predictor Ordinate- Specified by:
responseValue
in interfaceSingleSegmentSequence
- Parameters:
dblPredictorOrdinate
- Predictor Ordinate- Returns:
- The Response Value
- Throws:
java.lang.Exception
- Thrown if the Response Value cannot be calculated
-
responseValueDerivative
public double responseValueDerivative(double dblPredictorOrdinate, int iOrder) throws java.lang.ExceptionDescription copied from interface:SingleSegmentSequence
Calculate the Response Value Derivative at the given Predictor Ordinate for the specified order- Specified by:
responseValueDerivative
in interfaceSingleSegmentSequence
- Parameters:
dblPredictorOrdinate
- Predictor OrdinateiOrder
- Order the Derivative- Returns:
- The Response Value
- Throws:
java.lang.Exception
- Thrown if the Response Value Derivative cannot be calculated
-
calcSPRD
Description copied from interface:MultiSegmentSequence
Calculate the SPRD at the specified Predictor Ordinate- Specified by:
calcSPRD
in interfaceMultiSegmentSequence
- Parameters:
dblPredictorOrdinate
- The Predictor Ordinate- Returns:
- The Computed SPRD
-
jackDResponseDCalibrationInput
Description copied from interface:SingleSegmentSequence
Calculate the Response Derivative to the Calibration Inputs at the specified Ordinate- Specified by:
jackDResponseDCalibrationInput
in interfaceSingleSegmentSequence
- Parameters:
dblPredictorOrdinate
- Predictor OrdinateiOrder
- Order of Derivative desired- Returns:
- Jacobian of the Response Derivative to the Calibration Inputs at the Ordinate
-
jackDResponseDManifestMeasure
public WengertJacobian jackDResponseDManifestMeasure(java.lang.String strManifestMeasure, double dblPredictorOrdinate, int iOrder)Description copied from interface:SingleSegmentSequence
Calculate the Response Derivative to the Manifest Measure at the specified Ordinate- Specified by:
jackDResponseDManifestMeasure
in interfaceSingleSegmentSequence
- Parameters:
strManifestMeasure
- Manifest Measure whose Sensitivity is soughtdblPredictorOrdinate
- Predictor OrdinateiOrder
- Order of Derivative desired- Returns:
- Jacobian of the Response Derivative to the Quote at the Ordinate
-
monotoneType
Description copied from interface:SingleSegmentSequence
Identify the Monotone Type for the Segment underlying the given Predictor Ordinate- Specified by:
monotoneType
in interfaceSingleSegmentSequence
- Parameters:
dblPredictorOrdinate
- Predictor Ordinate- Returns:
- Segment Monotone Type
-
isLocallyMonotone
public boolean isLocallyMonotone() throws java.lang.ExceptionDescription copied from interface:SingleSegmentSequence
Indicate if all the comprising Segments are Monotone- Specified by:
isLocallyMonotone
in interfaceSingleSegmentSequence
- Returns:
- TRUE - Fully locally monotonic
- Throws:
java.lang.Exception
- Thrown if the Segment Monotone Type could not be estimated
-
isCoMonotone
public boolean isCoMonotone(double[] adblMeasuredResponse) throws java.lang.ExceptionDescription copied from interface:SingleSegmentSequence
Verify whether the Stretch mini-max Behavior matches the Measurement- Specified by:
isCoMonotone
in interfaceSingleSegmentSequence
- Parameters:
adblMeasuredResponse
- The Array of Measured Responses- Returns:
- TRUE - Stretch is co-monotonic with the measured Responses
- Throws:
java.lang.Exception
- Thrown if the Segment Monotone Type could not be estimated
-
isKnot
public boolean isKnot(double dblPredictorOrdinate)Description copied from interface:SingleSegmentSequence
Is the given Predictor Ordinate a Knot Location- Specified by:
isKnot
in interfaceSingleSegmentSequence
- Parameters:
dblPredictorOrdinate
- Predictor Ordinate- Returns:
- TRUE - Given Predictor Ordinate corresponds to a Knot
-
calcLeftEdgeDerivative
public double calcLeftEdgeDerivative(int iOrder) throws java.lang.ExceptionDescription copied from interface:MultiSegmentSequence
Calculate the Derivative of the requested order at the Left Edge of the Stretch- Specified by:
calcLeftEdgeDerivative
in interfaceMultiSegmentSequence
- Parameters:
iOrder
- Order of the Derivative- Returns:
- The Derivative of the requested order at the Left Edge of the Stretch
- Throws:
java.lang.Exception
- Thrown if the Derivative cannot be calculated
-
calcRightEdgeDerivative
public double calcRightEdgeDerivative(int iOrder) throws java.lang.ExceptionDescription copied from interface:MultiSegmentSequence
Calculate the Derivative of the requested order at the right Edge of the Stretch- Specified by:
calcRightEdgeDerivative
in interfaceMultiSegmentSequence
- Parameters:
iOrder
- Order of the Derivative- Returns:
- The Derivative of the requested order at the right Edge of the Stretch
- Throws:
java.lang.Exception
- Thrown if the Derivative cannot be calculated
-
resetNode
public boolean resetNode(int iPredictorOrdinateIndex, double dblResponseReset)Description copied from interface:SingleSegmentSequence
Reset the Predictor Ordinate Node Index with the given Response- Specified by:
resetNode
in interfaceSingleSegmentSequence
- Parameters:
iPredictorOrdinateIndex
- The Predictor Ordinate Node Index whose Response is to be resetdblResponseReset
- The Response to reset- Returns:
- TRUE - Reset succeeded
-
resetNode
Description copied from interface:SingleSegmentSequence
Reset the Predictor Ordinate Node Index with the given Segment Constraint- Specified by:
resetNode
in interfaceSingleSegmentSequence
- Parameters:
iPredictorOrdinateIndex
- The Predictor Ordinate Node Index whose Response is to be resetsrvcReset
- The Segment Constraint- Returns:
- TRUE - Reset succeeded
-
toAU
Description copied from interface:SingleSegmentSequence
Convert the Segment Sequence into an AbstractUnivariate Instance- Specified by:
toAU
in interfaceSingleSegmentSequence
- Returns:
- The AbstractUnivariate Instance
-
in
public boolean in(double dblPredictorOrdinate) throws java.lang.ExceptionDescription copied from interface:MultiSegmentSequence
Check if the Predictor Ordinate is in the Stretch Range- Specified by:
in
in interfaceMultiSegmentSequence
- Parameters:
dblPredictorOrdinate
- Predictor Ordinate- Returns:
- TRUE - Predictor Ordinate is in the Range
- Throws:
java.lang.Exception
- Thrown if the Inputs are invalid
-
getLeftPredictorOrdinateEdge
public double getLeftPredictorOrdinateEdge()Description copied from interface:SingleSegmentSequence
Return the Left Predictor Ordinate Edge- Specified by:
getLeftPredictorOrdinateEdge
in interfaceSingleSegmentSequence
- Returns:
- The Left Predictor Ordinate Edge
-
getRightPredictorOrdinateEdge
public double getRightPredictorOrdinateEdge()Description copied from interface:SingleSegmentSequence
Return the Right Predictor Ordinate Edge- Specified by:
getRightPredictorOrdinateEdge
in interfaceSingleSegmentSequence
- Returns:
- The Right Predictor Ordinate Edge
-
containingIndex
public int containingIndex(double dblPredictorOrdinate, boolean bIncludeLeft, boolean bIncludeRight) throws java.lang.ExceptionDescription copied from interface:MultiSegmentSequence
Return the Index for the Segment containing specified Predictor Ordinate- Specified by:
containingIndex
in interfaceMultiSegmentSequence
- Parameters:
dblPredictorOrdinate
- Predictor OrdinatebIncludeLeft
- TRUE - Less than or equal to the Left Predictor OrdinatebIncludeRight
- TRUE - Less than or equal to the Right Predictor Ordinate- Returns:
- Index for the Segment containing specified Predictor Ordinate
- Throws:
java.lang.Exception
- Thrown if the Inputs are invalid
-
clipLeft
public CalibratableMultiSegmentSequence clipLeft(java.lang.String strName, double dblPredictorOrdinate)Description copied from interface:MultiSegmentSequence
Generate a new Stretch by clipping all the Segments to the Left of the specified Predictor Ordinate. Smoothness Constraints will be maintained.- Specified by:
clipLeft
in interfaceMultiSegmentSequence
- Parameters:
strName
- Name of the Clipped StretchdblPredictorOrdinate
- Predictor Ordinate Left of which the Clipping is to be applied- Returns:
- The Clipped Stretch
-
clipRight
public CalibratableMultiSegmentSequence clipRight(java.lang.String strName, double dblPredictorOrdinate)Description copied from interface:MultiSegmentSequence
Generate a new Stretch by clipping all the Segments to the Right of the specified Predictor Ordinate. Smoothness Constraints will be maintained.- Specified by:
clipRight
in interfaceMultiSegmentSequence
- Parameters:
strName
- Name of the Clipped StretchdblPredictorOrdinate
- Predictor Ordinate Right of which the Clipping is to be applied- Returns:
- The Clipped Stretch
-
curvatureDPE
public double curvatureDPE() throws java.lang.ExceptionDescription copied from interface:MultiSegmentSequence
Retrieve the Span Curvature DPE- Specified by:
curvatureDPE
in interfaceMultiSegmentSequence
- Returns:
- The Span Curvature DPE
- Throws:
java.lang.Exception
- Thrown if the Span Curvature DPE cannot be computed
-
lengthDPE
public double lengthDPE() throws java.lang.ExceptionDescription copied from interface:MultiSegmentSequence
Retrieve the Span Length DPE- Specified by:
lengthDPE
in interfaceMultiSegmentSequence
- Returns:
- The Span Length DPE
- Throws:
java.lang.Exception
- Thrown if the Span Length DPE cannot be computed
-
bestFitDPE
Description copied from interface:MultiSegmentSequence
Retrieve the Stretch Best Fit DPE- Specified by:
bestFitDPE
in interfaceMultiSegmentSequence
- Parameters:
rbfr
- Stretch Best Fit Weighted Response Values- Returns:
- The Stretch Best Fit DPE
- Throws:
java.lang.Exception
- Thrown if the Stretch Best Fit DPE cannot be computed
-
msm
Description copied from interface:MultiSegmentSequence
Retrieve the Merge Stretch Manager if it exists.- Specified by:
msm
in interfaceMultiSegmentSequence
- Returns:
- The Merge Stretch Manager
-
displayString
public java.lang.String displayString()Description copied from interface:MultiSegmentSequence
Display the Segments- Specified by:
displayString
in interfaceMultiSegmentSequence
- Returns:
- The Segements String
-


--- layout: post tags: [AutoFixture, Unit Testing] date: 2010-03-26 22:01:42 UTC title: "More about frozen pizza" --- {% include JB/setup %}
In my previous blog post, I introduced AutoFixture's Freeze feature, but the example didn't fully demonstrate the power of the concept. In this blog post, we will turn up the heat on the frozen pizza a notch.
The following unit test exercises the BasketPresenter class, which is simply a wrapper around a Basket instance (we're doing a pizza online shop, if you were wondering). In true TDD style, I'll start with the unit test, but I'll post the BasketPresenter class later for reference.
[TestMethod] public void AddWillPipeMapCorrectly() { // Fixture setup var fixture = new Fixture(); var basket = fixture.Freeze<Basket>(); var mapMock = new Mock<IPizzaMap>(); fixture.Register(mapMock.Object); var pizza = fixture.CreateAnonymous<PizzaPresenter>(); var sut = fixture.CreateAnonymous<BasketPresenter>(); // Exercise system sut.Add(pizza); // Verify outcome mapMock.Verify(m => m.Pipe(pizza, basket.Add)); // Teardown }
The interesting thing in the above unit test is that we Freeze a Basket instance in the fixture. We do this because we know that the BasketPresenter somehow wraps a Basket instance, but we trust the Fixture class to figure it out for us. By telling the fixture instance to Freeze the Basket we know that it will reuse the same Basket instance throughout the entire test case. That includes the call to CreateAnonymous<BasketPresenter>.
This means that we can use the frozen basket instance in the Verify call because we know that the same instance will have been reused by the fixture, and thus wrapped by the SUT.
When you stop to think about this on a more theoretical level, it fortunately makes a lot of sense. AutoFixture's terminology is based upon the excellent book xUnit Test Patterns, and a Fixture instance pretty much corresponds to the concept of a Fixture. This means that freezing an instance simply means that a particular instance is constant throughout that particular fixture. Every time we ask for an instance of that class, we get back the same frozen instance.
In DI Container terminology, we just changed the Basket type's lifetime behavior from Transient to Singleton.
For reference, here's the BasketPresenter class we're testing:
public class BasketPresenter { private readonly Basket basket; private readonly IPizzaMap map; public BasketPresenter(Basket basket, IPizzaMap map) { if (basket == null) { throw new ArgumentNullException("basket"); } if (map == null) { throw new ArgumentNullException("map"); } this.basket = basket; this.map = map; } public void Add(PizzaPresenter presenter) { this.map.Pipe(presenter, this.basket.Add); } }
If you are wondering about why this is interesting at all, and why we don't just pass in a Basket through the BasketPresenter's constructor, it's because we are using AutoFixture as a SUT Factory. We want to be able to refactor BasketPresenter (and in this case particularly its constructor) without breaking a lot of existing tests. The level of indirection provided by AutoFixture gives us just that ability because we never directly invoke the constructor.
Coming up: more fun with the Freeze concept!
Comments
It's not clear from the example how using AutoFixture for DI keeps our tests testing object behavior better than setting up dependencies through the constructor or setters. I think it will suffer the same problems as we're examining private data. It has one benefit in that our public APIs remain pristine from adding in special-ctors/Setters for DI.
But hey, I'm going to play with this and see what happens. Thanks for the code sample!
Am I missing something?
==>Lancer---
http://ConfessionsOfAnAgileCoach.blogspot.com
[1]
[code]private readonly Basket basket;
private readonly IPizzaMap map;
public BasketPresenter(Basket basket, IPizzaMap map) // <-- redesign for DI
[/code]


Pencils Stationery Shop
Add New Supplier
First Name
Middle Name
Last Name
E-mail Address
Contact Number


{% extends "base.html" %} {% block content %}
This site has a listing of all the boardgames in my collection. It is losely based on boardgamegeek.com. Currently it is linking to that site for the game thumbnails. Feel free to rate the games.
Thanks for visting!
{% endblock %}


Zend Framework
LICENSE
This source file is subject to the new BSD license that is bundled with this package in the file LICENSE.txt. It is also available through the world-wide-web at this URL: http://framework.zend.com/license/new-bsd If you did not receive a copy of the license and are unable to obtain it through the world-wide-web, please send an email to<EMAIL_ADDRESS>so we can send you a copy immediately.
PDF Page
SIZE_LETTER_LANDSCAPE
= '792:612:'
Size representing a US Letter page in landscape (wide) orientation.
boolean
$_attached= ''
Flag which signals, that page is created separately from any PDF document or attached to anyone.
\Zend_Pdf_Element_Reference|\Zend_Pdf_Element_Object
$_dictionary= ''
Page dictionary (refers to an inderect Zend_Pdf_Element_Dictionary object).
__clone(
)
:
void
Clone page, extract it and dependent objects from the current document, so it can be used within other docs.
__construct(
mixed $param1, mixed $param2
=
null, mixed $param3
=
null
)
:
void
Object constructor.
Constructor signatures:
new Zend_Pdf_Page(Zend_Pdf_Element_Dictionary $pageDict,
| Name | Type | Description |
|---|---|---|
| $param1 | mixed | |
| $param2 | mixed | |
| $param3 | mixed |
| Exception | Description |
|---|---|
| \Zend_Pdf_Exception |
_addProcSet(
string $procSetName
)
:
void
Add procedureSet to the Page description
| Name | Type | Description |
|---|---|---|
| $procSetName | string |
_attachResource(
string $type, \Zend_Pdf_Resource $resource
)
:
string
Attach resource to the canvas
Method returns a name of the resource which can be used as a resource reference within drawing instructions stream Allowed types: 'ExtGState', 'ColorSpace', 'Pattern', 'Shading', 'XObject', 'Font', 'Properties'
| Name | Type | Description |
|---|---|---|
| $type | string | |
| $resource | \Zend_Pdf_Resource |
| Type | Description |
|---|---|
| string |
attachAnnotation(
\Zend_Pdf_Annotation $annotation
)
:
\Zend_Pdf_Page
| Name | Type | Description |
|---|---|---|
| $annotation | \Zend_Pdf_Annotation |
| Type | Description |
|---|---|
| \Zend_Pdf_Page |
clipCircle(
float $x, float $y, float $radius, float $startAngle
=
null, float $endAngle
=
null
)
:
\Zend_Pdf_Canvas_Interface
Intersect current clipping area with a circle.
Inherited from: \Zend_Pdf_Canvas_Abstract::clipCircle()| Name | Type | Description |
|---|---|---|
| $x | float | |
| $y | float | |
| $radius | float | |
| $startAngle | float | |
| $endAngle | float |
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
clipEllipse(
float $x1, float $y1, float $x2, float $y2, float $startAngle
=
null, float $endAngle
=
null
)
:
\Zend_Pdf_Canvas_Interface
Intersect current clipping area with a polygon.
Inherited from: \Zend_Pdf_Canvas_Abstract::clipEllipse()Method signatures: drawEllipse($x1, $y1, $x2, $y2); drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle);
| Name | Type | Description |
|---|---|---|
| $x1 | float | |
| $y1 | float | |
| $x2 | float | |
| $y2 | float | |
| $startAngle | float | |
| $endAngle | float |
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
clipPolygon(
array $x, array $y, integer $fillMethod
=
Zend_Pdf_Page
)
:
\Zend_Pdf_Canvas_Interface
Intersect current clipping area with a polygon.
Inherited from: \Zend_Pdf_Canvas_Abstract::clipPolygon()| Name | Type | Description |
|---|---|---|
| $x | array |
|
| $y | array |
|
| $fillMethod | integer |
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
clipRectangle(
float $x1, float $y1, float $x2, float $y2
)
:
\Zend_Pdf_Canvas_Interface
Intersect current clipping area with a rectangle.
Inherited from: \Zend_Pdf_Canvas_Abstract::clipRectangle()| Name | Type | Description |
|---|---|---|
| $x1 | float | |
| $y1 | float | |
| $x2 | float | |
| $y2 | float |
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
drawCanvas(
\Zend_Pdf_Canvas_Interface $canvas, float $x1, float $y1, float $x2
=
null, float $y2
=
null
)
:
\Zend_Pdf_Canvas_Interface
Draw a canvas at the specified location
Inherited from: \Zend_Pdf_Canvas_Abstract::drawCanvas()If upper right corner is not specified then canvas heght and width are used.
| Name | Type | Description |
|---|---|---|
| $canvas | \Zend_Pdf_Canvas_Interface | |
| $x1 | float | |
| $y1 | float | |
| $x2 | float | |
| $y2 | float |
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
drawCircle(
float $x, float $y, float $radius, mixed $param4
=
null, mixed $param5
=
null, mixed $param6
=
null
)
:
\Zend_Pdf_Canvas_Interface
Draw a circle centered on x, y with a radius of radius.
Inherited from: \Zend_Pdf_Canvas_Abstract::drawCircle()Method signatures: drawCircle($x, $y, $radius); drawCircle($x, $y, $radius, $fillType); drawCircle($x, $y, $radius, $startAngle, $endAngle); drawCircle($x, $y, $radius, $startAngle, $endAngle, $fillType);
It's not a really circle, because PDF supports only cubic Bezier curves. But very good approximation. It differs from a real circle on a maximum 0.00026 radiuses (at PI/8, 3PI/8, 5PI/8, 7PI/8, 9PI/8, 11PI/8, 13PI/8 and 15PI/8 angles). At 0, PI/4, PI/2, 3PI/4, PI, 5PI/4, 3PI/2 and 7*PI/4 it's exactly a tangent to a circle.
| Name | Type | Description |
|---|---|---|
| $x | float | |
| $y | float | |
| $radius | float | |
| $param4 | mixed | |
| $param5 | mixed | |
| $param6 | mixed |
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
drawEllipse(
float $x1, float $y1, float $x2, float $y2, mixed $param5
=
null, mixed $param6
=
null, mixed $param7
=
null
)
:
\Zend_Pdf_Canvas_Interface
Draw an ellipse inside the specified rectangle.
Inherited from: \Zend_Pdf_Canvas_Abstract::drawEllipse()Method signatures: drawEllipse($x1, $y1, $x2, $y2); drawEllipse($x1, $y1, $x2, $y2, $fillType); drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle); drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle, $fillType);
| Name | Type | Description |
|---|---|---|
| $x1 | float | |
| $y1 | float | |
| $x2 | float | |
| $y2 | float | |
| $param5 | mixed | |
| $param6 | mixed | |
| $param7 | mixed |
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
drawImage(
\Zend_Pdf_Image $image, float $x1, float $y1, float $x2, float $y2
)
:
\Zend_Pdf_Canvas_Interface
Draw an image at the specified position on the page.
Inherited from: \Zend_Pdf_Canvas_Abstract::drawImage()| Name | Type | Description |
|---|---|---|
| $image | \Zend_Pdf_Image | |
| $x1 | float | |
| $y1 | float | |
| $x2 | float | |
| $y2 | float |
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
drawLine(
float $x1, float $y1, float $x2, float $y2
)
:
\Zend_Pdf_Canvas_Interface
Draw a line from x1,y1 to x2,y2.
Inherited from: \Zend_Pdf_Canvas_Abstract::drawLine()| Name | Type | Description |
|---|---|---|
| $x1 | float | |
| $y1 | float | |
| $x2 | float | |
| $y2 | float |
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
drawPolygon(
array $x, array $y, integer $fillType
=
Zend_Pdf_Page, integer $fillMethod
=
Zend_Pdf_Page
)
:
\Zend_Pdf_Canvas_Interface
Draw a polygon.
Inherited from: \Zend_Pdf_Canvas_Abstract::drawPolygon()If $fillType is Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE or Zend_Pdf_Page::SHAPE_DRAW_FILL, then polygon is automatically closed. See detailed description of these methods in a PDF documentation (section 4.4.2 Path painting Operators, Filling)
| Name | Type | Description |
|---|---|---|
| $x | array |
|
| $y | array |
|
| $fillType | integer | |
| $fillMethod | integer |
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
drawRectangle(
float $x1, float $y1, float $x2, float $y2, integer $fillType
=
Zend_Pdf_Page
)
:
\Zend_Pdf_Canvas_Interface
Draw a rectangle.
Inherited from: \Zend_Pdf_Canvas_Abstract::drawRectangle()Fill types: Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE - fill rectangle and stroke (default) Zend_Pdf_Page::SHAPE_DRAW_STROKE - stroke rectangle Zend_Pdf_Page::SHAPE_DRAW_FILL - fill rectangle
| Name | Type | Description |
|---|---|---|
| $x1 | float | |
| $y1 | float | |
| $x2 | float | |
| $y2 | float | |
| $fillType | integer |
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
drawRoundedRectangle(
float $x1, float $y1, float $x2, float $y2, integer|array $radius, integer $fillType
=
Zend_Pdf_Page
)
:
\Zend_Pdf_Canvas_Interface
Draw a rounded rectangle.
Inherited from: \Zend_Pdf_Canvas_Abstract::drawRoundedRectangle()Fill types: Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE - fill rectangle and stroke (default) Zend_Pdf_Page::SHAPE_DRAW_STROKE - stroke rectangle Zend_Pdf_Page::SHAPE_DRAW_FILL - fill rectangle
radius is an integer representing radius of the four corners, or an array of four integers representing the radius starting at top left, going clockwise
| Name | Type | Description |
|---|---|---|
| $x1 | float | |
| $y1 | float | |
| $x2 | float | |
| $y2 | float | |
| $radius | integer|array | |
| $fillType | integer |
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
drawText(
string $text, float $x, float $y, string $charEncoding
)
:
\Zend_Pdf_Canvas_Interface
Draw a line of text at the specified position.
Inherited from: \Zend_Pdf_Canvas_Abstract::drawText()| Name | Type | Description |
|---|---|---|
| $text | string | |
| $x | float | |
| $y | float | |
| $charEncoding | string | (optional) Character encoding of source text. Defaults to current locale. |
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
| Exception | Description |
|---|---|
| \Zend_Pdf_Exception |
extractFont(
$fontName
)
:
\Zend_Pdf_Resource_Font_Extracted|null
Extract font attached to the page by specific font name
$fontName should be specified in UTF-8 encoding
| Name | Type | Description |
|---|---|---|
| $fontName |
| Type | Description |
|---|---|
| \Zend_Pdf_Resource_Font_Extractednull |
| Exception | Description |
|---|---|
| \Zend_Pdf_Exception |
extractFonts(
)
:
array
Extract fonts attached to the page
returns array of Zend_Pdf_Resource_Font_Extracted objects
| Type | Description |
|---|---|
| array |
| Exception | Description |
|---|---|
| \Zend_Pdf_Exception |
flush(
)
:
void
Dump current drawing instructions into the content stream.
| Exception | Description |
|---|---|
| \Zend_Pdf_Exception |
getFont(
)
:
\Zend_Pdf_Resource_Font
Get current font.
Inherited from: \Zend_Pdf_Canvas_Abstract::getFont()| Type | Description |
|---|---|
| \Zend_Pdf_Resource_Font | $font |
getFontSize(
)
:
float
Get current font size
Inherited from: \Zend_Pdf_Canvas_Abstract::getFontSize()| Type | Description |
|---|---|
| float | $fontSize |
getStyle(
)
:
\Zend_Pdf_Style
Return the style, applied to the page.
Inherited from: \Zend_Pdf_Canvas_Abstract::getStyle()| Type | Description |
|---|---|
| \Zend_Pdf_Style |
rawWrite(
string $data, string $procSet
=
null
)
:
\Zend_Pdf_Canvas_Interface
Writes the raw data to the page's content stream.
Inherited from: \Zend_Pdf_Canvas_Abstract::rawWrite()Be sure to consult the PDF reference to ensure your syntax is correct. No attempt is made to ensure the validity of the stream data.
| Name | Type | Description |
|---|---|---|
| $data | string | |
| $procSet | string | (optional) Name of ProcSet to add. |
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
render(
\Zend_Pdf_ElementFactory_Interface $objFactory
)
:
void
Prepare page to be rendered into PDF.
| Name | Type | Description |
|---|---|---|
| $objFactory | \Zend_Pdf_ElementFactory_Interface |
| Exception | Description |
|---|---|
| \Zend_Pdf_Exception |
restoreGS(
)
:
\Zend_Pdf_Canvas_Interface
Restore the graphics state that was saved with the last call to saveGS().
Inherited from: \Zend_Pdf_Canvas_Abstract::restoreGS()| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
| Exception | Description |
|---|---|
| \Zend_Pdf_Exception | - if there is no previously saved state |
rotate(
float $x, float $y, float $angle
)
:
\Zend_Pdf_Canvas_Interface
Rotate the page.
Inherited from: \Zend_Pdf_Canvas_Abstract::rotate()| Name | Type | Description |
|---|---|---|
| $x | float |
|
| $y | float |
|
| $angle | float |
|
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
saveGS(
)
:
\Zend_Pdf_Canvas_Interface
Save the graphics state of this page.
Inherited from: \Zend_Pdf_Canvas_Abstract::saveGS()This takes a snapshot of the currently applied style, position, clipping area and any rotation/translation/scaling that has been applied.
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
| Exception | Description |
|---|---|
| \Zend_Pdf_Exception | - if a save is performed with an open path |
scale(
float $xScale, float $yScale
)
:
\Zend_Pdf_Canvas_Interface
Scale coordination system.
Inherited from: \Zend_Pdf_Canvas_Abstract::scale()| Name | Type | Description |
|---|---|---|
| $xScale | float |
|
| $yScale | float |
|
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
setAlpha(
float $alpha, string $mode
=
Normal
)
:
\Zend_Pdf_Canvas_Interface
Set the transparancy
Inherited from: \Zend_Pdf_Canvas_Abstract::setAlpha()$alpha == 0 - transparent $alpha == 1 - opaque
Transparency modes, supported by PDF: Normal (default), Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, HardLight, SoftLight, Difference, Exclusion
| Name | Type | Description |
|---|---|---|
| $alpha | float | |
| $mode | string |
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
| Exception | Description |
|---|---|
| \Zend_Pdf_Exception |
setFillColor(
\Zend_Pdf_Color $color
)
:
\Zend_Pdf_Canvas_Interface
Set fill color.
Inherited from: \Zend_Pdf_Canvas_Abstract::setFillColor()| Name | Type | Description |
|---|---|---|
| $color | \Zend_Pdf_Color |
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
setFont(
\Zend_Pdf_Resource_Font $font, float $fontSize
)
:
\Zend_Pdf_Canvas_Interface
Set current font.
Inherited from: \Zend_Pdf_Canvas_Abstract::setFont()| Name | Type | Description |
|---|---|---|
| $font | \Zend_Pdf_Resource_Font | |
| $fontSize | float |
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
setLineColor(
\Zend_Pdf_Color $color
)
:
\Zend_Pdf_Canvas_Interface
Set line color.
Inherited from: \Zend_Pdf_Canvas_Abstract::setLineColor()| Name | Type | Description |
|---|---|---|
| $color | \Zend_Pdf_Color |
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
setLineDashingPattern(
mixed $pattern, array $phase
=
0
)
:
\Zend_Pdf_Canvas_Interface
Set line dashing pattern
Inherited from: \Zend_Pdf_Canvas_Abstract::setLineDashingPattern()Pattern is an array of floats: array(on_length, off_length, on_length, off_length, ...) or Zend_Pdf_Page::LINE_DASHING_SOLID constant Phase is shift from the beginning of line.
| Name | Type | Description |
|---|---|---|
| $pattern | mixed | |
| $phase | array |
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
setLineWidth(
float $width
)
:
\Zend_Pdf_Canvas_Interface
Set line width.
Inherited from: \Zend_Pdf_Canvas_Abstract::setLineWidth()setStyle(
\Zend_Pdf_Style $style
)
:
\Zend_Pdf_Canvas_Interface
Set the style to use for future drawing operations on this page
Inherited from: \Zend_Pdf_Canvas_Abstract::setStyle()| Name | Type | Description |
|---|---|---|
| $style | \Zend_Pdf_Style |
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
skew(
float $x, float $y, float $xAngle, float $yAngle
)
:
\Zend_Pdf_Canvas_Interface
Translate coordination system.
Inherited from: \Zend_Pdf_Canvas_Abstract::skew()| Name | Type | Description |
|---|---|---|
| $x | float |
|
| $y | float |
|
| $xAngle | float |
|
| $yAngle | float |
|
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |
translate(
float $xShift, float $yShift
)
:
\Zend_Pdf_Canvas_Interface
Translate coordination system.
Inherited from: \Zend_Pdf_Canvas_Abstract::translate()| Name | Type | Description |
|---|---|---|
| $xShift | float |
|
| $yShift | float |
|
| Type | Description |
|---|---|
| \Zend_Pdf_Canvas_Interface |


Macros are a great way to design custom elements. You simply define a macro by using the tag define. The following attribute will set the tag of the macro and the innerHTML will set the replacement value. For example we can define the tag six-times like this
<define six-times>
Hello, world

Hello, world

Hello, world

Hello, world

Hello, world

Hello, world
 </define>
and now whenever we're using the tag six-times
<six-times></six-times>
it will get replaced with:

Hello, world

Hello, world

Hello, world

Hello, world

Hello, world

Hello, world

You can use arguments in the same way as the attribute load:
<define margin>
{ html }
 </define> <margin margin=20>
Hello
 </margin>
A good example on how to use this syntax is to create e.g. a flex-tag since there is no proper flex-tag in pure html already.
Simply use the syntax already described:
<define flex>
{ html }
 </define>