1/* 2 * Copyright 2006, Haiku. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Stephan Aßmus <superstippi@gmx.de> 7 */ 8 9#include "Util.h" 10 11#include <new> 12 13#include "AddPathsCommand.h" 14#include "AddStylesCommand.h" 15#include "PathContainer.h" 16#include "Style.h" 17#include "StyleContainer.h" 18#include "VectorPath.h" 19 20using std::nothrow; 21 22// new_style 23void 24new_style(rgb_color color, StyleContainer* container, 25 Style** style, AddStylesCommand** command) 26{ 27 *style = new (nothrow) Style(color); 28 if (*style) { 29 Style* styles[1]; 30 styles[0] = *style; 31 *command = new (nothrow) AddStylesCommand( 32 container, styles, 1, 33 container->CountStyles()); 34 if (*command == NULL) { 35 delete *style; 36 *style = NULL; 37 } 38 } else { 39 *command = NULL; 40 } 41} 42 43// new_path 44void 45new_path(PathContainer* container, VectorPath** path, 46 AddPathsCommand** command, VectorPath* other) 47{ 48 if (other) 49 *path = new (nothrow) VectorPath(*other); 50 else 51 *path = new (nothrow) VectorPath(); 52 53 if (*path) { 54 VectorPath* paths[1]; 55 paths[0] = *path; 56 int32 insertIndex = other ? container->IndexOf(other) + 1 57 : container->CountPaths(); 58 *command = new (nothrow) AddPathsCommand( 59 container, paths, 1, true, insertIndex); 60 if (*command == NULL) { 61 delete *path; 62 *path = NULL; 63 } 64 } else { 65 *command = NULL; 66 } 67} 68 69 70 71 72