Home | History | Annotate | Download | only in autofit

Lines Matching refs:edge

720       /* already on an edge ?, backtrack to find its start */
1068 /* to find an edge in our table that corresponds to its position. */
1070 /* If no edge is found, we create and insert a new edge in the */
1071 /* sorted table. Otherwise, we simply add the segment to the edge's */
1073 /* edge's properties. */
1075 /* Note that the edges table is sorted along the segment/edge */
1115 /* look for an edge corresponding to the segment */
1118 AF_Edge edge = axis->edges + ee;
1122 edge->fpos;
1126 if ( dist < edge_distance_threshold && edge->dir == seg->dir )
1128 found = edge;
1135 AF_Edge edge;
1138 /* insert a new edge in the list and */
1140 error = af_axis_hints_new_edge( axis, seg->pos, seg->dir, memory, &edge );
1144 /* add the segment to the new edge's list */
1145 FT_ZERO( edge );
1147 edge->first = seg;
1148 edge->last = seg;
1149 edge->fpos = seg->pos;
1150 edge->dir = seg->dir;
1151 edge->opos = edge->pos = FT_MulFix( seg->pos, scale );
1156 /* if an edge was found, simply add the segment to the edge's */
1167 /* Good, we will now compute each edge's properties according to */
1170 /* - edge's main direction */
1171 /* - stem edge, serif edge or both (which defaults to stem then) */
1172 /* - rounded edge, straight or both (which defaults to straight) */
1173 /* - link for edge */
1177 /* first of all, set the `edge' field in each segment -- this is */
1178 /* required in order to compute edge links */
1181 * Note that removing this loop and setting the `edge' field of each
1188 AF_Edge edge;
1191 for ( edge = edges; edge < edge_limit; edge++ )
1193 seg = edge->first;
1197 seg->edge = edge;
1200 } while ( seg != edge->first );
1203 /* now, compute each edge properties */
1204 for ( edge = edges; edge < edge_limit; edge++ )
1212 seg = edge->first;
1234 seg->serif->edge &&
1235 seg->serif->edge != edge );
1237 if ( ( seg->link && seg->link->edge != NULL ) || is_serif )
1243 edge2 = edge->link;
1249 edge2 = edge->serif;
1258 edge_delta = edge->fpos - edge2->fpos;
1267 edge2 = seg2->edge;
1270 edge2 = seg2->edge;
1274 edge->serif = edge2;
1278 edge->link = edge2;
1283 } while ( seg != edge->first );
1286 edge->flags = AF_EDGE_NORMAL;
1289 edge->flags |= AF_EDGE_ROUND;
1292 /* set the edge's main direction */
1293 edge->dir = AF_DIR_NONE;
1296 edge->dir = (FT_Char)up_dir;
1299 edge->dir = (FT_Char)-up_dir;
1302 edge->dir = 0; /* both up and down! */
1309 if ( edge->serif && edge->link )
1310 edge->serif = 0;
1342 AF_Edge edge = axis->edges;
1343 AF_Edge edge_limit = edge + axis->num_edges;
1358 /* for each horizontal edge search the blue zone which is closest */
1359 for ( ; edge < edge_limit; edge++ )
1380 is_major_dir = FT_BOOL( edge->dir == axis->major_dir );
1382 /* if it is a top zone, the edge must be against the major */
1391 /* if it's a rounded edge, compare it to the overshoot position */
1392 /* if it's a flat edge, compare it to the reference position */
1393 if ( edge->flags & AF_EDGE_ROUND )
1398 dist = edge->fpos - compare->org;
1410 /* now, compare it to the overshoot position if the edge is */
1411 /* rounded, and if the edge is over the reference position of a */
1413 if ( edge->flags & AF_EDGE_ROUND && dist != 0 )
1415 FT_Bool is_under_ref = FT_BOOL( edge->fpos < blue->ref.org );
1421 dist = edge->fpos - blue->shoot.org;
1438 edge->blue_edge = best_blue;
1738 /* align one stem edge relative to the previous stem edge */
1756 AF_LOG(( "LINK: edge %d (opos=%.2f) linked to (%.2f), "
1792 AF_Edge edge;
1806 for ( edge = edges; edge < edge_limit; edge++ )
1812 if ( edge->flags & AF_EDGE_DONE )
1815 blue = edge->blue_edge;
1817 edge2 = edge->link;
1821 edge1 = edge;
1827 edge2 = edge;
1833 AF_LOG(( "BLUE: edge %d (opos=%.2f) snapped to (%.2f), "
1849 anchor = edge;
1860 for ( edge = edges; edge < edge_limit; edge++ )
1865 if ( edge->flags & AF_EDGE_DONE )
1869 edge2 = edge->link;
1881 AF_LOG(( "ASSERTION FAILED for edge %d\n", edge2-edges ));
1883 af_latin2_align_linked_edge( hints, dim, edge2, edge );
1884 edge->flags |= AF_EDGE_DONE;
1894 org_len = edge2->opos - edge->opos;
1897 (AF_Edge_Flags)edge->flags,
1909 org_center = edge->opos + ( org_len >> 1 );
1926 edge->pos = cur_pos1 - cur_len / 2;
1927 edge2->pos = edge->pos + cur_len;
1930 edge->pos = FT_PIX_ROUND( edge->opos );
1932 AF_LOG(( "ANCHOR: edge %d (opos=%.2f) and %d (opos=%.2f) "
1934 edge-edges, edge->opos / 64.0,
1936 edge->pos / 64.0, edge2->pos / 64.0 ));
1937 anchor = edge;
1939 edge->flags |= AF_EDGE_DONE;
1941 af_latin2_align_linked_edge( hints, dim, edge, edge2 );
1956 org_pos = edge->opos + anchor_drift;
1957 org_len = edge2->opos - edge->opos;
1962 (AF_Edge_Flags)edge->flags,
1974 edge->pos = edge2->pos - cur_len;
2029 /* snapping the left edge to the grid */
2037 /* snapping the right edge to the grid */
2066 edge->pos = cur_center - (cur_len >> 1);
2067 edge2->pos = edge->pos + cur_len;
2071 edge-edges, edge->opos / 64.0,
2073 edge->pos / 64.0, edge2->pos / 64.0,
2076 edge->flags |= AF_EDGE_DONE;
2079 if ( edge > edges && edge->pos < edge[-1].pos )
2082 edge-edges, edge->pos / 64.0, edge[-1].pos / 64.0 ));
2083 edge->pos = edge[-1].pos;
2162 for ( edge = edges; edge < edge_limit; edge++ )
2167 if ( edge->flags & AF_EDGE_DONE )
2172 if ( edge->serif )
2174 delta = edge->serif->opos - edge->opos;
2181 af_latin2_align_serif_edge( hints, edge->serif, edge );
2182 AF_LOG(( "SERIF: edge %d (opos=%.2f) serif to %d (opos=%.2f) "
2184 edge-edges, edge->opos / 64.0,
2185 edge->serif - edges, edge->serif->opos / 64.0,
2186 edge->pos / 64.0 ));
2190 AF_LOG(( "SERIF_ANCHOR: edge %d (opos=%.2f) snapped to (%.2f)\n",
2191 edge-edges, edge->opos / 64.0, edge->pos / 64.0 ));
2192 edge->pos = FT_PIX_ROUND( edge->opos );
2193 anchor = edge;
2200 for ( before = edge - 1; before >= edges; before-- )
2204 for ( after = edge + 1; after < edge_limit; after++ )
2208 if ( before >= edges && before < edge &&
2209 after < edge_limit && after > edge )
2212 edge->pos = before->pos;
2214 edge->pos = before->pos +
2215 FT_MulDiv( edge->opos - before->opos,
2218 AF_LOG(( "SERIF_LINK1: edge %d (opos=%.2f) snapped to (%.2f) from %d (opos=%.2f)\n",
2219 edgeedge->opos / 64.0, edge->pos / 64.0, before - edges, before->opos / 64.0 ));
2223 edge->pos = anchor->pos + (( edge->opos - anchor->opos + 16) & ~31);
2225 AF_LOG(( "SERIF_LINK2: edge %d (opos=%.2f) snapped to (%.2f)\n",
2226 edge-edges, edge->opos / 64.0, edge->pos / 64.0 ));
2230 edge->flags |= AF_EDGE_DONE;
2232 if ( edge > edges && edge->pos < edge[-1].pos )
2233 edge->pos = edge[-1].pos;
2235 if ( edge + 1 < edge_limit &&
2236 edge[1].flags & AF_EDGE_DONE &&
2237 edge->pos > edge[1].pos )
2238 edge->pos = edge[1].pos;