static void compute_ir_extent(TextNode *node) { int t_width; /* * First thing we do is see if we need to skip some space in front of the * word */ if (gInLine && node->space) text_x += inter_word_space; /* Calculate the actual width of the box */ t_width = node->width; if (text_x + t_width > right_margin) { start_newline(present_line_height, node); text_x = indent; } node->x = text_x; if (node->height > line_height) { node->height = present_line_height = plh(node->height + inter_line_space); node->y = text_y + node->height - normal_text_height; } else { node->y = text_y - line_height + node->height; } gInLine = 1; text_x += node->width; }
MatrixHomogeneous& NextStepTwoHandObserver:: computeRefPos( MatrixHomogeneous& res,int timeCurr,const MatrixHomogeneous& wMsf ) { sotDEBUGIN(15); #define RIGHT_HAND_REFERENCE 1 #if RIGHT_HAND_REFERENCE const MatrixHomogeneous& wMrh = referencePositionRightSIN( timeCurr ); MatrixHomogeneous sfMw; sfMw = wMsf.inverse(); res = sfMw * wMrh; #else const MatrixHomogeneous& wMlh = referencePositionLeftSIN( timeCurr ); const MatrixHomogeneous& wMrh = referencePositionRightSIN( timeCurr ); MatrixHomogeneous sfMw; sfMw = wMsf.inverse(); MatrixHomogeneous sfMlh; sfMlh = sfMw * wMlh; MatrixHomogeneous sfMrh; sfMrh = sfMw * wMrh; MatrixRotation R; VectorRollPitchYaw rpy; Vector prh(3); prh = sfMrh.translation(); R = sfMrh.linear(); VectorRollPitchYaw rpy_rh; rpy_rh = (R.eulerAngles(2,1,0)).reverse(); Vector plh(3); plh = sfMlh.translation(); R = sfMlh.linear(); VectorRollPitchYaw rpy_lh; rpy_lh = (R.eulerAngles(2,1,0)).reverse(); Vector p = 0.5 * (plh + prh); rpy = 0.5 * (rpy_rh + rpy_lh); R = (Eigen::AngleAxisd(rpy(2),Eigen::Vector3d::UnitZ())* Eigen::AngleAxisd(rpy(1),Eigen::Vector3d::UnitY())* Eigen::AngleAxisd(rpy(0),Eigen::Vector3d::UnitX())).toRotationMatrix(); res.linear() = R; res.translation() = p; #endif sotDEBUGOUT(15); return res; }
static void compute_image_extent(TextNode *node) { if (text_x + node->width > right_margin) { start_newline(present_line_height, node); text_x = indent; } node->x = text_x; if (node->height > line_height) { present_line_height = plh(node->height + inter_line_space); node->y = text_y + node->height - line_height; } else { node->y = text_y - line_height + node->height; } text_x += node->width; gInLine = 1; }
void insert_pixmap_file(TextNode * node) { char *filename = node->data.text; int bm_width, bm_height, ret_val; XImage *xi; ImageStruct *image; if (*filename == ' ') filename++; if (node->image.xi == 0) { if ((image = (ImageStruct *) hash_find(&gImageHashTable, filename)) == NULL) { ret_val = read_pixmap_file(gXDisplay, gXScreenNumber, filename, &xi, &bm_width, &bm_height); switch (ret_val) { case(-1): gSwitch_to_mono = 1; return; case BitmapFileInvalid: fprintf(stderr, "File %s contains invalid bitmap data\n", filename); return; case BitmapOpenFailed: fprintf(stderr, "couldn't open bitmap file %s\n", filename); return; case BitmapNoMemory: fprintf(stderr, "not enough memory to store bitmap\n"); return; } image = (ImageStruct *) halloc(sizeof(ImageStruct), "ImageStruct"); image->width = bm_width; image->height = bm_height; image->filename = (char *) halloc(sizeof(char) * strlen(filename) +1, "insert_pixmap--filename"); /* strcpy(image->filename, filename); */ sprintf(image->filename, "%s", filename); image->image.xi = xi; hash_insert(&gImageHashTable, (char *)image, image->filename); } node->width = image->width; node->height = plh(image->height + inter_line_space); node->image.xi = image->image.xi; } }
static void compute_input_extent(TextNode * node) { InputItem *item; int t_width; int num_lines; /* search the symbol table for the proper entry */ item = node->link->reference.string; num_lines = item->num_lines; /* * Once we have gotten this far, we should just be able to calculate the * width using the normal font */ t_width = (item->size + 1) * gInputFont->max_bounds.width + 10; if (gInLine) text_x += inter_word_space; if (text_x + t_width > right_margin) { start_newline(present_line_height, node); text_x = indent; } node->x = text_x; /* now figure out the height of the current window */ node->height = line_height * (num_lines); node->y = text_y - line_height + node->height - 1; if (node->height > present_line_height) present_line_height = plh(node->height); node->width = t_width; gInLine = 1; text_x += t_width; }
int ConstantEntry::parseInit(ClassNs ptr) { //printd(5, "ConstantEntry::parseInit() this: %p '%s' pub: %d init: %d in_init: %d node: %p '%s' class context: %p '%s' ns: %p ('%s') pub: %d\n", this, name.c_str(), pub, init, in_init, node, get_type_name(node), ptr.getClass(), ptr.getClass() ? ptr.getClass()->name.c_str() : "<none>", ptr.getNs(), ptr.getNs() ? ptr.getNs()->name.c_str() : "<none>", ptr.getNs() ? ptr.getNs()->pub : 0); if (init) return 0; if (in_init) { parse_error("recursive constant reference found to constant '%s'", name.c_str()); return 0; } ConstantEntryInitHelper ceih(*this); if (!node) return 0; int lvids = 0; { // set parse location in case of errors ParseLocationHelper plh(loc); // push parse class context qore_class_private* p = ptr.getClass(); QoreParseClassHelper qpch(p ? p->cls : 0); // ensure that there is no accessible local variable state VariableBlockHelper vbh; // set parse options and warning mask for this statement ParseWarnHelper pwh(pwo); //printd(5, "ConstantEntry::parseInit() this: %p '%s' about to init node: %p '%s' class: %p '%s'\n", this, name.c_str(), node, get_type_name(node), p, p ? p->name.c_str() : "n/a"); if (typeInfo) typeInfo = 0; node = node->parseInit((LocalVar*)0, PF_CONST_EXPRESSION, lvids, typeInfo); } //printd(5, "ConstantEntry::parseInit() this: %p %s initialized to node: %p (%s) value: %d\n", this, name.c_str(), node, get_type_name(node), node->is_value()); if (node->is_value()) return 0; // do not evaluate expression if any parse exceptions have been thrown QoreProgram* pgm = getProgram(); if (pgm->parseExceptionRaised()) { discard(node, 0); node = 0; typeInfo = nothingTypeInfo; return -1; } // evaluate expression ExceptionSink xsink; { ReferenceHolder<AbstractQoreNode> v(node->eval(&xsink), &xsink); //printd(5, "ConstantEntry::parseInit() this: %p %s evaluated to node: %p (%s)\n", this, name.c_str(), *v, get_type_name(*v)); if (!xsink) { node->deref(&xsink); node = v.release(); if (!node) { node = nothing(); typeInfo = nothingTypeInfo; } else { typeInfo = getTypeInfoForValue(node); check_constant_cycle(pgm, node); // address circular refs: pgm->const->pgm } } else { node->deref(&xsink); node = 0; typeInfo = nothingTypeInfo; } } if (xsink.isEvent()) qore_program_private::addParseException(pgm, xsink, &loc); // scan for call references if (scanValue(node)) { saved_node = node; node = new RuntimeConstantRefNode(refSelf()); } return 0; }