+static MPlist *hline_prop_list;
+static MPlist *box_prop_list;
+
+/** Special hook function pointer that does nothing. */
+static MFaceHookFunc noop_hook;
+
+/** */
+static MFaceHLineProp *
+get_hline_create (MFaceHLineProp *prop)
+{
+ MPlist *plist;
+ MFaceHLineProp *hline;
+
+ if (prop->width == 0)
+ return MPLIST_VAL (hline_prop_list);
+ MPLIST_DO (plist, MPLIST_NEXT (hline_prop_list))
+ {
+ hline = MPLIST_VAL (plist);
+ if (prop->type == hline->type
+ && prop->width == hline->width
+ && prop->color == hline->color)
+ return hline;
+ }
+ MSTRUCT_MALLOC (hline, MERROR_FACE);
+ *hline = *prop;
+ mplist_push (plist, Mt, hline);
+ return hline;
+}
+
+static MFaceBoxProp *
+get_box_create (MFaceBoxProp *prop)
+{
+ MPlist *plist;
+ MFaceBoxProp *box;
+
+ if (prop->width == 0)
+ return MPLIST_VAL (box_prop_list);
+ MPLIST_DO (plist, MPLIST_NEXT (box_prop_list))
+ {
+ box = MPLIST_VAL (plist);
+ if (prop->width == box->width
+ && prop->color_top == box->color_top
+ && prop->color_bottom == box->color_bottom
+ && prop->color_left == box->color_left
+ && prop->color_right == box->color_right
+ && prop->inner_hmargin == box->inner_hmargin
+ && prop->inner_vmargin == box->inner_vmargin
+ && prop->outer_hmargin == box->inner_hmargin
+ && prop->inner_vmargin == box->inner_vmargin)
+ return box;
+ }
+ MSTRUCT_MALLOC (box, MERROR_FACE);
+ *box = *prop;
+ mplist_push (plist, Mt, box);
+ return box;
+}
+
+/** From FRAME->realized_face_list, find a realized face based on
+ FACE. */